/usr/bin/nohup /usr/bin/php index.php cli/video >/dev/null 2>&1 & /usr/bin/nohup /usr/bin/php index.php cli/video >/home/log/test.log 2>&1 & #nohup:不挂断地运行命令 #末尾的&:在后台运行
/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,也就是把一些消息内容抛弃不要
&的意思是在后台运行, 什么意思呢? 意思是说, 当你在执行 ./a.out & 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。 但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。
nohup的意思是忽略SIGHUP信号, 所以当运行nohup ./a.out的时候, 关闭shell, 那么a.out进程还是存在的(对SIGHUP信号免疫)。 但是, 要注意, 如果你直接在shell中用Ctrl C, 那么, a.out进程也是会消失的(因为对SIGINT信号不免疫)
所以, &和nohup没有半毛钱的关系, 要让进程真正不受shell中Ctrl C和shell关闭的影响, 那该怎么办呢? 那就用nohua ./a.out &吧, 两全其美。
2>&1则是表示把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件test.log里面,所以最后的结果是标准错误和标准输出都导入文件test.log里面了。
访客评论