在Linux下,我们有时候希望命令或者程序能够在后台执行,从而能够同时处理其他事情。
下面将介绍几种将程序切换至后台执行的方式,每一种的行为和表现均有所差异。
后台运行
Ctrl+z
如果一个命令已经在terminal中运行了,通过Ctrl+z
,我们可以将程序切换至后台暂停挂起
。
➜ ~ netease-cloud-music
^Z
[1] + 8636 suspended netease-cloud-music
然后使用bg
命令,就可以让后台的程序继续执行:
➜ ~ bg
[1] + 8636 continued netease-cloud-music
通过jobs
命令,可以查看到后台有哪些程序在运行。
➜ ~ jobs
[1] + running netease-cloud-music
如果想让程序继续回到前台执行,使用fg
命令即可。
➜ ~ fg
[1] + 8636 running netease-cloud-music
command &
通过在命令后加&方式命令 &
启动程序,我们可以直接将程序在后台运行。
如何彻底切换至后台
上述几个方式,虽然可以将程序从terminal中切换至后台,但实际上程序还是和当前terminal关联
,如果将terminal关闭,程序也会跟着终止。如果想要程序脱离当前terminal运行,可以通过一下两种方式:
disown
通过运行disown
命令,可以将程序job和从terminal jobs中剔除,这时候即使关闭terminal,程序也会继续运行。
这时候无论是jobs命令、fg命令都不会再生效。
nohup
我们也可以在程序运行时候,通过nohup command &
,直接运行程序,即使shell终端退出,程序也会继续执行。
参考资料
https://www.tecmint.com/run-linux-command-process-in-background-detach-process/