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

为什么我不能在bash脚本中使用作业控制?

作业控制是指在 Unix 系统中,通过操作符 & 将一个进程放到后台运行。在 Bash 脚本中,作业控制可能会导致一些问题,例如:

  1. 脚本中的进程可能会与终端设备产生冲突,导致脚本无法正常运行。
  2. 在后台运行的进程可能会占用系统资源,导致系统性能下降。
  3. 在脚本中使用作业控制可能会导致进程管理混乱,难以追踪和调试。

为了避免这些问题,建议在 Bash 脚本中避免使用作业控制。如果需要在后台运行进程,可以使用 nohup 命令或者 screen 工具。

推荐的腾讯云相关产品:

  1. 云服务器:提供高性能、稳定的云服务器,支持多种操作系统和虚拟化技术。
  2. 对象存储:提供可靠的存储服务,支持多种存储类型和访问方式。
  3. 负载均衡:提供可靠的负载均衡服务,支持多种负载均衡算法和协议。
  4. 云数据库:提供可靠的数据库服务,支持多种数据库类型和版本。
  5. 内容分发网络:提供可靠的内容分发服务,支持多种内容分发方式和协议。

相关产品介绍链接地址:

  1. 云服务器
  2. 对象存储
  3. 负载均衡
  4. 云数据库
  5. 内容分发网络
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Tomcat进程意外退出,元凶居然是他...

确定了是由signal引起的之后,的疑惑变成了: 1) 为什么SIGINT (kill -2) 不会让tomcat进程退出?...交互模式与非交互模式对作业控制(job control)默认方式不同 为什么在交互模式下shell不会对后台进程处理SIGINT信号设置为忽略,而非交互模式下会设置为忽略呢?...而非交互模式下,通常是不需要作业控制的,所以作业控制在非交互模式下默认也是关闭的(当然也可以在脚本里通过选项set -m打开作业控制选项)。...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。...如果我们在test.sh里设置开启作业控制的话,就不会让java进程退出了 #!/bin/bash set -m cd /home/admin/tt/tomcat/bin/ .

4K10

Tomcat 进程意外突崩,元凶居然是它...

