本文关于处理子进程退出状态码的内容主体来自于<Pro Perl>的第21章. 子进程退出状态码 每个子进程在退出时,操作系统都会保留它们的退出状态码,并在内核维护的进程表中保留子进程项.对于进程的退出状态码,只有在父进程读走之后或者收走(reap)之后才会被清除.注意这里的一个词语"收走(reap)",这是一个Unix操作系统的进程术语,可以理解为对死了的进程进行收尸,收走之后称为reaped.如果父进程没有去读走或者收走子进程的退出状态码,这个子进程就会成为一个僵尸进程(…
程序退出状态码 前言 在本篇文章当中主要给大家介绍一个shell的小知识--状态码.这是当我们的程序退出的时候,子进程会将自己程序的退出码传递给父进程,有时候我们可以利用这一操作做一些进程退出之后的事情,比如当程序执行失败或者被某个信号杀死我们就可以了解到,然后做出对应的措施. 状态码简介 上图是一个zsh的截图,当我们执行命令asdsad之后,因为没有这个命令,所以zsh(类似于bash的一种shell),输出没有找到这个命令,但是我们发现图中箭头️由绿色变成红色,表示程序不是正常退出.现在有…
shell中的退出状态码最大只有255,如果超过这个值,就会进行取余运算,即如果执行如下命令: exit exitCode 如果exitCode大于255,那么实际的状态码为exitCode % 256.举个例子,如果exitCode = 300,那么实际的状态码就是44…
Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码.对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用$?变量.它的值会变成由shell所执行的最后一条命令的退出状态码: [root@host1 test]# date 2017年 07月 19日 星期三 :: CST [root@host1 test]# echo $? 按照惯例,一个成功结束的命令的退出状态码是0.如果一个命令结束时有错误,退出状态码就是一个正数值(1-255): [root@host1 test]# q…
命令成功结束 一般性未知错误 不适合的shell命令 命令不可执行 没找到命令 无效的退出参数 +x 与Linux信号x相关的严重错误 通过Ctrl+C终止的命令 正常范围之外的退出状态码…
状态码 描述 0 命令成功结束 1 一般性未知错误 2 不适合的shell 命令 123 命令不可执行 127 没找到命令 128 无效退出参数 128+x 与linux信号x相关的严重错误 130 通过ctrl+C终止的命令 255 正常范围之内的退出状态码…
shell中运行的每个命令都使用退出状态码(exit status)来告诉shell它完成了处理.退出状态码是一个0~255之间的整数值,在命令结束时由命令传回shell. 1 .查看退出状态码 Linux提供了$?专属变量保存上一个执行的命令的退出状态码.你可以在你运行一个命令之后查看(echo $?). 几个典型的退出状态码及其意义: 0----------------命令运行成功 1----------------通知未知错误 2----------------误用shell命令 126-…
僵尸进程 当一个子进程先于父进程结束运行时,它与其父进程之间的关联还会保持到父进程也正常地结束运行,或者父进程调用了wait才告终止. 子进程退出时,内核将子进程置为僵尸状态,这个进程称为僵尸进程,它只保留最小的一些内核数据结构,以便父进程查询子进程的退出状态. 进程表中代表子进程的数据项是不会立刻释放的,虽然不再活跃了,可子进程还停留在系统里,因为它的退出码还需要保存起来以备父进程中后续的wait调用使用.它将称为一个“僵进程”. 如何避免僵尸进程 调用wait或者waitpid函数查询子进程…
exit命令一般用于结束一个脚本,就像C语言的exit一样.它也能返回一个值给父进程.每一个命令都能返回一个退出状态(有时也看做返回状态).一个命令执行成功返回0,一个执行不成功的命令则返回一个非零值,此值通常可以被解释成一个对应的错误值.除了一些例外的情况,一个行为端庄的UNIX命令,程序或是软件包执行成功能返回0的作为退出码.同样的,在脚本里的函数和脚本自身都会返回一个退出状态码.在脚本或函数里被执行的最后一个命令将决定退出状态码.在一个脚本里,exit nnn 命令将会返回shell一个n…
linux 提供了一个专门的变量$?来保存上个已执行命令的状态码 linux 的错误状态退出状态码没有什么标准可遵循,但有一些参考 状态码 描述 0 命令成功结束 1 一般性未知错误 2 不适合的shell 命令 123 命令不可执行 127 没找到命令 128 无效退出参数 128+x 与linux信号x相关的严重错误 130 通过ctrl+C终止的命令 255 正常范围之内的退出状态码…
1. 输出重定向 最基本的重定向是将命令的输出发送到一个文件中.在bash shell中用大于号(>) ,格式如下:command > inputfile.例如:将date命令的输出内容,保存到指定的输出文件中. 如果文件已存在,重定向操作符会用新的文件数据覆盖已有文件.这种情况下可以用双大于号(>>) 来追加数据.如下图所示: 2. 输入重定向 输入重定向和输出重定向正好相反.输入重定向是将文件的内容重定向到命令,而非将命令的输出重定向到文件. 输入重定向符号是小于号(<)…
inux提供$?特殊变量来保存最后一条命令执行结束的退出状态.执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值. 正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令执行有错. 该命令可以用于检查命令是否正确执行,比如在解压包的时候,检查解压包是否成功十分有效. 自定义退出状态码,可以在脚本中定义自己的退出状态代码,然后使用echo $?检查. 退出状态码最高是255,一般自定义的代码值为0~255,如果超出255,则返回该数值被256除了之后的余数. 退出状态…
目录: 前言 如何创建一个脚本 脚本调试 变量相关 变量的命令规则 bash中变量的种类 本地变量 环境变量 只读和位置变量 位置变量 查询变量 进程的退出状态与状态码 前言 在linux管理中,shell脚本很是重要,它可以帮助我们完成很多繁琐的工作,专注于更重要的事情上来,脚本的学习也是我们学习linux中所要遇到的比较困难的部分,因为它需要对vim,正则,逻辑,程序化语言有一定的熟悉,shell编程是过程式,解释执行的.它包括各种系统指令的组合,数据存储(变量,数组).表达式.语句. 在s…
bat脚本中常用%errorlevel%表达上一条命令的返回值,即命令执行状态码.也称命令退出码 一般上一条命令的执行结果返回的值只有两种,0和非0 (如常见的1,2,4,5,9009等等),0一般会被视为成功,非0为失败或者异常 对于9009,在cmd中经常会发生输入的命令错误,或者不存在的命令,这时就会返回9009这种状态码, 1.对于%errorlevel%变量,一般都是与if结合使用较多,如下: dir qq5201351.txt if %errorlevel% ==0 (del /q/…
Linux 使用了$? 来保存上个执行的命令的退出状态码. 0                命令成功结束 1                通用未知错误 2                误用shell命令 126            命令不可执行 127            没找到命令 128            无效退出参数 128+x        Linux 信号x的严重错误 130            Linux 信号2 的严重错误,即命令通过SIGINT(Ctrl+C)终止…
19:22:01 2014-08-27 引言: 以前对wait waitpid 以及exit这几个函数只是大致上了解,但是看REDIS的AOF和RDB 2种持久化时 均要处理子进程运行完成退出和父进程需要做的什么事情,所以特定看了UNIX环境编程和LINUX系统编程这2本书 重新梳理下整个要点. 内容: 一般而言: 如果程序类似于下面的情况: if((pid=fork())==0) { dochildtthing(); exit(0); } else if(pid>0) { dofathertt…
参考<Linux/Unix系统编程手册>26.1.5,对于系统调用waitid() #include <sys/wait.h> int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); 若在option中设置WNOHANG位,与那么该系统调用就是非阻塞的,也就是说会立刻返回而不是等待子进程的状态发生变化. 如果子进程的状态(正在运行or正常退出or被信号终止or被信号停止)发生变化,则会把状态具体信息保…
问题描述: CentOS启动的时候报如下错误:“配置服务器有错/usr/libexec/gconf-sanity-check-2的退出状态为256” 问题原因: 在装hadoop的时候误删了/tmp文件或者改变/tmp权限导致的. 解决方案: 1.在报错的界面按住 Ctrl + Alt + F2 进入虚拟终端,查看是否有/tmp目录,没有则创建.2.然后修改/tmp的权限为777,输入命令 chmod 777 /tmp3.重启,输入命令 init 6…
命令替换:bash7步扩展的之一 嵌套  这里没什么意义 退出状态可以参与逻辑判断 表达式 算数表达式和条件表达式,逻辑表达式 查看passwd命令比,避免用户捕获输入密码的接口 这种方式就可以直接输入密码, 或者在 god 后面加0 标准输入 &> 表示将所有的输出都传到那里 包括 1, 2正确错误输出…
/** 题目:hdu6006 Engineer Assignment 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6006 题意:已知n个工程,每个需要某些领域的专家.有m个工程师,每个人擅长一些领域. m<=10 一个工程师只能参加一个工程.一个工程可以多个工程师参加. 如果参加某个工程的工程师他们擅长的领域覆盖了该工程需要的领域.那么该工程可以执行. 问最多可以执行多少个工程. 思路: 定义dp[i][s]表示前i个工程状态为s可以执行的最大工程…
一.退出状态 系统每执行一个命令,都会返回一个退出状态,若返回退出状态为0,表示命令执行成功, 若返回退出状态不为0,表示命令执行有错误. echo  $? 可以打印出退出状态. 例如:ls echo $? 状态值 含义 0 命令执行成功,没有错误 1-125 运行失败,脚本命令.系统命令错误或参数传递错误 126 有该命令,但无法执行 127 没有该命令 >128 命令被系统强制结束 二.测试test或[] 测试命令用于判断表达式的真假.测试条件为真,返回值0:测试条件为假,返回值不为0. 这…
Shell $?获取函数返回值或者上一个命令的退出状态 来自:互联网 时间:2021-01-12 阅读:2 $? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1,这和C语言的 main() 函数是类似的. 不过,也有一些命令返回其他值,表示不同类型的错误. 1) $? 获取上一个命令的退出状态 编写下面的代码,并保存为 test.sh: #!/bin/…
退出状态和逻辑运算符的组合 Shell 逻辑运算符 举栗 命令的退出状态(exit statu)是指执行完Linux命令或shell函数后,该命令或函数返回给调用它的程序的一个比较小的整数值.if 语句的判断条件,从本质上讲,判断的就是命令的退出状态. 按照惯例来说,退出状态为 0 表示"成功":也就是说,程序执行完成并且没有遇到任何问题.除 0 以外的其它任何退出状态都为"失败".但也会有例外,比如 diff 命令用来比较两个文件的不同,对于"没有差别&…
我们的一个web项目,由于新上城市增多,导致访问量增大,DB压力增大,作为提供接口的业务方,最近被下游反馈大量请求"502". 502,bad gateway,一般都是upstream(这里就是php)出错,对于php,造成502的原因常见的就是脚本执行超过timeout设置时间,或者timeout设置过大,导致php进程长时间不能被释放,没有空闲worker进程来接客. 我们的项目就是php执行时间设置过短导致的,对于这种情况,可以先适当增大php的执行时间,先保证清除502,优化的…
完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅.HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0.你应只把状态码发送给支持 HTTP 1.1的客户端,支持协议版本可以通过调用request.getRequestProtocol来检查. 本部分余下的内容会详细地介绍 HTTP 1.1中的状…
MAC地址 英文MAC Address 英文全称: Media Access Control Address 别称:硬件位址 用途:定义网络设备位置 表示:十六进制数,6 Byte 特点:产品出产后MAC地址就固定了 用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位).其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位…
我们经常会遇到404.500.302等提示,它们究竟是什么意思呢?除了这几个常见的状态码外,还有哪些我们没有遇到过的但有可能出现的状态码呢?网站的http状态对于网站维护人员来说是相当重要的,当网站出现问题的时候,我们首先要诊断一下网站的http状态,从而进一步确认哪里出现的问题,下面IT百科就和大家分享一下一些HTTP状态码知识. 完整的HTTP 1.1规范说明书来自于RFC 2616,HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持HTTP 1.0.你应只把状态码发送给支持HTT…
1**:请求收到,继续处理 2**:操作成功收到,分析.接受 3**:完成此请求必须进一步处理 4**:请求包含一个错误语法或不能完成 5**:服务器执行一个完全有效请求失败 100——客户必须继续发出请求 101——客户要求服务器根据请求转换HTTP协议版本 200——交易成功 201——提示知道新文件的URL 202——接受和处理.但处理未完成 203——返回信息不确定或不完整 204——请求收到,但返回信息为空 205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件 206——服…
HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码.有些 App 端接口与 HTML 接口用的是同一个,所以做移动端开发也有必要了解一下HTTP状态码. 我们在开发中常接触的HTTP状态码可能就那么几个,比如200.302.404.500等.那除了这些常见的还有那些呢?分别又表示什么意思? 先来大致总结一下: 状态码 大致含义 1开头 主要是信息提示. 2开头 主要是请求成功. 3开头 主要是重定向. 4开头 主要是请求错误. 5.6开头 主要是…
一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求. HTTP 1.1则支持持久连接Persistent Connection, 并且默认使用persistent  connection. 在同一个tcp的连接…