当前位置:朝夕网 » 数码科技 » 每天三分钟搞定linux shell脚本24 后台模式运行

每天三分钟搞定linux shell脚本24 后台模式运行

当运行脚本的时候在最后加上符号&,则对应的脚本在后台运行。txt文件会不断增加内容,但是脚本以后台运行不会在终端占用。这个时候如果输入exit,不会提示有后台进程在运行,而且后台进程也会退出。当用nohup并使用后台模式运行之后,即使退出终

当运行脚本的时候在最后加上符号&,则对应的脚本在后台运行。建立脚本为,

#!/bin/bash
item=1
while [ $item -lt 3 ]
do
    sleep 1
    date >> 1.txt
done

输入./test.sh &运行

运行后1.txt文件会不断增加内容,但是脚本以后台运行不会在终端占用。运行结果为:

[1] 7872

输入jobs可以看到这个后台进程:

[1]+ 运行中 ./test.sh &

这个时候如果输入exit,不会提示有后台进程在运行永久使用简单游脚本,而且后台进程也会退出。因为终端会话退出的时候会给这个后台进程发送一个SIGHUP信号。如果想要终端退出之后永久使用简单游脚本,进程不退出,可以让进程捕获SIGHUP信号。当然还有另一个方法,使用nohup指令运行脚本,比如输入:

nohup ./bg.sh &

当用nohup并使用后台模式运行之后,即使退出终端,进程也不会收到SIGHUP信号。并且nohup会自动把标准输出和标准错误重定向到nohup.out的文件中。

一个运行的进程或者暂停的进程都是一个作业,使用jobs命令可以查看当前的作业状态。输入:

jobs -l (-l是为了显示出pid)

我当前的输出为:

[1]- 24392 运行中 nohup ./bg.sh &
[2]+ 27652 停止  vi bg.sh

(上面的作业2是输入ctrl+z后暂停的进程)

其中,+号被当作是默认作业,每个作业的前面有自己的序号。如果后续操作不加序号,那么就被当做是在操作默认作业。比如使用fg指令前台运行作业,就是把27652这个进程前台运行,如果输入fg 1,那么就是操作作业1了。带-号的表示下一个默认作业。

输入bg 1把1号作业后台运行,输入fg 2把2号作业前台运行。

本文到此结束,希望对大家有所帮助!

免责声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,多谢。朝夕网 » 每天三分钟搞定linux shell脚本24 后台模式运行