【Shell】脚本后台运行

1.脚本运行的相关用法和说明

用法 说明
sh test.sh & 将脚本放在后台运行(常用方法)
Crtl + c 停止执行当前任务或脚本
Crtl + z 暂停执行当前任务或脚本
bg 把当前任务或脚本放到后台执行,此处可以理解为background
fg 把当前脚本或任务放到前台执行,如果有多个任务,可以使用fg加任务编号调出对应的脚本任务,
如fg 2,是指调出第二个脚本任务,fg可以理解为fontground
jobs 查看当前正在执行的脚本或任务
kill 关闭执行的脚本任务,即以kill % 任务编号的形式关闭脚本,此处的任务编号,可以通过jobs得到

2.实战演练

现有测试脚本test.sh与demo.sh:

[qinys@localhost 20200313]$ cat test.sh 
#/bin/bash
i=10
while ((i>0))
do
	echo "$i" >> log.txt
	sleep 1
	((i--))
done

[qinys@localhost 20200313]$ cat demo.sh 
#/bin/bash
i=40
while ((i>0))
do
	echo "$i" >> demo.txt
	sleep 1
	((i--))
done

(1)演示案例一:&与ctrl+c

[qinys@localhost 20200313]$ sh test.sh & # 后台运行脚本
[1] 47930
[qinys@localhost 20200313]$ fg # 执行fg将脚本放到前台运行
sh test.sh
^C  # 按Ctrl+c 停止执行脚本

(2)演示案例二:fg与jobs、ctrl+z

[qinys@localhost 20200313]$ sh test.sh &
[1] 47982
[qinys@localhost 20200313]$ sh demo.sh &
[2] 47988
[qinys@localhost 20200313]$ jobs # 查看正在运行的脚本任务
[1]-  Running                 sh test.sh &
[2]+  Running                 sh demo.sh &
[qinys@localhost 20200313]$ fg 2 # 使用fg加jobs输出中任务编号调出对应编号的脚本到前台运行
sh demo.sh
^Z   # Ctrl + z 临时暂停执行脚本,临时暂停的脚本如果需要回复执行,则先使用jobs查看挂起的任务编号,然后使用【fg 任务编号】即可继续执行
[2]+  Stopped                 sh demo.sh

(3)演示案例三:kill

[qinys@localhost 20200313]$ sh test.sh &
[1] 48231
[qinys@localhost 20200313]$ sh demo.sh &
[2] 48239
[qinys@localhost 20200313]$ jobs
[1]-  Running                 sh test.sh &
[2]+  Running                 sh demo.sh &
[qinys@localhost 20200313]$ kill %2 # 杀死任务
[qinys@localhost 20200313]$ jobs
[1]-  Running                 sh test.sh &
[2]+  Terminated              sh demo.sh
原文地址:https://www.cnblogs.com/OliverQin/p/12485439.html