CentOS 后台任务的运行-关闭-查看命令

1.前言

有时候,需要将一些命令,放到后台运行,比如一些需要持续运行的命令、脚本,像检测攻击脚本之类的。
这就是后台任务功能。一般后台任务,在用户退出登录后,会被系统自动关闭,如果想不关闭,应该怎么做呢?且看下文详解。

演示用的脚本:

1
2
3
4
5
6
7
8
9
10
[yan@xsy study]$ cat test.sh     # 这是演示脚本,没有意义,只是演示用
#!/usr/bin/env bash

while true
do

echo "hello" > /dev/null
sleep 10

done

相关命令:&、ctrl+z、ctrl+c、jobs、fg、bg、nohup命令

2.&将任务放到后台运行

使用 & 符号

1
2
3
[yan@xsy study]$ ./test.sh &    # 将任务放到后台运行,返回了进程ID号
[1] 25931
[yan@xsy study]$

3.jobs 命令查看后台任务

1
2
3
[yan@xsy study]$ jobs
[1]+ Running ./test.sh &
[yan@xsy study]$

4.暂停/继续/停止任务

4.1.暂停任务

使用 ctrl + z 可以将正在运行的任务放到后台,并且置于暂停状态:

1
2
3
4
[yan@xsy study]$ ./test.sh 
^Z
[1]+ Stopped ./test.sh
[yan@xsy study]$

4.2.继续任务

使用 bg 命令将后台任务继续运行:

1
2
3
4
5
6
7
[yan@xsy study]$ jobs    # 查看暂停的任务
[1]+ Stopped ./test.sh
[yan@xsy study]$ bg %1 # 继续运行任务
[1]+ ./test.sh &
[yan@xsy study]$ jobs # 查看任务状态
[1]+ Running ./test.sh &
[yan@xsy study]$

4.3.停止任务

停止任务可以使用 kill 命令,也可以使用 ctrl + c

  • kill
    方法一:通过 jobs 命令查看job号(假设为 num),然后执行 kill %num :
    1
    2
    3
    4
    5
    6
    [yan@xsy study]$ jobs
    [1]+ Running ./test.sh &
    [yan@xsy study]$ kill %1 # 停止任务
    [yan@xsy study]$ jobs
    [1]+ Terminated ./test.sh
    [yan@xsy study]$

方法二:通过 ps 命令查看 job 的进程号(PID,假设为 pid),然后执行 kill pid :

1
2
3
4
5
6
7
[yan@xsy study]$ ps -aux |grep test.sh
yan 27396 0.0 0.1 9512 1316 pts/0 S 14:52 0:00 bash ./test.sh
yan 27460 0.0 0.0 9040 672 pts/0 R+ 14:53 0:00 grep --color=auto test.sh
[yan@xsy study]$ kill 27396 # 停止任务
[yan@xsy study]$ jobs
[1]+ Terminated ./test.sh
[yan@xsy study]$

  • ctrl + c
    1
    2
    3
    [yan@xsy study]$ ./test.sh  # ctrl + c 停止任务
    ^C
    [yan@xsy study]$

5.将后台任务调到前台运行

使用 fg 命令可以将后台任务,调到前台运行

1
2
3
4
[yan@xsy study]$ ./test.sh &
[1] 27656
[yan@xsy study]$ fg %1
./test.sh

6.设置任务持续在后台运行

上面使用 & 符号将任务放到后台运行,有一个问题是,当用户关闭终端后,任务也会被关闭。
这时候需要结合 nohup 命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭终端后,在另一个终端 jobs 命令已经无法看到后台跑得程序了,此时利用 ps 查看任务进程信息。

1
2
3
4
5
6
7
8
9
10
11
[yan@xsy study]$ nohup ./test.sh &    # 任务后台运行,关闭终端也继续运行
[1] 28301
[yan@xsy study]$ nohup: ignoring input and appending output to 'nohup.out'

[yan@xsy study]$

# 关闭终端后,重新连接,查看进程信息
[yan@xsy ~]$ ps -aux |grep test.sh
yan 28301 0.0 0.1 9512 1316 pts/0 S 15:05 0:00 bash ./test.sh
yan 28316 0.0 0.0 9040 672 pts/1 R+ 15:05 0:00 grep --color=auto test.sh
[yan@xsy ~]$

The End!

文章目录
  1. 1.前言
  2. 2.&将任务放到后台运行
  3. 3.jobs 命令查看后台任务
  4. 4.暂停/继续/停止任务
    1. 4.1.暂停任务
    2. 4.2.继续任务
    3. 4.3.停止任务
  5. 5.将后台任务调到前台运行
  6. 6.设置任务持续在后台运行