Shell 信號發送與捕捉

1、Linux信號類型

信號(Signal):信號是在軟件層次上對中斷機制的一種模擬,通過給一個進程發送信號,執行相應的處理函數。

進程可以通過三種方式來響應一個信號:

1)忽略信號,即對信號不做任何處理,其中有兩個信號不能忽略:SIGKILL及SIGSTOP。

2)捕捉信號。

3)執行缺省操作,Linux對每種信號都規定了默認操作。

Linux究竟采用上述三種方式的哪一個來響應信號呢?取決于傳遞給響應的API函數。

Linux支持的信號有:

編號

信號名稱

缺省動作

描述

1

SIGHUP

終止

終止進程,掛起

2

SIGINT

終止

鍵盤輸入中斷命令,一般是CTRL+C

3

SIGQUIT

CoreDump

鍵盤輸入退出命令,一般是CTRL+\

4

SIGILL

CoreDump

非法指令

5

SIGTRAP

CoreDump

trap指令發出,一般調試用

6

SIGABRT

CoreDump

abort(3)發出的終止信號

7

SIGBUS

CoreDump

非法地址

8

SIGFPE

CoreDump

浮點數異常

9

SIGKILL

終止

立即停止進程,不能捕獲,不能忽略

10

SIGUSR1

終止

用戶自定義信號1,像Nginx就支持USR1信號,用于重載配置,重新打開日志

11

SIGSEGV

CoreDump

無效內存引用

12

SIGUSR2

終止

用戶自定義信號2

13

SIGPIPE

終止

管道不能訪問

14

SIGALRM

終止

時鐘信號,alrm(2)發出的終止信號

15

SIGTERM

終止

終止信號,進程會先關閉正在運行的任務或打開的文件再終止,有時間進程在有運行的任務而忽略此信號。不能捕捉

16

SIGSTKFLT

終止

處理器棧錯誤

17

SIGCHLD

可忽略

子進程結束時,父進程收到的信號

18

SIGCONT

可忽略

讓終止的進程繼續執行

19

SIGSTOP

停止

停止進程,不能忽略,不能捕獲

20

SIGSTP

停止

停止進程,一般是CTRL+Z

21

SIGTTIN

停止

后臺進程從終端讀數據

22

SIGTTOU

停止

后臺進程從終端寫數據

23

SIGURG

可忽略

緊急數組是否到達socket

24

SIGXCPU

CoreDump

超出CPU占用資源限制

25

SIGXFSZ

CoreDump

超出文件大小資源限制

26

SIGVTALRM

終止

虛擬時鐘信號,類似于SIGALRM,但計算的是進程占用的時間

27

SIGPROF

終止

類似與SIGALRM,但計算的是進程占用CPU的時間

28

SIGWINCH

可忽略

窗口大小改變發出的信號

29

SIGIO

終止

文件描述符準備就緒,可以輸入/輸出操作了

30

SIGPWR

終止

電源失敗

31

SIGSYS

CoreDump

非法系統調用

CoreDump(核心轉儲):當程序運行過程中異常退出時,內核把當前程序在內存狀況存儲在一個core文件中,以便調試。

?

Linux支持兩種信號:

一種是標準信號,編號1-31,稱為非可靠信號(非實時),不支持隊列,信號可能會丟失,比如發送多次相同的信號,進程只能收到一次,如果第一個信號沒有處理完,第二個信號將會丟棄。

另一種是擴展信號,編號32-64,稱為可靠信號(實時),支持隊列,發多少次進程就可以收到多少次。

信號類型比較多,我們只要了解下,記住幾個常用信號就行了,紅色標記的我覺得需要記下。

?

發送信號一般有兩種情況:

一種是內核檢測到系統事件,比如鍵盤輸入CTRL+C會發送SIGINT信號。

另一種是通過系統調用kill命令來向一個進程發送信號。

2、kill命令

kill命令發送信號給進程。

命令格式:kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...

kill -l [sigspec]

-s ?# 信號名稱

-n ?# 信號編號

-l ?# 打印編號1-31信號名稱

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535436.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

運維面試題總結

集群相關 簡述 ETCD 及其特點? etcd 是 CoreOS 團隊發起的開源項目,是一個管理配置信息和服務發現(service discovery)的項目,它的目標是構建一個高可用的分布式鍵值(key-value)數據庫&#x…

詳解設計模式:建造者模式

建造者模式(Builder Pattern)也叫做生成器模式,是 GoF 的 23 種設計模式的一種,它將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 當我們需要實列化一個復雜的類,以得到不同結…

圖文并茂 VLAN 詳解,讓你看一遍就理解 VLAN

一、為什么需要VLAN 1.1、什么是VLAN? VLAN(Virtual LAN),翻譯成中文是“虛擬局域網”。LAN可以是由少數幾臺家用計算機構成的網絡,也可以是數以百計的計算機構成的企業網絡。VLAN所指的LAN特指使用路由器分割的網絡——也就是廣播域。 在此讓我們先復習…

認識VLAN,并學會VLAN的劃分和網絡配置實例

