网站建设资讯

NEWS

网站建设资讯

linux查看中断命令 linux排查命令

Linux下通过哪个命令怎么查看中断

与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq()。

南山ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

C++是一种面向对象的计算机程序设计语言,由美国ATT贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现,最初它被称作“C with Classes”(包含类的C语言)。

它是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言,支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。

在C基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++,C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。

C++目前流行的编译器最新版本是Borland C++ 4.5,Symantec C++ 6.1,和Microsoft Visual C++ 2012。

4-5 Linux 中断进程 --- kill (kill -2 实验)

1、信号:传递给 Liunx 的事件发生通知机制。

2、kill -l:显示所有信号。一共有62个信号(没有32、33)。

3、常用的信号有:

kill -2 PID —— 正常中断进程(Ctrl + C 一样)。程序在结束之前,能够保存相关数据,然后再退出。

kill -9 PID —— 强制杀死一个进程。

kill -15 PID —— 正常方式终止一个程序。中断进程时应首先用 -15,以便于其能够预先清理临时文件和释放资源。-9 作为最后手段,应对那些失控的进程。

--------------------------------------------------------------------------------

1)、kill -2 中断后台运行的进程。

红色下划线:sleep 10000 —— 后台运行延时 10000 秒的命令,进程 ID 为1516。

ps -j —— 以作业格式列出进程信息,可以看到 1516 sleep 命令的进程。

(PID:进程 ID、PGID:线程组 ID、SID:会话 ID、TTY:进程运行的终端,标识那个终端控制。(pts远程终端、tty系统终端)、TIME:进程运行的时间 和 CMD:命令的名称和参数)。

jobs -l —— 列出后台运行的命令,可以看到 1516 sleep 命令正在后台运行。

黄色下划线:kill -2 1516 —— 中断1516 进程。执行成功后,按 Enter 回车系统会给出提示Interrupt 提示(中断进程)。

蓝色方框:ps -j 已查询不到 1516 sleep 的进程。jobs -l 也没有后台运行的命令。

2)、kill -2 配合 fg 查看中断挂起的进程。

红色下划线:前台执行 sleep 10000 (延时10000秒)后 ctrl + z 挂起。

黄色下划线:ps -j 查看进程,可以看到 1344 sleep 进程。jobs -l 查看后台进程 1344 的状态是stopped 暂停状态。

蓝色下划线:kill -2 1344 中断 1344 进程。

绿色下划线:ps -j 查看进程,仍有 1344 sleep 进程。jobs -l 查看后台进程 1344 的状态是stopped 暂停状态。

暂时这样看,好像 kill -2 并没有起到中断进程的作用。

然而,用 fg 把后台的命令调至前台运行时可以发现 1344 sleep 已经被中断。

红色下划线:fg 把已经执行了 kill -2, 状态为 stopped 的1344 sleep命令调至前台执行。系统也反馈已经调至前台执行。(此时,实际上已经执行了 kill -2 中断了进程)

黄色方框:ps -j 已经没有了 1344 sleep 的进程。

蓝色方框:jobs -l 后台也没有指令。

3)、kill -2 配合 bg 查看中断挂起的进程。

通过上面的思路,kill -2 配合 bg 实验看看效果。同样的首先挂起一个命令,状态为 stopped 暂停。然后用 bg 命令恢复执行。

前面的步骤都是一样,挂起一个命令。通过 ps 和 jobs 查看进程和后台确认有 1379 的进程,状态为 stopped 暂停。然后执行 kill-2 中断进程,再次通过ps 和 jobs 查看进程和后台命令。确认状态为 stopped  1379 的进程仍然存在。

此时,用 bg 恢复运行挂起的命令,系统提示 sleep 命令已恢复在后台运行。然而通过 ps -j 查看进程会发现 sleep 已经被中断。jobs -l 查看后台也没有了运行的 sleep 命令了。

从实验上看:

1、后台命令运行时(Running),执行 kill -2 可以中断进程。

