Feature, of a sort. If you are using a login shell, and if the huponexit shell option is enabled, then all jobs are sent a SIGHUP signal when the shell is exited. cp does not handle this signal, so the kernel applies the signal's default action, which is to terminate the process.
You have a few options:
- Turn off huponexit: shopt -u huponexit. The process may still exit if it ever tries to write to the terminal after it's been closed, depending on how it handles write errors. (Note that twiddling this option only affects that one shell. You'll need to add it to a shell startup script — or find and delete the corresponding command that's turning the option on — to have it apply to all shells subsequently started.)
- Use nohup to run the command instead. This wrapper ignores SIGHUP, letting the underlying command run unaffected. Standard output streams are redirected into a file.
- Use screen. This starts a completely new terminal session. You can detach to this session and reattach to it at a later time, as you please.
SIGHUP信号处理技巧
本文探讨了在使用带有huponexit选项的登录shell时如何处理SIGHUP信号的问题。文章提供了几种解决方法:关闭huponexit选项、使用nohup命令运行进程或将进程置于screen会话中。
6012

被折叠的 条评论
为什么被折叠?



