1. 把程序放到后台运行
在前台运行的程序会一直占用终端命令行,例如你在前台解压的时候必须等着,期间干不了别的事(除非另开一个终端)。
但是如果把进程放到后台,可以把终端空出来,你可以执行其它的操作。另一个好处是,放到后台的程序不会被ctrl+C(误触)给终止。
1.1 一开始就把进程放到后台运行
直接在命令行末尾加上 &:
<命令行> &
例如 python train.py &
可以让train.py脚本一开始就在后台运行。这样运行后终端不会被占用,你仍然可以可以干别的事
1.2 把已经在前台运行进程放到后台
如果命令已经在前台运行了,你想把它放到后台:
1. 先键入Ctrl+z 选项把该进程暂停,放到后台(此时命令行空出来你可以干别的事);
2. 键入jobs -l
查看进程的工作号(不是进程号PID),比如说工作号是2
3. 键入 bg %2
即可把该进程放到后台运行(bg=background)。如果直接键入bg则是把所有进程放到后台。
如果又想把后台程序放回前台,键入fg %2
即可.(fg=foreground)
如果直接想杀掉后台进程,键入kill %2
,或kill <PID号>
也可
但是,即使把程序放到后台运行,一旦关闭终端,或者远程终端断网,都会直接终止所有进程。
对于一些需要长时间运行的程序,或者网络不稳定的情况下,我们希望在关闭终端下程序也照常运行,此时需要nohup命令:
2. 使用nohup让程序后台不挂断地运行
该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭终端后,在另一个终端键入jobs已经无法看到后台的程序了,此时利用ps
或top
可以查看到。
nohup常常配合后台标记 &使用:
nohup <命令> &
例如nohup python train.py &
可以让train.py脚本一开始就在后台运行,且不会因为关闭终端而被打断。该进程产生的所有输出都会到当前目录下的一个叫nohup.out的文件中。