![Unix 断开会话后将停止后台运行进程](https://linux22.com/image/524661/Unix%20%E6%96%AD%E5%BC%80%E4%BC%9A%E8%AF%9D%E5%90%8E%E5%B0%86%E5%81%9C%E6%AD%A2%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8C%E8%BF%9B%E7%A8%8B.png)
假设我在后台运行一些命令:
./my_script.sh > /dev/null &
然后我立即关闭了putty(这相当于断开当前会话,对吧?)。
后台进程会完成吗?请指教,谢谢。
答案1
当您退出交互式 bash 登录 shell 时,它会向所有子进程发送 SIGHUP,除非 shell 选项huponexit
设置为关闭。
当大多数用户空间进程收到 SIGHUP 时,它们就会退出。
您还可以在命令前加上前缀,nohup
使其忽略 SIGHUP。此外,您还可以disown
使用内部 bash 函数来实现。
答案2
如果你希望后台任务持续存在,可以考虑使用 screen
要创建或重新连接到名为“myprocess”的屏幕会话,该会话将在会话间持续存在:
- 屏幕-DR myprocess
列出所有屏幕:
- 屏幕-ls
答案3
是的,应该。显然我的回答太短了。