首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进程在终止shell脚本后不会终止

是因为shell脚本是通过创建子进程来执行的。当shell脚本执行完毕后,子进程会终止,但是父进程(也就是当前的shell环境)会继续运行。

这种行为可以通过在shell脚本中使用特殊的命令来改变。例如,可以使用exec命令来替换当前的shell进程,使得脚本执行完毕后直接退出。另外,还可以使用nohup命令将脚本放入后台执行,这样即使终止了当前的shell会话,脚本仍然会继续运行。

进程在终止shell脚本后不会终止的优势在于可以在脚本中执行一些长时间运行的任务,而不需要依赖于当前的shell会话。这样可以提高脚本的灵活性和可靠性。

在云计算领域,这种特性可以应用于自动化部署、定时任务、后台服务等场景。例如,可以编写一个shell脚本来定时备份数据库,并使用nohup命令将其放入后台执行,即使终止了当前的shell会话,备份任务仍然会按计划执行。

腾讯云提供了一系列与云计算相关的产品,例如云服务器、云函数、容器服务等,可以满足不同场景下的需求。具体产品介绍和相关链接如下:

  1. 云服务器(ECS):提供弹性计算能力,支持多种操作系统和应用场景。了解更多:腾讯云云服务器
  2. 云函数(SCF):无服务器计算服务,支持事件驱动的函数计算。了解更多:腾讯云云函数
  3. 容器服务(TKE):基于Kubernetes的容器管理服务,提供高可用、弹性伸缩的容器集群。了解更多:腾讯云容器服务

通过使用这些腾讯云的产品,可以轻松搭建和管理云计算环境,实现进程在终止shell脚本后不会终止的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Linux】Linux进程控制 --- 进程创建、终止、等待、替换、shell派生子进程的理解…

但是当调用_exit系统接口的时候,我们看到hello Linux是不会被打印出来的,所以_exit是不会刷新缓冲区的。 5. 得出结论:exit终止进程,会主动刷新缓冲区。..._exit终止进程不会刷新缓冲区。...status的位图结构中的不同的区域代表了不同的进程退出信息的意义,我们只研究status整型的低16个比特位,其中的前7比特位代表子进程终止信号,8比特位代表进程退出码。...可以利用位运算符来得到status的前7比特位和8个比特位,以此来获取到子进程退出信息,是异常终止呢?还是正常终止,结果出错,或结果正确呢?...非阻塞等待有一个好处就是,不会像阻塞式等待一样,父进程什么都做不了,而是轮询期间,父进程还可以做其他的事情。

