说明:
Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台:/usr/local/mysql/bin/mysqld_safe –user=mysql &
但是我们很多程序并不象mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup:
该命令的一般形式为:nohup command &。但是我执行同事写的php脚本时nohup /usr/local/php/bin/php /tmp/fetch.php &时,不论我是直接关闭窗口,还是shell中输入exit来退出终端或是logout,该进程都会被关闭。
后来手动执行/usr/local/php/bin/php /tmp/fetch.php发现它运行完成后自己就会退出。。。。根本没有办法一直执行。nohup command &是正确的,下面记录下nohup command &的用法。
实现:
# nohup /usr/local/php/bin/php /tmp/fetch.php & //默认输出在当前目录的nohup.out中 # nohup /usr/local/php/bin/php /tmp/fetch.php > myout.file 2>&1 //输出被重定向到myout.file,默认输出在当前目录的nohup.out中 # jobs //jobs查看任务 # fg %n //关闭后台运行的进程,没了解,先放着
附录:
其实一开始就怀疑是该进程执行完成后就自己退出,但手动执行/usr/local/php/bin/php /tmp/fetch.php,等了会也没有看到进程自动退出。就ctrl+c手动退出了
然后就开始怀疑nohup command &命令的准确性。于是上网谷哥,度娘,找到的都是nohup command &这个命令。只好求助同事。他也是执行/usr/local/php/bin/php /tmp/fetch.php,但神奇的是该程序一下就运行完成退出了。。。。。后面再运行,更快退出。
估计是这东西抓取内容,抓取不到新的就自动退出。前面刚开始运行,内容比较多需要比较长的时间,后面没有新的内容就自动退出了。。。。