如何将进程脱离于shell运行?
Posted 王万林 Ben
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将进程脱离于shell运行?相关的知识,希望对你有一定的参考价值。
问题
如何将进程脱离于shell运行?
分析
在shell中运行的进程,当shell退出时这些进程会收到SIGHUP信号。如何让进程免于因shell退出产生的SIGHUP信号影响呢?
解决
执行命令时
1. 执行命令加上nohup
$ nohup <command> &
这样command执行会对SIGHUP免疫,当terminal断开也不会影响到command的执行。
2. 执行命令加上setsid
$ setsid <command>
3. 加上disown
$ <command> & disown
4. 在screen里执行命令
$ screen
然后在screen里执行命令。即使terminal断开,screen会话还在。
与这个类似的,还有其它terminal multiplexer,如tmux。
执行命令后(将正在运行的进程)
将进程放在后台运行,然后使用disown命令
~ ⌚ 22:32:14
$ sleep 3600
^Z
[1] + 1737893 suspended sleep 3600
~ ⌚ 22:32:17
$ bg
[1] + 1737893 continued sleep 3600
~ ⌚ 22:32:18
$ jobs
[1] + running sleep 3600
~ ⌚ 22:32:23
$ disown %1
~ ⌚ 22:32:24
$ jobs
~ ⌚ 22:32:31
$
以上是关于如何将进程脱离于shell运行?的主要内容,如果未能解决你的问题,请参考以下文章