Linux下,把前台程序放到后台运行

平常在Linux的命令行中,运行一个服务或一个长时间处理的脚本。下班的时候,需要关机,但我们又不想让程序停止,我们可以通过下面命令把程序放到后台运行:

1
2
$ ctrl+z
$ bg

其中ctrl+z是将一个前台正在执行的命令放到后台,并处于暂停状态,不可执行。bg是将一个后台暂停的命令,在后台继续执行。程序的运行状态如下:

1
2
3
4
5
6
7
8
9
10
11
wangzhilong@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 &。可以将程序放在后台运行,而且自己的账户退出时,程序还会继续执行。