一文学会Linux后台运行指令

1 Linux 后台运行指令

1.1 nohup (No Hangups)

nohup 命令表示"No Hangups",告诉Linux这个任务不要挂起,一直运行结束为止,即使当前用户登出.也就是说,即使用户登出服务器,或者关闭了终端,这个指令还是能够一直运行到结束为止.
使用方法如下:

(venv) [root@iZm5eak0zgdsr4c0pe7vikZ ClassifyWeb]# nohup python run.py &

注意:末尾的&表示将这条命令放到后台执行,不占用终端(所以,我们可以继续在终端做其他事情).

一次完整的演示:

我们ssh登录到服务器上去,执行下面的命令:
(venv) [root@iZm5eak0zgdsr4c0pe7vikZ ClassifyWeb]# nohup python run.py &
[1] 21335

产生的输出保存到文件nohup.out中
(venv) [root@iZm5eak0zgdsr4c0pe7vikZ ClassifyWeb]# nohup: ignoring input and appending output to ‘nohup.out’ 

查看后台执行的命令
(venv) [root@iZm5eak0zgdsr4c0pe7vikZ ClassifyWeb]# jobs
[1]+  Running                 nohup python run.py &

注意:使用exit来退出终端,而不是直接关掉终端窗口.因为,后者会导致nohup提交的任务被系统结束.
(venv) [root@iZm5eak0zgdsr4c0pe7vikZ ClassifyWeb]# exit
logout
Connection to 120.27.12.83 closed.

1.2 &

用在一个命令的最后,可以把这个命令放到后台执行

(proenv) hu@hu-D520MT-K:~$ ls -al &
[1] 19470

1.3 ctrl + z, bg

可以将一个正在前台执行的命令放到后台.
ctrl + z 将指令放到后台,并暂停.
bg将指令放到后台继续运行

比如查找一个文件,很耗时,忘了将其放入后台运行,怎么办呢?很简单,先ctrl+z将其暂停,然后bg使其后台继续运行.

# find / -ctime -1 > /tmp/changed-file-list.txt

# [CTRL-Z]
[1]+  Stopped                 find / -ctime -1 > /tmp/changed-file-list.txt
(proenv) hu@hu-D520MT-K:~$ bg
[1]+ find / -ctime -1 > /tmp/changed-file-list.txt &
(proenv) hu@hu-D520MT-K:~$ jobs
[1]+  Running                 find / -ctime -1 > /tmp/changed-file-list.txt &

1.4 fg

将后台中的命令调至前台继续运行.
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid).

# jobs
[1]   Running                 bash download-file.sh &
[2]-  Running                 evolution &
[3]+  Done                    nautilus .

# fg %1

1.5 jobs

查看当前有多少在后台运行的命令

# jobs
[1]   Running                 bash download-file.sh &
[2]-  Running                 evolution &
[3]+  Done                    nautilus .

1.6 kill

杀掉一个后台运行的指令

# kill %2

猜你喜欢

转载自blog.csdn.net/weixin_35576881/article/details/89511484