如何将进程脱离于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
- $