VLAN的劃分和網絡的配置實例 1、VLAN基礎知識 VLAN(Virtual Local Area Network)的中文名為:“虛擬局域網”,注意和VPN(虛擬專用網)進行區分。 VLAN是一種將局域網設備從邏輯上劃分(不是從物…

VLAN劃分及配置注意事項

VLAN(Virtual Local Area Network)即虛擬局域網,是將一個物理的LAN在邏輯上劃分成多個廣播域的通信技術。VLAN內的主機間可以直接通信,而VLAN間不能直接通信,從而將廣播報文限制在一個VLAN內。VLAN之間的通信是通過第3…

Docker原理剖析

一、簡介 1、了解Docker的前生LXC LXC為Linux Container的簡寫。可以提供輕量級的虛擬化,以便隔離進程和資源,而且不需要提供指令解釋機制以及全虛擬化的其他復雜性。相當于C中的NameSpace。容器有效地將由單個操作系統管理的資源劃分到孤立的組中&#…

獲取Linux內存、cpu、磁盤IO等信息

#!/bin/bash # 獲取要監控的本地服務器IP地址 IPifconfig | grep inet | grep -vE inet6|127.0.0.1 | awk {print $2} echo "IP地址:"$IP# 獲取cpu總核數 cpu_numgrep -c "model name" /proc/cpuinfo echo "cpu總核數:"$c…

Docker容器網絡解析

Docker 容器網絡的發展歷史 在 Dokcer 發布之初,Docker 是將網絡、管理、安全等集成在一起的,其中網絡模塊可以為容器提供橋接網絡、主機網絡等簡單的網絡功能。 從 1.7 版本開始,Docker正是把網絡和存儲這兩部分的功能都以插件化形式剝離出來…

將指定excel的一列數據提取到另一個excel的指定列

#!/usr/bin/env python import openpyxl bjD:/地市縣公司/西藏臺賬數據分析-設備臺帳分析.xlsx wb openpyxl.load_workbook (bj) get_sheets wb.sheetnames #print(get_sheets) TA01TA01 TA02TA02 TA03TA03 TE01TE01 YG201YG201 YG202YG202 YG203YG203 YG204YG204 YG205YG205…

Docker 數據管理介紹

默認容器的數據是保存在容器的可讀寫層,當容器被刪除時其上的數據也會丟失,所以為了實現數據的持久性則需要選擇一種數據持久技術來保存數據。官方提供了三種存儲方式:Volumes、Bind mounts和tmpfs。前面還介紹了:Docker 服務終端…

Docker 數據持久化的三種方案

容器中的數據可以存儲在容器層。但是將數據存放在容器層存在以下問題: 數據不是持久化。意思是如果容器刪除了,這些數據也就沒了 主機上的其它進程不方便訪問這些數據 對這些數據的I/O會經過存儲驅動,然后到達主機,引入了一層間…

Git 存儲原理及相關實現

Git 是目前最流行的版本控制系統,從本地開發到生產部署,我們每天都在使用 Git 進行我們的版本控制,除了日常使用的命令之外,如果想要對 Git 有更深一步的了解,那么研究下 Git 的底層存儲原理將會對理解 Git 及其使用非…

Git內部原理

Git有什么特點? fast,scalable,distributed revision control system(快速,可擴展的分布式版本控制系統) 幾乎所有操作都是本地執行 每一個clone都是整個生命周期的完整副本 the stupid content tracker&a…

git存儲原理

四種數據類型 實際上Git基于數據類型的不同,把對象分為四種:數據對象、樹對象、提交對象、標簽對象。Git文件系統的設計思路與linux文件系統相似,即將文件的內容與文件的屬性分開存儲,文件內容以“裝滿字節的袋子”存儲在文件系統…

詳解設計模式:中介者模式

中介者模式(Mediator Pattern)也被稱為調停者模式,是在 GoF 23 種設計模式中定義了的行為型模式。 中介者模式 是用來降低多個對象和類之間的通信復雜性。這種模式提供了一個中介類,該類通常處理不同類之間的通信,并支…

rebase參數以及注意事項

可以根據需要將pick參數,改變為下面代表不同作用的參數;這樣就可以對節點C和D進行不同的操作了。比如: pick:默認參數,表示不對提交節點進行任何操作,直接應用原提交節點。不創建新提交; rewor…

RPC 服務 與 HTTP 服務的區別

1、什么是RPC RPC(Remote Procedure Call)—遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信…

Docker 網絡命名空間

Docker 用戶可以通過與 CNM 的 Object 以及 API 的交互來管理對應容器的網絡,下面是一個典型的容器網絡生命周期: 1、Driver要向NetworkController注冊。內置的Driver在Libnetwork內注冊,遠程的Driver則通過Plugin mechanism注冊。每一個Driv…

緩存雪崩、擊穿、穿透解決方案

用戶的數據一般都是存儲于數據庫,數據庫的數據是落在磁盤上的,磁盤的讀寫速度可以說是計算機里最慢的硬件了。 當用戶的請求,都訪問數據庫的話,請求數量一上來,數據庫很容易就奔潰的了,所以為了避免用戶直…

Ansible中的playbook詳解

首先簡單說明一下playbook,playbook是什么呢? 根本上說playbook和shell腳本沒有任何的區別,playbook就像shell一樣,也是把一堆的命令組合起來,然后加入對應條件判斷等等,在shell腳本中是一條一條的命令&am…