linux strace命令详解(Linux 内核下的进程管理之道(linux 内核进程管理))
linux strace命令详解
strace常用来跟踪进程执行时的系统调用和所接收的信号。下面通过本文给大家分享Linux应用调试之strace命令,需要的朋友参考下吧
(图片来源网络,侵删)1.strace简介
strace常用来跟踪进程执行时的系统调用和所接收的信号。 通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时间以及返回值等。在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。
2.安装strace命令
(图片来源网络,侵删)第一需要以下两个文件:
strace-4.5.15.tar.bz2
在最简单的情况下,strace运行指定的命令,直到它退出。它拦截并记录进程调用的系统调用和进程接收到的信号。每个系统调用的名称、参数及其返回值都打印在标准错误或用-o选项指定的文件中。
(图片来源网络,侵删)strace是一个有用的诊断、指导和调试工具。系统管理员、诊断人员和故障排除人员将发现,它对于解决源代码不易获得的程序的问题是非常宝贵的,因为它们不需要为了跟踪而重新编译。学生、黑客和过于好奇的人会发现,通过追踪甚至是普通的程序,可以了解到很多关于系统及其系统调用的信息。程序员会发现,由于系统调用和信号都是发生在用户/内核界面上的事件,因此仔细检查这个边界对于错误隔离、健全性检查和试图捕获竞争条件非常有用。
跟踪中的每一行都包含系统调用名,以及包含在括号中的参数及其返回值。对命令cat /dev/null进行扫描的示例如下:
错误(通常返回值为-1)附加了errno符号和错误字符串:
信号被打印成信号符号和信号串。“sleep 666”命令的扫描和中断摘录如下:
如果一个系统调用正在执行,而另一个系统调用正在从不同的线程/进程调用,那么strace将尝试保持这些事件的顺序,并将正在进行的调用标记为未完成。当呼叫返回时,它将被标记为已恢复:
参考: https://linux.die.net/man/1/strace
linux三个内核?
linux不是有三个内核。linux是有五个组成部分。linux是整个操作系统的最底层,简称kernel。负责整个硬件的驱动,一个完整的Linux内核由5部分组成,进程管理、内存管理、进程间通信、虚拟文件系统和网络接口 。
Process Scheduler称作进程管理、进程调度。
进程创建内核态还是用户态?
一个应用程序启动后会在内存中创建一个执行副本,这就是进程。Linux 的内核是一个 Monolithic Kernel(宏内核),因此可以看作一个进程。也就是开机的时候,磁盘的内核镜像被导入内存作为一个执行副本,成为内核进程。
进程可以分成用户态进程和内核态进程两类。用户态进程通常是应用程序的副本,内核态进程就是内核本身的进程。如果用户态进程需要申请资源,比如内存,可以通过系统调用向内核申请。
到此,以上就是小编对于linux内核进程有哪些的问题就介绍到这了,希望这3点解答对大家有用。