记一次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.
相关文章:

封装,继承,多态
一、封装: 封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(我们称之为类)。被封装的对象通常被称为抽象数据类型。 封装的意义: 封装的意义在于保护或者防止代码(数据…

java将一个数转成36进制的数_编程实现将一个N进制数转换成M进制数。
python: 手写算法版: def conversion_num(num, src, dest): rtn # 1、校验源和目标是否相同 if src dest: rtn num # 2、转成10进制# if src ! 10: num_str str(num) num_str num_str[::-1] exe_num 0 dec_num 0 for num_char in num_str: # 十六进制处理 i…

iOS之Storyboard导航大揭秘(1)
本文使用的软件版本: IOS:6.1 XCode:4.6 Storyboard(故事板)是XCode4.2才开始支持的,为了使设计View更容易。尽管用以前的nib(xib)拖拖拽拽也没问题,不过却需要 在各种文…

nginx的gzip压缩功能
我们在开发网站的时候,应该要考虑到pv,因为pv比较大可能会造成服务器带宽不够用,进而导致用户体验变差。 这个时候我们就可以考虑用nginx的gzip功能。 在nginx中开启gzip压缩功能很简单,之需要在nginx的配置文件nginx.conf中配置以…

C语言的单链表逆序和指定范围逆序
文章目录前言逆序指定范围逆序源码实现前言 关于链表的逆置,是考察对链表指针的理解。知道了如何不实用额外空间,同时使用O(n)复杂度对链表进行逆序之后将会对链表有好理解。 同时关于如何在指定范围内对链表逆置同样可以进一步加深理解 逆序 基本过程…

mysql udf 性能_适当的mysql udf
问题不在于参数的类型,而是在调用str_ucwords_init时它是NULL(因为在检索任何行之前调用了str_ucwords_init).要使str_ucwords与字段一起使用,您必须通过在_init函数中将initid-> maybe_null设置为1并在str_ucwords中将* null_value设置为1(并且结果为NULL,尽管这可能不是必…

让Windows7运行速度更快的BIOS优化设置教程
和以前使用WindowsXP一样,很多用户都在设法提高windows7的系统运行速速,比较常见的方法大多是对系统服务进行优化,去掉一些可有可无的系统服务,还有就是优化资源管理器菜单等。除此之外,还有一些“不常见的偏方”&…

开源 免费 java CMS - FreeCMS1.2-功能说明-网上调查
2019独角兽企业重金招聘Python工程师标准>>> 下载地址:http://code.google.com/p/freecms/ 网上调查 从FreeCMS 1.2 开始支持 Admin和站点管理员可以管理站点下所有网上调查,普通用户只可管理自己添加的网上调查。 1. 网上调查管理 从左…

Python 之 杂谈(迭代器iter)、偏函数
1、 l [1,2,3,b,5,6] def func():return l.pop() x iter(func,b) print(x.__next__()) print(x.__next__()) print(x.__next__())执行结果: 遇到“b”就停下 2、偏函数 from functools import partial def add(x,y):return xy func partial(add,1)#将1固定传给x…

C语言的单链表创建:头插法/尾插法
文章目录前言链表头插法链表尾插法源码实现前言 接下来一段时间,将对数据结构进行复习,总的来说数据结构自大学之后忘记得有点吓人,为了防止脑容量本就小得脑袋更小,必须得持续性得温故了。 链表数据结构得提出 是为了弥补数组上…

java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式
java相关:详解Spring加载Properties配置文件的四种方式发布于 2020-4-29|复制链接摘记: 一、通过 context:property-placeholder 标签实现配置文件加载1、用法示例: 在spring.xml配置文件中添加标签..一、通过 context:property-placeholder 标签实现配置…

objective-c abort() 与 exit() 函数的区别
exit()函数 调用exit会让用户感觉程序崩溃了,不会有按Home键返回时的平滑过渡和动画效果;另外,使用exit可能会丢失数据,因为调用exit并不会调用-applicationWillTerminate:方法和UIApplicationDelegate方法; abort() a…

用户、组的管理常用到的命令介绍
在LINUX系统管理中,我们经常添加删除修改用户和组的信息,所以我们来学习下创建删除修改用户和组 下面我们就来简单的说下什么是组、什么是用户的概念? 用户: 其实简单的理解就是文件或者目录创建的一种标识。 组: 组简…

react生命周期函数
在react中,生命周期函数指的是组件在加载前,加载后,以及组件更新数据和组件销毁时触发的一系列方法。通常分为以下几类: 组件加载的时候触发的函数:constructor 、componentWillMount、 render 、componentDidMount 组…

C语言的单链表求交点
单链表求交点,问题如下: 使用o(1)的空间复杂度,求两个链表相交的时候的交点,这个思想就类似于使用o(1)的空间复杂度和o(n)的时间复杂度来求链表的第k个节点。 过程如下: 获取两个链表的长度将较长的链表移动和短链表…

jquery中如何以逗号分割字符串_百度知道
jquery中如何以逗号分割字符串_百度知道javascript本身就是带split方法的定义和用法split() 方法用于把一个字符串分割成字符串数组。语法stringObject.split(separator,howmany)参数 描述separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。…

mysql 前台启动_从Windows命令行启动MySQL
可以从命令行手动启动MySQL服务器。可以在任何版本的Windows中实现。要想从命令行启动mysqld服务器,你应当启动控制台窗口(或“DOS window”)并输入命令:C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld根据系统中MySQL安装位置…

设置datagridview的数据源为(DATASET)SQL查寻结果
private void button5_Click(object sender, EventArgs e)02 {03 if (MessageBox.Show("确认删除该行吗?", "删除", MessageBoxButtons.YesNo, MessageBoxIcon.Question) DialogResult.Yes )04 {05 SqlConnection conn new SqlConnection();0…

vim中文手册
http://vimcdoc.sourceforge.net/doc/help.html转载于:https://www.cnblogs.com/answercard/p/10125611.html

C语言单链表求环,并返回环的起始节点
若链表中存在环,找出其中的环所在的节点,否则,返回NULL 在没有C set容器的优势前提下,我们对这样的环型的寻找以及定位可以利用快慢指针来实现。 有环的存在,类似与操场跑圈,必然存在快慢之分。有了快慢&a…

CSS3无前缀脚本prefixfree.js与Animatable使用介绍
要求 必备知识 本文要求基本了解 JAVASCRIPT 和 和 CSS3 基本知识。 运行环境 桌面端:IE9 ,Opera 10,火狐3.5 ,Safari 4和Chrome浏览器;移动端:移动Safari,Android浏览器,Chrome浏览器和Opera Mobile。 演示地址 演示…

mysql的优化之table_open_cache 篇_mysql性能优化之table_open_cache
表现:数据库查询效率慢,show processlist 发现比较多的查询正在opening table。进一步确认,执行以下语句:mysql> show global status like open%tables%;------------------------| Variable_name | Value |----------------…

AIX系统日志学习笔记之一
AIX系统上线之后,难免会出现错误,为了应对错误,aix提供了很多处理错误的方法和日志记录机制,为修复故障和系统提供方便。 Errdemon是aix的一个守护进程,该进程会实时检查/dev/drror设备文件,查看是否有新的…

C语言的单链表分割
已知链表头指针head与数值x,将所有小于x的节点放在大于或等于x 的节点前,且保持这些节点的原来的相对位置。 这个过程有点类似于快速排序,寻找一个阈值,比该阈值小的放左边,比该阈值大的放右边。只是由数组遍历变为来…

java面试时候算法题多吗_java程序员面试中最容易被问到的18个算法题(附答案!)...
作者:cpp软件架构狮链接:https://www.toutiao.com/i6618515311836529156/(点击阅读原文前去围观)算法是比较复杂又基础的学科,每个学编程的人都会学习大量的算法。而根据统计,以下这18个问题是面试中最容易遇到的,本文…

Ubantu Mark
说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方法。 一、Ubuntu中软件安装方法 1、APT方式 (1)普…

Linux挂载Windows共享目录
手工挂载: mount -t cifs -o usernameXXX,passwordXXX //IP/共享目录 /挂载目录 自动挂载: 在etc/fstab加入 //IP/共享目录 /挂载目录 cifs defaults,auto,usernameXXX,passwordXXX 0 0 重启转载于:https://blog.51cto.com/kenzhuang/1149033

搭建私有npm私库(使用verdaccio)
一、为什么要搭建npm私库 原因:1)公司内部开发的私有包,统一管理,方便开发和使用;2)安全性,由于公司内部开发的模块和一些内容并不希望其他无关人员能够看到,但是又希望内部能方便使用ÿ…

C语言的有序单链表合并
已知两个已排序链表头节点指针headA与headB,将这两个链表合并,合并后仍为 有序的,返回合并后的头节点。 主要步骤如下: 创建一个临时的头节点,头节点每次指向headA 或者 headB较小的节点当headA->data 比headB-&g…

我的世界java版双海底神殿种子_我的世界海底神殿种子2021
游戏我的世界中,2021年的海底神殿地图中有五种类型的种子可以使用,建议在找海底神殿时使用夜视药水。那么2021年在MC中最新的海底神殿种子分别是Seed:-1005362104,Seed:-1436927780,Seed:-10053…