IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 信号概念、认识和处理 - Linux C++网络编程(八) -> 正文阅读

[系统运维]信号概念、认识和处理 - Linux C++网络编程(八)

一:信号的基本概念

进程之间的常用通信手段:发送信号,kill ?第二章第二节讲过;

上节课讨论过 SIGHUP

信号 :通知(事情通知),用来通知某个进程发生了某一个事情;

? ? 事情,信号都是突发事件, 信号是异步发生的,信号也被称呼为“软件中断”

信号如何产生:

a)某个进程发送给另外一个进程或者发送给自己;

b)由内核(操作系统)发送给某个进程

? ? b.1)通过在键盘输入命令ctrl+c[中断信号],kill命令

? ? b.2)内存访问异常,除数为0等等,硬件都会检测到并且通知内核;

信号名字,都是以SIG开头,上节课SIGHUP(终端断开信号)

? ? UNIX以及类(类似)UNIX操作系统(linux,freebsd,solaris);支持的信号数量各不相同。10-60多个之间;

信号既有名字,其实也都是一些数字,信号是一些正整数常量;信号就是宏定义(数字,从1开始)

#include <signal.h>(/usr/include/)

gcc

头文件,包含路径:/user/local/include/ ? /usr/include/

库文件,连接路径:/usr/ local/lib/ ? ? ?/usr/lib

sudo find / -name "signal.h" | xargs grep -in "SIGHUP"

二:通过kill命令认识一些信号

kill :kill 进程id ,他的工作是发个信号给进程;

kill能给进程发送多种信号;

ps -eo pid,ppid,sid,tty,pgrp,comm | grep -E 'bash|PID|nginx'

sudo strace -e trace=signal -p 1184

a)如果你单纯的用kill 进程id,那么就是往 进程发送SIGTERM信号(终止信号)

kill -数字 进程id,能发出跟这个数字对应的信号 ?-1 进程id,SIGHUP信号去

b)如果我门用kill -1 进程id,那么就是往进程nginx发送SIGHUP终止信号;同时进程nginx就被终止掉了;

c)kill -2 进程id,发送SIGINT信号;

kill -数字 进程id ,能发送出多种信号;

三:进程的状态

ps -eo pid,ppid,sid,tty,pgrp,comm,stat | grep -E 'bash|PID|nginx'

ps aux | grep -E 'bash|PID|nginx' ? ?//aux所谓BSD风格显示格式;

kill只是发个信号,而不是单纯的杀死的意思。

四:常用的信号列举

kill 命令不同数字所能发出的不同信号

kill的参数

该参数发出的信号

操作系统缺省动作

-1

SIGHUP(连接断开)

终止掉进程(进程没了)

-2

SIGINT(终端中断符,比如ctrl+c

终止掉进程(进程没了)

-3

SIGQUIT(终端退出符,比如ctrl+\

终止掉进程(进程没了)

-9

SIGKILL(终止)

终止掉进程(进程没了)

-18

SIGCONT(使暂停的进程继续)

忽略(进程依旧在运行不受影响)

-19

SIGSTOP(停止),可用SIGCONT继续,但任务被放到了后台

停止进程(不是终止,进程还在

-20

SIGTSTP(终端停止符,比如ctrl+z),但任务被放到了后台,可用SIGCONT继续

停止进程(不是终止,进程还在

进程状态:

状态

含义

D

不可中断的休眠状态(通常是I/O的进程),可以处理信号,有 延迟

R

可执行状态&运行状态(在运行队列里的状态)

S

可中断的休眠状态之中(等待某事件完成),可以处理信号

T

停止或被追踪(被作业控制信号所停止)

Z

僵尸进程

X

死掉的进程

<

高优先级的进程

N

低优先级的进程

L

有些页被锁进内存

s

Session leader(进程的领导者),在它下面有子进程

t

追踪期间被调试器所停止

+

位于前台的进程组

常用信号列举:

信号名

信号含义

SIGHUP(连接断开)

是终端断开信号,如果终端接口检测到一个连接断开,发送此信号到该终端所在的会话首进程(前面讲过),缺省动作会导致所有相关的进程退出(上节课也重点讲了这个信号,xshell断开就有这个信号送过来)

Kill -1 进程号也能发送此信号给进程;

SIGALRM(定时器超时)

一般调用系统函数alarm创建定时器,定时器超时了就会这个信号;

SIGINT(中断)

从键盘上输入ctrl+C(中断键)【比如你进程正跑着循环干一个事】,这一ctrl+C就能打断你干的事,终止进程;

shell会将后台进程对该信号的处理设置为忽略(也就是说该进程若在后台运行则不会收到该信号)

SIGSEGV(无效内存)

内存访问异常,除数为0等,硬件会检测到并通知内核;其实这个SEGV代表段违例(segmentation violation),你有的时候运行一个你编译出来的可执行的c程序,如果内存有问题,执行的时候就会出现这个提示;

SIGIO(异步I/O

通用异步I/O信号,咱们以后学通讯的时候,如果通讯套接口上有数据到达,或发生一些异步错误,内核就会通知我们这个信号;

SIGCHLD(子进程改变)

一个进程终止或者停止时,这个信号会被发送给父进程;(我们想象下nginxworker进程终止时 master进程应该会收到内核发出的针对该信号的通知);

SIGUSR1,SIGUSR2(都是用户定义信号)

用户定义的信号,可用于应用程序,用到再说;

SIGTERM(终止)

一般你通过在命令行上输入kill命令来杀一个进程的时候就会触发这个信号,收到这个信号后,你有机会退出前的处理,实现这种所谓优雅退出的效果;

SIGKILL(终止)

不能被忽略,这是杀死任意进程的可靠方法,不能被进程本身捕捉

SIGSTOP(停止)

不能被忽略,使进程停止运行,可以用SIGCONT继续运行,但进程被放入到了后台

SIGQUIT(终端退出符)

从键盘上按ctrl+\

shell会将后台进程对该信号的处理设置为忽略(也就是说该进程若在后台运行则不会收到该信号)

SIGCONT(使暂停进程继续)

使暂停的进程继续运行

SIGTSTP(终端停止符)

从键盘上按ctrl+z,进程被停止,并被放入后台,可以用SIGCONT继续运行

五:信号处理的相关动作

当某个信号出现时,我们可以按三种方式之一进行处理,我们称之为信号的处理或者与信号相关的动作;

(1)执行系统默认动作 ,绝大多数信号的默认动作是杀死你这个进程;

(2)忽略此信号(但是不包括SIGKILL和SIGSTOP)

kill -9 进程id,是一定能够把这个进程杀掉的;

(3)捕捉该信号:我写个处理函数,信号来的时候,我就用处理函数来处理;(但是不包括SIGKILL和SIGSTOP)

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 09:04:54  更:2022-04-30 09:04:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 19:30:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码