记一次shell脚本推后台stopped的问题
我们知道linux 下shell可以被分为交互式脚本和非交互式脚本。
交互式脚本即 输入命令之后shell会等待你的输入,当你输入之后命令会被立即提交从而执行。这个时候我们常见的终端bash,以及login提示等都是交互式命令。
非交互式脚本即shell解释器不需要等待终端的输入,自己去执行脚本中的命令,当遇到脚本中的EOF则结束。
交互式脚本因为需要等待终端命令的输入,与终端进行交互,当将交互式脚本推后台;此时后台程序视图读取终端,此时终端驱动程序将检测这种情况,并向后台作业发送一个特定信号SIGTTIN,该信号会停止此后台程序,并向用户发送通知。最终推后台的进程会出现stopped
状态。
交互式脚本的退后台使用./camSvr < /dev/null &
使用null作为输入设备,此时脚本可以正常执行。
异常场景:
编写服务器程序:calc_osd_memory.sh
,使用top抓取指定进程内存信息,并进行分析记录日志。./calc_osd_memory.sh
正常执行,但是当执行./calc_osd_memory.sh &
推后台出现stopped
进程被终止。
因为脚本中存在交互式命令top,使用方式为/usr/bin/top -n 1 -c -u ceph
,此时脚本中主要获取信息的外界命令为top,经过分析出现此时stopped
是通过其他程序或者脚本在非交互模式下调用top就会出现,解决方式是去掉top的交互模式,使用批处理模式如下:
增加-b
参数:/usr/bin/top -n 1 -c -b -u ceph
参数描述:
Starts top in ‘Batch’ mode, which could be useful for sending output from top to other programs or to a file.
In this mode, top will not accept input and runs until the iterations limit you’ve set with the ‘-n’ command-line option or until killed.
记一次shell脚本推后台stopped的问题相关推荐
- Shell 脚本中后台启动服务 与 nohup
Shell 脚本中后台启动服务& 与 nohup 最近工作中遇到在shell脚本中启动服务并让服务在后台运行,同时不影响shell脚本向下执行的场景.进行了一些调查,实践,借鉴一些网上的资源进 ...
- Shell脚本:后台运行
1. 名词解释 名词(中文) 名词(英文) 解释 会话 Session 每打开一次终端(本地或远程)登录Linux,都会生成一个新的会话:除此之外,程序中也可以调用函数setsid创建一个新的会话:脚 ...
- linux下开机自动启动,定时运行shell脚本
Shell 脚本与window/dos 下的批处理相似,也就是用各类命令预先放入一个文件中,方便一次性执行的的一个程序文件,主要是方便管理员进行设置或者管理用. 一.shell脚本 在Linux下,我 ...
- shell脚本实现后台长ping
情景描述:怀疑有设备存在偶发性的网络抖动导致的丢包,需要从服务器对设备尽心ping测,由于时间跨度长需要实现后台运行. 分析实现: 1.为了便于跟踪,需要输入ping测结果并追加时间信息,原以为使用语 ...
- Android脱离USB执行Shell脚本的方法
前言: 安卓自动化测试过程中,经常需要测试机脱离 Usb执行相关 shell 脚本,之前在网上看了很多的例子,没有真正可以直接断开 USB执行 shell 脚本的实例,所以一直也没太搞明白,最近有时间 ...
- shell脚本一键同时推送代码至github和gitee
自己写的东西,要同时推送多个git地址,解决办法如下: 1.先要初始化你的git 进入自己的项目目录,然后执行 git init cd /app/code/go-study ...
- linux打开pythonshall,linux系统shell脚本后台运行python程序
python开发的同学们应该都知道怎么样去启动一个python应用,但是一旦我们把python应用部署到linux服务器上该如何启动呢? 方式①:就是使用进程管理工具,比如supervisor.想了解 ...
- linux后台执行shell脚本
目的:Linux后台执行脚本并监控 编写shell脚本 vi /tmp/ceshi.sh #!/bin/sh while [ true ]; dosrync -avzP src dest /bin/s ...
- rocketmq python消息堆积_编写shell脚本监控rocketMQ消息堆积并推送钉钉
1.利用mqadmin命令,编写shell监控脚本(宿主机上需要安装RocketMQ客户端) !/bin/bash GroupInfo=sh /app/alibaba-rocketmq/bin/mqa ...
最新文章
- 你对象怎么找的?日本网友:国家用AI给分配的
- java出现令牌语法错误_java – 令牌“;”,“{”在此令牌之后的语法错误
- VTK修炼之道52:图形基本操作进阶_多分辨率策略(模型抽取的三种方法)
- Java魔法类:Unsafe应用解析
- PHP安全,防止远程非法提交
- tensorflow之XORerr1例题
- 未来10年,将被人工智能/机器学习/大数据颠覆的三大行业
- 尚硅谷 谷粒学院 毕业设计 在线教育 部署文档
- java语言jsp技术_JavaWeb:JSP技术基础
- 风暴数码论坛教程-JAVA环境配置
- NLP中Tokenizers总结(BPE、WordPiece、Unigram和SentencePiece)
- 生活中,如何学会放下
- 5.MySQL高级语句,你给我学!
- 智能家居出货量将达5.4亿台,全屋智能线下渠道是推广主力
- matlab 求解高次方程,Matlab求解多元高次方程组
- mysql数据库:varchar类型可以存储多少个汉字,多少个数字
- pandas实现分类汇总--小计,总计
- (0105)iOS开发之iOS13 暗黑模式(Dark Mode)适配
- 网站服务器费用是什么,建网站费用都包含什么
- ChatGPT教程之 06 ChatGPT 和 DevOps 用例概述
热门文章
- 160630、五句话搞定JavaScript作用域
- CUDA编程遇到的问题
- 关于Page翻页效果--Page View Controller
- C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- 爱不释手(Typingfaster)1.78beta,重大升级,欢迎试用,期待反馈。
- Winograd,GEMM算法综述(CNN中高效卷积实现)(下)
- 单片机c语言实现表格数据调用,哪位师傅知道51单片机怎样编写子程序?C语言的。在主程序里调...
- 三层架构中ajax,基于mvc三层架构和ajax技术实现最简单的文件上传
- 交换排序图解_图解简单选择排序
- span 可编辑 控制数量_CSS如何限制显示的文本字数