当前位置:首页 > 技术分享 > 正文内容

在linux后台运行脚本的方法和命令 不中断的在后台运行

admin2年前 (2022-09-13)技术分享2662

后台运行脚本

  1. 执行脚本test.sh:./test.sh

  2. 中断脚本test.sh:ctrl+c

  3. 在1的基础上将运行中的test.sh,切换到后台并暂停:ctrl+z

  4. 执行ctrl+z后,test.sh在后台是暂停状态(stopped),使用命令:bg number让其在后台开始运行(“number”是使用jobs命令查到的 [ ]中的数字,不是pid)

  1. 直接在后台运行脚本test.sh:./test.sh &

  2. 查看当前shell环境中已启动的任务情况:jobs

  3. 将test.sh切换到前台运行:fg %number("number"为使用jobs命令查看到的 [ ] 中的数字,不是pid)

  4. 中断后台运行的test.sh脚本:先fg %number切换到前台,再ctrl+c;或是直接kill %number

以上两种在后台运行test.sh的方法,当遇到退出当前shell终端时,后台运行的test.sh也就结束了。这是因为以上两种方法使得test.sh在后台运行时,运行test.sh进程的父进程是当前shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。所以要想退出当前shell终端时test.sh继续运行,则需要使用nohup忽略hangup信号。


  1. 不中断的在后台运行test.sh:nohup ./test.sh &(test.sh的打印信息会输出到当前目录下的nohup.out中)

  2. 使用jobs可看到test.sh处于running状态

  3. 使用ps -ef |grep test.sh可查看到正在运行的test.sh脚本进程

  4. 退出当前shell终端,再重新打开,使用jobs看不到正在运行的test.sh,但使用ps -ef可以看到

在后台不中断的运行test.sh,可以使用nohup忽略hangup信号,或者使用setsid将其父进程改为init进程(进程号为1)


  1. 不中断的在后台运行test.sh另一个命令:setsid ./test.sh &

  2. 使用ps -ef |grep test.sh可看到test.sh进程的父进程id为1

测试脚本

#!/bin/bash

int=1
while(( $int<=100 ))
do
    echo $int
    let "int++"
    sleep 1
done


扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/418.html

分享给朋友:

相关文章

节假日api 负载均衡升级 增加阿里云服务器

2024-8-19 vip服务器遭受攻击 现已经临时更换服务器以下是服务器的情况可根据自己的需求进行选择1.tool.bitefu.net 整合服务器到 新的阿里云服务器(配置更高),旧服务器已不再续费2.vip.bitefu.n...

安装Windows 10X 教你如何安装Win10X正式版 及下载地址

安装Windows 10X 教你如何安装Win10X正式版 及下载地址

安装Windows 10X 教你如何安装Win10X正式版:Windows 10X是Windows 10操作系统的新版本,主要针对双屏电脑。由于即将运行Windows 10X的双屏电脑(例如即将面世的Surface Neo)的开发遇到挫折,...

2021可用的百度网盘高速下载方法分享

2021可用的百度网盘高速下载方法分享

最新可用方法https://blog.bitefu.net/post/163.html方法很简单就是利用网盘直链下载助手【网盘直链下载助手】是一款免费开源获取网盘文件真实下载地址的油猴脚本,基于PCSAPI,支持Windows,Mac,Li...

PHP和Redis实现在高并发下的抢购及秒杀功能

抢购、秒杀是平常很常见的场景,面试的时候面试官也经常会问到,比如问你淘宝中的抢购秒杀是怎么实现的等等。抢购、秒杀实现很简单,但是有些问题需要解决,主要针对两个问题:一、高并发对数据库产生的压力二、竞争状态下如何解决库存的正确减少("...

Nginx服务崩溃自动重启脚本(监控进程服务并自动重启进程服务)脚本

有一台服务器运行着Ngin最近突然有一次崩溃,导致使用方当天无法访问网页端,然后我不得不登录服务器,检查各项服务,发现nginx崩溃了,于是重启Nginx,问题解决。后来为了防止Nginx再发生这种情况给运维带来的运维成本,于是写了一个脚本...

用CMD命令查询域名的DNS解析记录:A,NS,MX,CNAME,TXT

1、查询域名的A记录nslookup -qt=A bitefu.net当然查询A记录你直接用ping命令来ping域名也可以获得A记录。2、查询域名的NS记录nslookup -qt=NS bitefu.net3、查询域名的MX记录nslo...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。