关于nohup和&

假设 cli.php 文件内容如下

<?php

for(;;){
 echo time().PHP_EOL;
 sleep(1);
}

通过几个启动示例说明

# Ctrl + C 无法停止程序(忽略 SIGINT 信号)
# 退出控制台则程序停止(不忽略 SIGHUP 信号不)
# 通过 kill pid 也无法停止程序,需要通过 kill -9 pid
# & 为后台运行的意思,因为注意执行后会输出进程号到控制台
php cli.php &

# Ctrl + C 可以停止程序(不忽略 SIGINT 信号)
# 退出控制台后程序依然运行(忽略 SIGHUP 信号不)
# nohup 即 no hang hup,即不挂断的运行,即忽略 SIGHUP 信号
# 注意 nohup 没有后台运行的意思,因为执行后不输出进程号
nohup php cli.php

# 组合使用 同时忽略 SIGHUP SIGINT 信号
nohup php cli.php &

# 配合数据流重定向
# 其中 > cli.log 2>&1 的写法为将标准错误输出和标准输出都重定向到 cli.log
# 数据流重定向的详解见上篇文章
nohup php cli.php > cli.log 2>&1 & 

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(0)
witersen的头像witersen
上一篇 2022年7月13日 上午12:21
下一篇 2022年8月6日 上午10:06

相关推荐

发表回复

登录后才能评论