2、挂起命令,处于暂停状态时(Stopped),执行 kill -2 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是 Stopped 暂停状态。实际上,用 fg 把暂停的后台进程调至前台运行时,系统反馈 sleep 命令调至前台运行。而再用 ps 查询不到进程,已经中断了进程。用 jobs 已经查询不到后台命令。

3、挂起命令,处于暂停状态时(Stopped),执行 kill -2 后通过 ps 还可以查询到进程, jobs还可以查询到后台命令,状态仍然是 Stopped 暂停状态。用 bg 把暂停的后台命令恢复运行时,系统反馈 sleep 命令在后台运行。再用 ps 查询进程已经中断,用 jobs 已经查询不到后台命令。

【性能】Linux上网络状态和软硬中断动态查看

1. 找系统类的错误, dmesg | tail

2. 直接的网络错误 sar -n ETCP 1 或者 sar -n EDEV 1

3.查看网络状态, netstat -s 或者 watch -d netstat -s

4.网络状态的统计 ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}'

#  netstat -s

#  watch -d netstat -s

#  netstat -s -u

# watch -d netstat -s -u

# cat /proc/softirqs

# watch -d "/bin/cat /proc/softirqs | /usr/bin/awk 'NR == 1{printf \"%-15s %-15s %-15s %-15s %-15s\n\",\" \",\$1,\$2,\$3,\$4}; NR  1{printf \"%-15s %-15s %-15s %-15s %-15s\n\",\$1,\$2,\$3,\$4,\$5}'"

# watch -d   "cat /proc/interrupts"

Linux内核中断之中断申请接口

本文基于 RockPI 4A 单板Linux4.4内核介绍中断申请的常用接口函数。

1、文件

2、定义

说明:

1)、 irq :要申请的中断号,可通过 platform_get_irq() 获取,见“Linux内核中断之获取中断号”。

2)、 handler :中断处理函数,发生中断时,先处理中断处理函数,然后返回 IRQ_WAKE_THREAD 唤醒中断处理线程。中断处理函数尽可能简单。

中断处理函数定义: typedef irqreturn_t (*irq_handler_t)(int, void *);

中断返回值如下:

3)、 thread_fn :中断处理线程,该参数可为NULL。类似于中断处理函数的下半部分。

4)、 irqflags :中断类型标志。

定义文件: include/linux/interrupt.h ,内容如下:

5)、 devname :中断名称,可使用 cat /proc/interrupts 命令查看。

6)、 dev_id :设备ID,该值唯一。

在使用共享中断时(即设置 IRQF_SHARED ),必须传入 dev_id ,在中断处理和释放函数中都会使用该参数。

注:

1、 request_threaded_irq() 函数可替代 request_irq 加 tasklet 或 workqueue 的方式。

2、对应的中断释放函数为: void free_irq(unsigned int, void *) ,需要和中断申请函数成对出现。

1、文件

2、定义

说明:

1)、 __must_check :指调用函数一定要处理函数的返回值,否则编译器会给出警告。

2)、 request_irq() 函数本质上是中断处理线程 thread_fn 为空的 request_threaded_irq() 函数。

注 :

对应的中断释放函数为: void free_irq(unsigned int, void *) ,需要和中断申请函数成对出现。

1、文件

2、定义

说明 :

devm_request_threaded_irq() 本质上还是使用 request_threaded_irq() 函数实现中断申请。

两者区别:

1)多了一个 dev 参数;

2)在设备驱动卸载时,中断会自动释放;

3)如果想单独释放中断,可使用 void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id) 函数。

1、文件

2、定义

devm_request_irq() 函数本质上是中断处理线程 thread_fn 为空的 devm_request_threaded_irq() 函数。

1、获取中断号

2、申请中断

3、中断处理函数

4、中断处理线程

5、查看中断


网站栏目:linux查看中断命令 linux排查命令
文章源于:http://cdweb.net/article/hpdieo.html