系统相关
首页 > 系统相关> > 【Shell】脚本后台运行

【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:

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

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

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

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

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

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

(3)演示案例三:kill

[root@localhost 20200313]# sh test.sh &
[1] 48231
[root@localhost 20200313]# sh demo.sh &
[2] 48239
[root@localhost 20200313]# jobs
[1]-  Running                 sh test.sh &
[2]+  Running                 sh demo.sh &
[root@localhost 20200313]# kill %2 # 杀死任务
[root@localhost 20200313]# jobs
[1]-  Running                 sh test.sh &
[2]+  Terminated              sh demo.sh

标签:脚本,Shell,demo,sh,20200313,后台,root,localhost
来源: https://www.cnblogs.com/OliverQin/p/12485439.html