平常在Linux的命令行中,运行一个服务或一个长时间处理的脚本。下班的时候,需要关机,但我们又不想让程序停止,我们可以通过下面命令把程序放到后台运行:1
2$ ctrl+z
$ bg
其中ctrl+z
是将一个前台正在执行的命令放到后台,并处于暂停状态,不可执行。bg
是将一个后台暂停的命令,在后台继续执行。程序的运行状态如下:1
2
3
4
5
6
7
8
9
10
11wangzhilong@in17-164^:~/tmp$ python test_flask.py
* Running on http://0.0.0.0:8786/ (Press CTRL+C to quit)
^Z
[1]+ Stopped python test_flask.py
wangzhilong@in17-164^:~/tmp$ jobs
[1]+ Stopped python test_flask.py
wangzhilong@in17-164^:~/tmp$ bg
[1]+ python test_flask.py &
wangzhilong@in17-164^:~/tmp$ jobs
[1]+ Running python test_flask.py &
一些相关命令的说明
jobs
查看当前在后台运行的命令。jobs -l
可以列出命令的PID,jobs的状态可以是running, stopped, Terminated。bg
将一个后台暂停的命令,变成后台执行。如果后台有多个暂停的命令,通过bg %num
选择需要执行的暂停命令,num是暂停命令的序号。如果不指定序号,则执行最后一个暂停的命令,也就是num最大的。fg
将后台中的命令,调到前台执行,如果后台有多个命令,通过bg %num
选择需要调到前台的命令。&
加在一个命令的最后,可以把这个命令放到后台执行。nohup
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
我们平时在个人账户下运行程序时,使用命令nohup cmd &
。可以将程序放在后台运行,而且自己的账户退出时,程序还会继续执行。