“Linux后台运行进程”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) (→总结) |
||
第45行: | 第45行: | ||
* 但是关闭 session 时会发送 SIGHUP 信号,所以程序是免疫的 | * 但是关闭 session 时会发送 SIGHUP 信号,所以程序是免疫的 | ||
+ | 所以一般要使用 nohup 和 & 配合来启动程序,同时免疫 SIGINT 和 SIGHUP 信号 |
2023年2月2日 (四) 04:31的版本
示例
root@raspberrypi:/opt/chfs-linux-arm-2.0# cat start.sh
nohup ./chfs --path="/mnt/data" > out.log 2>&1 &
参考
https://www.bilibili.com/video/BV1se4y1F7Ld
如果不加末尾的 &
如果使用 nohup 命令,在末尾不加 &,当使用 Ctrl + C 退出后,服务就关闭、停掉了。
如果不使用 nohup 命令,但在末尾加 &
如果不使用 nohup 命令,直接执行目标指令,在末尾加 &,使用 Ctrl + C 退出后检查,服务还在;
但是当当前用户退出终端之后再重新连接上服务器之后再看,服务已经关闭了。
总结
nohup 和末尾的 & 要一起用。
& 作用解释
- 使用 & 后台运行程序,结果会输出到终端
- 使用 Ctrl + C 会发送 SIGINT 信号,因为使用了 & 运行程序,所以免疫 SIGINT 信号,程序不受影响、继续运行
- 但当关闭 session 时,会发出 SIGHUP 信号,程序并不免疫,所以程序就会关闭
nohup 的作用解释
- 使用 nohup 运行程序:结果默认会输出到 nohup.out
- 使用 Ctrl + C 发送 SIGINT 信号,程序不免疫,所以会关闭
- 但是关闭 session 时会发送 SIGHUP 信号,所以程序是免疫的
所以一般要使用 nohup 和 & 配合来启动程序,同时免疫 SIGINT 和 SIGHUP 信号