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

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

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

输入 ./test.sh & 运行

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

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

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

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

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

我当前的输出为:

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

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

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

原文及更新: https://neucrack.com/p/91

直接在/etc/rc.local(/etc/rc.d/rc.local)文件中添加即可

上面这脚本实际上在使用时出现了问题, /home/neucrack/software/ss/start_ss_local.sh 这个命令始终没有被执行,原因是 /home/neucrack/software/ss/start_kcptun_client.sh 中的命令阻塞了进程,导致后面一句始终没有执行,可以将他们分别放到后台执行就行了,如何在后台执行可以看文章最后一部分

也可以自己手动在rc*.d中建立软连接

桌面系统搜索 启动 ,打开启动管理器 添加删除即可

一般有以下几种方法:

1)在输入命令的最前面加上 nohup 命令

如 nohup your_command & 这样命令在你退出后仍然会在后台执行

2) setsid 命令

setsid your_command 该命令的结果是使你所运行的命令的父进程为init,所以只有关机该进程才会停止

3) (your_command &)

就是用括号将你的命令括起来,这样做也是使命令的父进程为init

4) disown

当你在命令行下输入 your_command &后命令就在后台执行了,然后执行jobs命令,该命令会列出当前正在后台执行的命令。例如输入命令“top&”

然后执行"jobs"

输出结果是

[1] + Suspended (tty output) top

注意行开头方括号内的数字,该数字叫做jobspec,是给当前后台运行的job的编号。这是你只要在命令行下输入"disown -h 1" 后台运行的top命令就不会受到hangup信号的影响了。

5)使用 screen 命令

在命令行下输入screen命令就开启了一个screen进程,它就好像是一个全新的命令运行环境,在该环境中你可以像在正常的terminal下那样执行

命令,但是这个screen是不受其父进程的hangup信号的影响的,既然screen不受其父进程影响,当你意外掉线或者退出系统时,在screen

中仍在执行的命令仍然会继续执行。关于screen命令的使用方法你可以再去查阅相关资料。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8923169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存