确定了是由signal引起的之后,的疑惑变成了: 1) 为什么SIGINT (kill -2) 不会让tomcat进程退出?...交互模式与非交互模式对作业控制(job control)默认方式不同 为什么在交互模式下shell不会对后台进程处理SIGINT信号设置为忽略,而非交互模式下会设置为忽略呢?...而非交互模式下,通常是不需要作业控制的,所以作业控制在非交互模式下默认也是关闭的(当然也可以在脚本里通过选项set -m打开作业控制选项)。...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。...如果我们在test.sh里设置开启作业控制的话,就不会让java进程退出了 #!/bin/bash set -m cd /home/admin/tt/tomcat/bin/ .

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

    一些控制脚本的方式:向脚本发送信号、修改脚本优先级,在脚本运行时切换到运行模式  16.1 处理信号 linux利用信号与运行在系统中的进程进行通信。...也可以通过对脚本进行编程,使其在收到特定信号时执行某些命令。从而控制脚本的操作。...16.2.2 运行多个后台作业 同时启动多个后台作业就可以了。 在终端会话中使用后台进程要注意,ps命令的输出中,每一个后台进程都和终端会话(pts/0)终端联系在一起。...带加号+的:当做默认作业(被当成作业控制命令的操作对象) 默认作业完成后,执行下一个作业(带减号-的)。任何时候都只有一个带加号和一个带减号的作业。 还可以这样: kill杀死当前默认作业。...(这个理解不来) 补充第六章的内容: 用户登录bash shell需要运行的启动文件。

    3K61

    linux下命令自动补全总结

    很多命令都会提供一个bash-complete的脚本,在执行该命令时,敲tab可以自动补全参数,会极大提高生产效率。...docker命令自动补全 yum install docker后,会有一个文件: /usr/share/bash-completion/completions/docker ; 显然,该脚本是用于bash...如果指定了选项“-p”或者没有指定任何选项,则把已有的补全方法一种可以重新作为作为输入的格式打印出来。选项“-r”用以删除指定名称的补全方法,指定名称时删除所有的名称的补全方法。...COMP_CWORD:在包含当前光标位置的单词“${COMP_WORDS}”中的下标,这个变量只能在可编程补全的shell函数中使用。...COMP_LINE:当前命令行,这个变量只能在可编程补全的shell函数中使用。

    6.6K50

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

    这种情况下: 1)、如果先直接关掉ssh窗口后,Java进程会退出,服务不可用。 2)、而我如果先 ctrl-c终止test.sh进程,然后再关闭ssh终端的话,这时Java进程不会退出。...交互模式与非交互模式对作业控制(job control)默认方式不同: I)在交互模式下,因为作业控制的需要,shell不会对后台进程处理SIGINT信号设置为忽略。...II)而非交互模式下,通常是不需要作业控制的,所以作业控制在非交互模式下默认也是关闭的(当然也可以在脚本里通过选项set -m打开作业控制选项)。...不开启作业控制的话,脚本里的后台进程可以通过设置忽略SIGINT信号来避免父进程对组中成员的传播,因为对它来说这个信号已经没有意义。...注: 如果把tail 打印的这一行去掉,为什么Java进程也不会退出,猜原因应该是,如果没有tail的话, Java进程就不是他们的子进程了,自然怎么操作都不会受影响。

    1.4K10

    使用 Docker 部署 Jenkins 代理(主从)控制服务器

    [为什么选择 Jenkins 控制器-代理架构? 控制器(主)节点是 Jenkin 的大脑,它是 Jenkins 应用程序运行的地方。...因此,在 Jenkins Controller-Agent 架构中,作业控制器调度并分配给代理。控制器还跟踪从服务器是否在线,检索它们对构建结果的响应,并将构建结果输出到控制台。...这种架构的另一个优点是我们只能在控制器节点上安装最少的工具集,而我们可以在代理节点上安装较重的工具(作业需要)。这使控制器保持轻量级,还允许我们根据应执行它们的代理来组织我们的作业。...我们可以编写一个简单的 bash 脚本来实现这一点。 #!...我们可以使用如下所示的简单 bash 脚本来实现所有这些, #!

    54820

    linux 后台运行进程:& , nohup

    当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨)。...(ps -ef | grep 进程号 或者 kill -9 进程号) nohup 使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。...只有在当前命令行中使用 nohup和& 时,jobs命令才能将它显示出来。如果将他们写到 .sh 脚本中,然后执行脚本,是显示不出来的 比如执行下面这个脚本后,jobs 显示不出来: #!...如果后台中有多个命令,可以bg %jobnumber将选中的命令调出。...思考 问题1-为什么ssh一关闭,程序就不再运行了 元凶:SIGHUP 信号 让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。

    4.5K40

    HAWQ取代传统数仓实践(五)——自动调度工作流(Oozie、Falcon)

    为什么使用Oozie         使用Oozie主要基于以下两点原因: 在Hadoop中执行的任务有时候需要把多个MapReduce作业连接到一起执行,或者需要多个作业并行处理。...从调度的角度看,如果使用crontab的方式调用多个工作流作业,可能需要编写大量的脚本,还要通过脚本控制好各个工作流作业的执行时序问题,不但不好维护,而且监控也不方便。...的环境配置是: oozie:x:506:504:Oozie user:/home/oozie:/bin/bash (2)从Oozie用户到root用户做免密码登录         root提交Oozie...关于oozie调用本地shell脚本可以参考“OOZIE调用shell脚本做mr计算挂死问题分析和解决”。 二、Oozie建立定期ETL工作流 1....参数可以用于指定动作节点和decision节点的配置值、XML属性值和XML元素值,但是不能在节点名称、XML属性名称、XML元素名称和节点的转向元素中使用参数。

    2K60

    OushuDB入门(六)——任务调度篇

    为什么使用Oozie 使用Oozie主要基于以下两点原因: 在Hadoop中执行的任务有时候需要把多个MapReduce作业连接到一起执行,或者需要多个作业并行处理。...从调度的角度看,如果使用crontab的方式调用多个工作流作业,可能需要编写大量的脚本,还要通过脚本控制好各个工作流作业的执行时序问题,不但不好维护,而且监控也不方便。...的环境配置是: oozie:x:506:504:Oozie user:/home/oozie:/bin/bash (2)从Oozie用户到root用户做免密码登录 root提交...关于oozie调用本地shell脚本可以参考“OOZIE调用shell脚本做mr计算挂死问题分析和解决”。 二、Oozie建立定期ETL工作流 1....参数可以用于指定动作节点和decision节点的配置值、XML属性值和XML元素值,但是不能在节点名称、XML属性名称、XML元素名称和节点的转向元素中使用参数。

    73810

    【科研利器】slurm作业调度系统(一)

    /bin/bash #SBATCH -J test # 作业名是 test #SBATCH -p cpu # 提交到 cpu分区 #SBATCH -N...hostname命令 以上的脚本的第一行为 shebang,它指定了这个脚本的解释器为 bash。...在准备好slurm脚本后,使用如下命令就可以将刚才的任务提交上去,这里 sbatch 是提交 SLURM 脚本的命令。 如果工作站有空闲资源,那么的程序将会被放在某一个节点的某 一个核心上运行。...默认的文件名是 slurm-.out,其中 JOBID 是作业号。如果在 SLURM 脚本中使用了 -o 选项,则这些文件会被复制到用户所指定的目录下。...2、编写 SLURM 脚本,设置作业属性(例如占用的资源,最长运行时间)。 3、提交作业脚本,检查任务状态(使用 squeue)。 4、等待运行结束,验收结果。 参考资料:北大超算指导手册

    3.8K21

    如何写出安全的、基本功能完善的Bash脚本

    每个人或多或少总会碰到要使用并且自己完成编写一个最基础的Bash脚本的情况。真实情况是,没有人会说“哇哦,喜欢写这些脚本”。所以这也是为什么很少有人在写的时候专注在这些脚本上。...为什么要写Bash脚本 其实关于Bash脚本最好的解释如下: The opposite of "it's like riding a bike" is "it's like programming in...当有人修改脚本时,保存一个最小的文档(因为两周后,你甚至不记得当初是怎么写的)。 主张在这里记录每个函数。但是一个简短、漂亮的脚本使用这些消息是必需的。...这就是为什么在大多数情况下你不应该为stdout使用颜色。 msg()打印的消息被发送到stderr流并支持特殊的序列,比如颜色。...显然,它不能在缺少Bash的环境中工作,比如alpinellinux。 Further reading 在用Bash或其他更好的语言创建CLI脚本时,有一些通用规则。

    55930

    【科研利器】slurm作业调度系统(五)

    你必须要把它加载到你的个人账户中去,这样软件才能在你自己的账户下成功跑起来。查看自己账户下当前已经加载的所有 module 可用下面的命令。...如果写具体版本的话,服务器会自动添加系统默认的软件版本。...module remove module_name ,等价于 module unload module_name module purge #删除所有已经加载的module 此外,我们也有更加便捷的方法来直接一个...module switch mod1 mod2 # 删除mod1并导入mod2 #注意,有的服务器中是 module swap mod1 mod2 6 在slurm脚本中使用module 前面我们已经说过通过...那我们通过 slurm 脚本提交任务时,会分配到不同的计算节点上,并非我们的个人账户所在的节点。

    1.8K40

    shell脚本专题(01):探秘脚本首行

    做运维的都写过脚本脚本的第一行#!/bin/bash大家都很熟悉,今天就具体讲讲这个第一行: 为什么使用#!...bash和dash的区别(后面的测试基于二者的区别):dash shell只是Bourne shell功能的一个子集, bash shell脚本中的有些功能没法在dash shell中使用,如在脚本中dash...到这里大家肯定云里雾里了,即使之前对shell脚本很清楚的童鞋估计现在也被我绕晕了,这就对了,因为就是这么过来了…… 说回正题,我们先梳理下首行空、/bin/bash、/bin/dash和/bin/sh...)执行脚本; 2.当脚本首行有声明shell时,系统会读取对应的shell; 回到之前的问题:写第一行可以?...答案是写首行声明某些时候不影响脚本执行结果,但是为了规范,建议大家最好养成首行就声明shell的习惯,因为首行 #后面的惊叹号会告诉shell哪个shell来运行脚本,并且声明只能在首行。

    1.2K11

    业界 | 除了R、Python,还有这些重要的数据科学工具

    Bash脚本是计算机科学中最基本的工具,并且数据科学中很大一部分需要编程,因此这项技能至关重要。...DAG(有向无环图) 这基本上只是意味着你可以随时根据需要轻松地设置Python或bash脚本。...与可自定义但不太方便的定时任务(cron job)相比,Airflow能让你在用户友好的GUI中控制调度作业。 Elasticsearch Elasticsearch同样比较小众。...这个有点特别,取决于你是否有搜索/ NLP例。但是,可以告诉你在财富50强公司工作,我们有大量的搜索例,这是我们堆栈中最重要的框架之一。...弥补了OS系统无包管理的缺陷 不能在本地安装Apache Spark的小伙伴。

    1.2K20

    Linux中编写Shell脚本

    Shell脚本编写规范 Shell脚本的开发规范及习惯非常重要,虽然这些规范不是必须要遵守的,但有了好的规范和习惯,可以大大提升开发效率,并能在后期降低对脚本的维护成本。.../bin/sh bash 与 sh 的区别, sh 为 bash的软连接,大多数情况下,脚本使用“#!/bin/bash”和“#!.../bin/bash echo $1 echo ((2+ 当我执行时,在文件名后加3个参数 预定义变量 预定义变量和环境变量相类似,也是在Shell一开始就定义的变量,不同的是,用户只能根据shell...="也可以在[]中作比较使用,但在[]中使用包含""的符号时,需要用反斜线转义,有时转义虽然语法不会报错,但是结果可能不对。...也可以在[[]]中使用包含“-gt”和“-lt”的符号,但是建议使用 比较符号两端也要有空格,[] (()) [[]] 两端都要有空格 逻辑操作符 在[]以及test中使用的比较符号 在(())和[

    7.2K10

    Kettle构建Hadoop ETL实践(七):定期自动执行ETL作业

    这里建立一个内容如下的shell脚本文件regular_etl.sh,调用Kettle的命令行工具kitchen.sh执行此作业,并将控制台的输出或错误重定向到一个文件名中带有当前日期的日志文件中: #...从调度的角度看,如果使用crontab的方式调用多个工作流作业,可能需要编写大量的脚本,还要通过脚本控制好各个工作流作业的执行时序问题,不但不好维护,而且监控也不方便。...script元素包含要执行的脚本文件,这个元素的值可以被参数化。我们在hive-node动作节点中使用script元素指定需要执行的定期装载SQL脚本文件。...参数可以用于指定动作节点和decision节点的配置值、XML属性值和XML元素值,但是不能在节点名称、XML属性名称、XML元素名称和节点的转向元素中使用参数。...当然,对于出现查询出错的情况,这种合并做法的控制粒度较粗,可能在重新启动动作前需要做一些手工清理的工作。

    6.1K54

    业界 | 除了R、Python,还有这些重要的数据科学工具

    Bash脚本是计算机科学中最基本的工具,并且数据科学中很大一部分需要编程,因此这项技能至关重要。 ?...DAG(有向无环图) 这基本上只是意味着你可以随时根据需要轻松地设置Python或bash脚本。...与可自定义但不太方便的定时任务(cron job)相比,Airflow能让你在用户友好的GUI中控制调度作业。 Elasticsearch Elasticsearch同样比较小众。...这个有点特别,取决于你是否有搜索/ NLP例。但是,可以告诉你在财富50强公司工作,我们有大量的搜索例,这是我们堆栈中最重要的框架之一。...弥补了OS系统无包管理的缺陷 不能在本地安装Apache Spark的小伙伴。

    1.2K30

    GitLab平台太单调? 配置Pipeline流水线,装上这个流水线“瀑布灯”!

    工作流程 为什么GitLab使用Pipeline流水线需要另外安装或者激活GitLab Runner呢? 其实GitLab Runner和GitLab基本是相互独立的。...注册Runner 我们这次演示注册Docker版本的Runner,在服务器上部署Runner之前,我们需要在GitLab的Web控制面板上,创建一个Runner实例, 图片 的服务器是腾讯云的轻量应用服务器...例如: build: script: - gem install bundler - bundle install 阶段定义 stage 指定作业执行阶段。...当然,有机会,教大家更详细的书写Pipeline的流水线脚本,让大家像写GitHub Action一样能熟练地书写脚本。 什么? 你还没用过GitHub Action?...改天有机会,也教大家如何进行书写~~ 正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

    2.4K00
    领券