14.8K30
  • EasyNVRWindows重启时提示“进程意外终止”问题解析

    Windows重启EasyNVR服务出现进程意外终止问题 最近有用户使用EasyNVR时,出现“Windows无法启动EasyNVR_Service服务(位于本地计算机上)。...错误1067:进程意外终止。”的问题,寻求我们的帮助。 ? 针对此问题,我们进行问题的检索分析。具体如下: 分析问题 重启软件出现了问题,大概率是软件内部运行出现问题,或者安装出问题。...因此Easy系列软件安装服务脚本默认都是使用管理员权限进行软件安装。所以,我们测试重新卸载软件服务再重新安装。...停止软件服务,直接cmd命令行运行软件可以执行文件,发现软件的内部报错就是导致我们无法成功安装,重启服务的原因,大概率是端口被占用,通过调整端口或者关闭对应端口进程成功解决软件服务安装重启问题。

    1K20

    腾讯云Ubuntu下定时监测MySQL进程终止自动重启的方法

    运行环境:腾讯云 Ubuntu Linux 14.04 [1489070815394_7268_1489070816359.jpeg] 编写Shell脚本 首先,我们要编写一个shell脚本脚本主要执行的逻辑如下...: 显示mysqld进程状态,如果判断进程未在运行,那么输出日志到文件,然后启动mysql服务,如果进程在运行,那么不执行任何操作,可以选择性输出监测结果。...可能大家对于shell脚本比较陌生,在这里推荐官方的shell脚本文档来参考一下 Ubuntu Shell 编程基础 shell脚本的后缀为sh,在任何位置新建一个脚本文件,我选择 /etc/mysql...添加定时任务 好了,脚本可以顺利执行了,那么我们就需要定时调用一下这个脚本来运行了,我们需要用到 cron。...16:40:01 CST 2015 mysql running Sun Aug 16 16:51:04 CST 2015 mysql running 结语 这样,我们就实现了五分钟定时检测MySQL进程服务

    2.5K00

    终止一个容器竟然用了 10 秒钟,这不能忍!

    这时又分为两种情况: 应用不处理 SIGTERM - 如果应用没有监听 SIGTERM 信号,或者应用中没有实现处理 SIGTERM 信号的逻辑,应用就不会停止,容器也不会终止。...而 shell 不具备 init 系统的功能,也就不会将操作系统的信号转发到子进程上,这也是容器中的应用没有收到 SIGTERM 信号的常见原因。...要想解决这个问题,就要往脚本中添加信号处理代码,让它捕获到 SIGTERM 信号时就终止进程: #!...使用 tini 应用还需要处理 SIGTERM 吗? 最后一个问题:如果移除 popcorn.sh 中对 SIGTERM 信号的处理逻辑,容器会在我们执行停止命令立即终止吗? 答案是肯定的。... Linux 系统中,PID 1 和其他进程不太一样,准确地说应该是 init 进程和其他进程不一样,它不会执行与接收到的信号相关的默认动作,必须在代码中明确实现捕获处理 SIGTERM 信号的逻辑,

    98020

    《Linux命令行与shell脚本编程大全》第十六章 控制脚本

    停止进程  9    SIGKILL    无条件终止进程 15    SIGTERM   尽可能终止进程 …… 默认情况下,bash shell会忽略收到的任何SIGOUT(3)和SIGTERM(15...shell会将这些信号传给shell脚本程序来处理,而shell脚本的默认行为是忽略这些信号。 可以脚本中加入识别信号的代码,并执行命令来处理信号。...2.暂停进程 进程运行时暂停进程,无需终止它。让程序继续保留在内存中,并能从上次停止的位置继续运行。 有时打开了一个关键的系统文件锁,这就比较危险了。...但是这样可以终止进程的情况下能深入脚本内部一窥究竟。 Ctrl+z 会生成一个SIGTSTP信号,停止shell中运行的任何进程。...anacron不会处理执行时间需求小于一天的脚本 16.6.3 使用新的shell启动脚本 如果每次运行脚本的时候都能够启动一个新的bash shell,将会非常的方便。

    3K61

    Linux命令(54)——trap命令(builtin)

    1.简介 trap命令是Shell内建命令,用于指定在接收到信号将要采取的动作。常见的用途是脚本程序被中断时完成清理工作。...在有些情况下,我们不希望自己的Shell脚本在运行时刻被中断,比如说我们写的Shell脚本设为某一用户的默认Shell,使这一用户进入系统只能做某一项工作,如数据库备份, 我们不希望用户使用Ctrl+...C发送SIGINT信号来中断Shell脚本的执行,进入到Shell交互模式,做我们不希望做的事情。...SIGQUIT 3 终止进程 和SIGINT类似,通常是Ctrl+/发出。进程收到SIGQUIT信号退出时会产生core文件, 在这个意义上类似于一个程序错误信号。...SIGFPE 8 终止进程,建立CORE文件 发生致命的算术运算错误(Floating-Point Exception)时发出,不仅包括浮点运算错误, 还包括溢出及除数为0等其它所有的算术错误。

    1.9K20

    终止一个容器竟然用了 10 秒钟,这不能忍!

    这时又分为两种情况: 应用不处理 SIGTERM - 如果应用没有监听 SIGTERM 信号,或者应用中没有实现处理 SIGTERM 信号的逻辑,应用就不会停止,容器也不会终止。...而 shell 不具备 init 系统的功能,也就不会将操作系统的信号转发到子进程上,这也是容器中的应用没有收到 SIGTERM 信号的常见原因。...要想解决这个问题,就要往脚本中添加信号处理代码,让它捕获到 SIGTERM 信号时就终止进程: #!...使用 tini 应用还需要处理 SIGTERM 吗? 最后一个问题:如果移除 popcorn.sh 中对 SIGTERM 信号的处理逻辑,容器会在我们执行停止命令立即终止吗? 答案是肯定的。... Linux 系统中,PID 1 和其他进程不太一样,准确地说应该是 init 进程和其他进程不一样,它不会执行与接收到的信号相关的默认动作,必须在代码中明确实现捕获处理 SIGTERM 信号的逻辑,

    93510

    100个Linux命令(7)-进程管理

    从bash是内置命令的角度来考虑,它不会进入子shell,这一点执行bash命令从变量$BASH_SUBSHELL的值为0可以验证出来。...事实也确实如此,shell脚本只会继承父shell的一项属性:父进程所存储的各命令的路径。另外,执行shell脚本有一个动作:命令执行完毕自动退出子shell。...最后需要说明的是,子shell的环境设置不会粘滞到父shell环境,也就是说子shell的变量等不会影响父shell。 还有两种特殊的脚本调用方式:exec和source。...它也不会开启子shell,直接在当前shell中执行调用脚本且执行脚本不退出当前shell,所以脚本会继承当前已有的变量,且脚本执行完毕加载的环境变量会粘滞给当前shell,在当前shell生效。...手动将命令或脚本放入后台运行的方式是命令行加上"&"符号。

    1.7K20

    K8s Pod优雅关闭,没你想象的那么简单!

    如果容器宽限期仍在运行,则 Pod 被 SIGKILL 强行移除,终止完成。...理想情况下,一个容器只有一个进程,但是现实场景下很难做到,比如,我会用一个 shell 脚本去管理和启动 Java 进程,除了 shell 脚本进程之外,还要运行监控、日志收集等子进程,这样一个容器里面就运行了多个进程...系统这样做的大概原因是因为大家设计主进程脚本的时候都不会进行信号的捕获和传递,这会导致容器关闭时,多个子进程无法被正常终止,所以系统使用 SIGKILL 这个不可屏蔽信号,而是为了能够没有任何前提条件的情况下...也就是说如果主进程自身不是服务本身,可能会导致是被强制Kill的,解决的方法也很简单,也就是进程中对收到的信号做个转发,发送到容器中的其他子进程,这样容器中的所有进程停止时,都会收到 SIGTERM...这就是K8s,自身很简单,但是它的低层牵涉了Linux内核、进程、网络、存储等方方面面的知识,但并不会在Kubernetes的文档中交代清楚。可偏偏就是它们,才是容器技术的精髓所在。

    2.4K20

    Linux小课堂之Wait命令

    wait是一个shell命令,它等待给定进程完成,然后返回其退出状态。 Wait命令用于等待特定的进程ID和作业ID并返回其终止状态。...执行大型自动化流程时,我们需要使几个模块等待到上一组模块完成并返回数据管道进入下一个模块的数据,在这种情况下,我们可以使用Wait命令直到完成上一个模块。 Wait命令如何工作?...-wait PID(PID-实用程序要等待终止的命令的进程ID)。-wait JID(JID-作业ID,标识要等待的后台进程,仅适用于当前Shell执行环境中的wait调用)。...当任何进程异常终止时,退出状态将大于128。 当它没有子进程调用并且当前shell知道的所有进程ID都已终止时,Wait命令以0值退出。...'foo.sh'脚本输出的数字介于1到5之间,而bar.sh脚本将调用foo.sh并在后台运行它,但它不会等待foo.sh完成并执行这两个脚本。 Script – foo.sh ?

    2.4K20

    Linux中作业控制命令

    Linux作业 作业(Job)是shell管理的进程(每个job都有一个关联的PID),每个作业会被分配一个线性job ID。...有两种形式的作业: Foreground: 当你终端窗口输入命令,这个命令将会占据终端窗口,直到命令执行完成, 这是一个前台Job Background: 当你命令后面添加& 符号,命令将不会占据终端窗口...nohup:关闭终端也执行 “很多时候,你是通过ssh登录到远程服务器,再执行Shell脚本或命令,如果你退出了终端(终止远程连接),则该进程/命令将被杀死。...如果不确定该作业何时完成,则最好让该作业在后台运行,但是,如果你退出系统,该作业将被Shell停止并终止,当进程收到SIGHUP时,如何使作业在后台运行?...这个时候,我们就要使用nohup命令,让我们长时间运行的Shell脚本或命令我们退出系统依旧能执行(此时一般搭配&后台执行)。 “顾名思义:nohup是用于忽略HUP(挂断)信号的POSIX命令。

    2.4K30

    使用python执行shell脚本 并动态传参 及subprocess的使用详解

    最近工作需求中 有遇到这个情况 web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subprocess...UNIX上,使用shell = True:如果args是一个字符串,则它指定要通过shell执行的命令字符串。...如果args是一个序列,则第一个项目指定命令字符串,并且任何其他项目将被视为附加的shell参数。 可以先创建一个简单的shell脚本 a.sh 1 2 分别代表传进脚本的 第一个和第二个参数 ?...(仅限Windows) Popen对象的一些方法 Popen.poll() 检查子进程是否终止,返回对象的returncode Popen.wait() 等待子进程完成,阻塞。...Popen.kill() 杀死进程 以上这篇使用python执行shell脚本 并动态传参 及subprocess的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考。

    5.5K30

    python fork()多进程

    Python中的大多数函数会之返回一次,因为sys.exit()会终止程序,所以它就不会返回。...例如,一个shell脚本会对找出正在运行的程序中的退出代码感兴趣。父进程不仅可以找出退出代码,还可以找出根据信号,进程是坏掉还是终止。父进程是通过os.wait()或一个类似的调用来得到这些信息的。...进程终止,必须调用wait()函数,否则系统系统资源会被大量的zombie进程消耗掉,最终会使服务器不可用。 操作系统可以非常容易地完成这个工作。...例如,当使用Shell,输入ls,Shell就会调用fork()来产生一个fork的拷贝,新的进程将调用ls。 四、fork()示例 #!...示例中子进程睡眠5秒钟,父进程就开始收割。time.sleep()有一种特殊情况,如果任意一个信号处理程序被调用,睡眠会被立刻终止,而不是继续等待剩余的时间。

    2.1K20

    Python,Shell 和 三个标准文件

    场景 使用 Python 执行 Shell 命令(或者脚本),有两种执行场景: 等待,直到命令执行完毕,一次性获取返回结果,做一些你想做的事情; 命令执行的同时,实时获取命令的持续输出,做一些你想做的事情...标准错误输出文件(stderr) 两个文件对应终端的屏幕,进程从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。...翻译一下: 与进程进行交互:将数据发送到 stdin。从 stdout 和 stderr 文件中读取数据,直到达到文件结尾。等待进程终止。...这里其实是一个同步的过程,进程终止才会返回所读取到的数据(进程终止,文件自然也结尾了),也就是 communicate() 方法直接使命令执行变为了同步,不执行完成就一直阻塞。...如果我们执行 ping zhihu.com 等不会自己终止的命令,这种方式会一直卡死,因为进程一直没有结束,文件也一直不会结尾。 那么类似这种持续输出结果的命令如何执行呢?

    1.4K60

    写个简单的项目自动部署脚本

    # 休眠10s,等待进程终止 sleep 10 #把maven编译打包的最新jar包拷贝到工作目录 cp target/springboot-demo-$1.jar $WORK_DIR #再次检查进程是否终止...: 从远程仓库拉取项目代码;如果已经存在项目目录,则进入目录拉取最新代码 使用mvn命令编译打包,并输出可执行jar到target目录,如果编译失败则退出执行 找出服务进程,并发送kill执行进行终止服务进程...,并且休眠10s,给服务进程足够的时间处理剩余的事情 从项目目录的target文件夹拷贝可执行jar到项目工作目录 再次检查服务进程是否已经终止,如果没有终止则强行终止(理论上10s可以正常终止,休眠时间可按需调整...减少依赖:使用shell脚本可以减少对Jenkins的依赖,特别是需要迁移或者更换持续集成工具时,减少了迁移的复杂性。...学习成本:对于不熟悉shell脚本的团队成员来说,需要花费额外的时间和精力学习shell脚本语法和编写规范。

    29710

    java检测tomcat宕机_Tomcat意外宕机分析

    tomcat启动之后,当前shell进程并没有退出,而是挂住在tail进程,往终端输出日志内容。这种情况下: 1)、如果我先直接关掉ssh窗口,Java进程会退出,服务不可用。...2)、而我如果先 用ctrl-c终止test.sh进程,然后再关闭ssh终端的话,这时Java进程不会退出。服务没有受到影响,仍然可用。...后来通过google了解到: shell非交互模式下对后台进程处理SIGINT信号时设置的是IGNORE。...交互模式与非交互模式对作业控制(job control)默认方式不同: I)交互模式下,因为作业控制的需要,shell不会对后台进程处理SIGINT信号设置为忽略。...II)而非交互模式下,通常是不需要作业控制的,所以作业控制非交互模式下默认也是关闭的(当然也可以脚本里通过选项set -m打开作业控制选项)。

    1.4K10
    领券