通过SSH连接Centos上shell脚本开启后台自动运行

PHP项目里一个跟民生银行对接的签名系统,是用的一个叫LAJP的中间件通讯,必须先开启这个中间件的服务,才可以正常签名,这里涉及到JDK环境安装,中间件后台服务正常运行。
Centos是通过SSH方式连接。

[root@localhost ~]# yum list java*
[root@localhost ~]# yum install java-1.7*
[root@localhost ~]#  java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
[root@localhost ~]# cd /var/www/html/dkpay_server/sign/lajp-10.05-PHPKit-CMBC
[root@localhost lajp-10.05-PHPKit-CMBC]# chmod +x run-socket.sh
[root@localhost lajp-10.05-PHPKit-CMBC]# ./run-socket.sh

至此服务正常跑起来,签名OK。
但当我把SSH窗口关闭之后,无法正常签名,lajp服务关闭了。
这里涉及到一个linux系统进程的概念。
因为所有进程都得有个父进程。当你ssh到一个服务器上时,打开的shell就是你所有执行命令的父进程。
当你断开ssh连接时,你的命令的父进程就没了。如果处理不当,这些进程就会收到SIGTERM信号,全被干掉了。

于是搜索出答案可以使用nohup 命令 &的命令方式来执行后台运行进程。
但当我执行这个命令的时候:

[root@localhost lajp-10.05-PHPKit-CMBC]# nohup ./run-socket.sh &
[root@localhost lajp-10.05-PHPKit-CMBC]# nohup: ignoring input and appending output to `nohup.out'

搜索结果显示该信息为正常。
https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/index.html
http://stackoverflow.com/questions/24646320/nohupignoring-input-and-appending-output-to-nohup-out

最终的解决方法是:
[root@localhost lajp-10.05-PHPKit-CMBC]# nohup ./run-socket.sh /dev/null &
[root@localhost lajp-10.05-PHPKit-CMBC]# ps aux | grep run-socket
root 16212 0.0 0.0 106072 1400 ? S 09:58 0:00 /bin/sh ./run-socket.sh
root 16351 0.0 0.0 103312 880 pts/0 S+ 10:19 0:00 grep run-socket


本文固定链接:成事博客通过SSH连接Centos上shell脚本开启后台自动运行
喜欢 (0)分享 (0)