最新消息:其实接手服务器,最最最重要的还是要看下数据库、文件备份情况!!!非常重要!!!

nohup实现进程在后台可靠运行

basic shang 2849浏览 0评论

说明:
    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,但神奇的是该程序一下就运行完成退出了。。。。。后面再运行,更快退出。
    估计是这东西抓取内容,抓取不到新的就自动退出。前面刚开始运行,内容比较多需要比较长的时间,后面没有新的内容就自动退出了。。。。

转载请注明:酷喃|coolnull| » nohup实现进程在后台可靠运行

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址