内核模块及系统监控

  • Linux系统内核模块
  • Linux系统内核模块功能
  • 控制Linux系统内核模块
  • 手工装入内核模块
  • /proc虚拟文件系统
    • /proc虚拟文件系统的特色
  • 永久保存/proc/sys下的配置
  • 检测和监督硬件设备
  • PCI总线
  • 系统监视工具top
  • 系统监视工具free
  • 系统监控工具iostat
  • 带有 -ef选项的ps命令列出目前在系统上被调度运行的所有进程
  • pgrep命令
  • 进程监控命令pstree
  • 控制进程的信号(Signal)
  • kill命令
  • pkill命令及组合键

Linux系统内核模块

  • Linux系统内核模块是对Linux小内核的扩充
  • 这些模块可在需要时装入也可在不需要时卸载
  • 将这些模块与系统核心部分分开的好处是:
  • 在没有增加开机时载入内核映像大小的情况下,又允许在需要时扩充内核的功能
  • 内核中许多组件可被编译成可动态载入的形式
  • 这些编译后的组件就是内核模块
  • 内核模块外挂在核心上——这样在增加系统功能的同时却没有增加核心的大小

Linux系统内核模块功能

  • Linux系统内核模块有两个功能:

    1. 提供计算机外围设备的驱动程序
    2. 提供一些其他的文件系统的支持
  • 在载入内核模块时可以设定内核模块
  • 所有的内核模块都存放在/lib/modules目录中
  • 可使用ls命令列出所有内核模块

控制Linux系统内核模块

  • 如要控制Linux系统内核模块,

  • 可使用lsmod命令列出目前已经载入了哪些模块

  • 可使用modprobe命令来临时载入某个模块

  • modprobe命令的语法格式:modprobe 模块名

  • 可使用/sbin/modinfo命令浏览模块的信息

  • modinfo命令的语法格式:modinfo 模块名

  • modinfo命令将列出该模块的一些信息以及它的认证许可是由哪家公司签署的

  • 可通过/etc/modprobe.conf文件设置模块

  • 在该文件中可设定alias、默认alias会记录Ethernet interface、sound card、usb controller

  • 在该文件中还可设定当某一模块被载入时需要传给这一模块的parameters、以及actions

  • actions表示当该模块载入或卸载时要执行的操作

手工装入内核模块

  • 可使用Linux系统提供的insmod命令手工地装入一个内核模块、insmod是install moudule的缩写
  • insmod的功能与之前介绍的modprobe命令相同
  • 使用modprobe命令载入模块时可以同时载入相依赖的模块,使用起来可能更方便些
  • insmod命令的语法格式: insmod 模块名
  • 可使用Linux系统提供的rmmod命令手工地卸载一个内核模块、rmmod是remove moudule的缩写
  • rmmod命令的语法格式: rmmod 模块名
[root@dog ~]# ls -l /lib/modules
总用量 12
drwxr-xr-x. 8 root root 4096 5月  13 04:08 2.6.32-504.el6.x86_64
drwxr-xr-x. 8 root root 4096 5月  24 23:28 2.6.32-754.29.2.el6.x86_64
drwxr-xr-x. 7 root root 4096 5月  13 04:08 3.8.13-44.1.1.el6uek.x86_64[root@dog ~]# ls
anaconda-ks.cfg  install.log.syslog  公共的  视频  文档  音乐
install.log      profile.bak         模板    图片  下载  桌面[root@dog ~]# uname -r
2.6.32-754.29.2.el6.x86_64[root@dog ~]# ls /lib/modules/2.6.32-754.29.2.el6.x86_64/modules.dep
/lib/modules/2.6.32-754.29.2.el6.x86_64/modules.dep[root@dog ~]# file /lib/modules/2.6.32-754.29.2.el6.x86_64/modules.dep
/lib/modules/2.6.32-754.29.2.el6.x86_64/modules.dep: ASCII text, with very long lines[root@dog ~]# lsmod
Module                  Size  Used by
nls_utf8                1455  1
autofs4                27032  3
sunrpc                268897  1
8021q                  20507  0
garp                    7184  1 8021q
stp                     2218  1 garp
llc                     5450  2 garp,stp
fuse                   80180  2
vmhgfs                 50659  0
vsock                  46582  4
iptable_filter          2793  0
......

/proc虚拟文件系统

  • 为了使内核管理和维护与文件系统管理和维护能够使用完全相同的方法,UNIX操作系统引入了一个虚拟文件系统/proc、这样用户就可以使用在进行文件操作时已经熟悉的命令和方法进行内核信息的查询和配置
  • /proc并不存在于硬盘上、而是一个存放在内存中的虚拟目录
  • 借助修改这个虚拟目录中的文件以及时变更内核的参数
  • /proc目录中包含了存放目前系统内核信息的文件、通过这些文件就可以列出目前内核的状态

/proc虚拟文件系统的特色

  1. 可使用/proc获取内核配置信息或对内核进行配置
  2. 一个虚拟文件系统,所有文件只存在内存中、并不存到硬盘上
  3. 系统重启后所有更改过的内容自动消失、又回到初始设置
  4. 利用/proc可显示进程的信息、内存资源、硬件设备等
  5. /proc中有一些子目录、如/proc/PID/子目录中包含了所有进程
  6. 利用子目录中文件可修改网络置和内存设置或内核的一些参数
  7. 所有对/proc的修改立即生效
  • 可使用命令列出/proc目录中的详细内容
  • 可使用cat命令列出内存的详细信息
    ls -l /proc
    cat /proc/meminfo
[root@dog ~]# ls -l /proc
总用量 0
dr-xr-xr-x.  8 root      root         0 5月  27 23:20 1
dr-xr-xr-x.  8 root      root         0 5月  27 23:20 10
dr-xr-xr-x.  8 root      root         0 5月  27 23:20 1005
dr-xr-xr-x.  8 root      root         0 5月  27 23:20 1006
dr-xr-xr-x.  8 root      root         0 5月  27 23:20 1059
......
[root@dog ~]# cat /proc/meminfo
MemTotal:        1019796 kB
MemFree:          190128 kB
Buffers:           10664 kB
Cached:           504064 kB
SwapCached:            0 kB
Active:           100668 kB
......
[root@dog ~]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
You have new mail in /var/spool/mail/root
[root@dog ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1
[root@dog ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
^Z
[1]+  Stopped                 ping 127.0.0.1
[root@dog ~]# echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
[root@dog ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
[root@dog ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.015 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.043 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.046 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.053 ms
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.046 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.056 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.048 ms

永久保存/proc/sys下的配置

  • 使用sysctl命令变更内核参数的设定才能将这些设定变成静态的、即变成永久的设置,这样在重新启动系统时这些设定才不会消失。
  • sysctl命令所变更的参数将保存到/etc/sysctl.conf系统设置文件中
  • 经常使用sysctl命令完成的工作:
  1. 列出所有当前的系统设置:sysctl –a
  2. 从/etc/sysctl.conf文件中重新载入系统设置:sysctl –p
  3. 动态设置一个在/proc目录中文件的值:
    sysctl -w kernel.shmmax=2147483648
[root@dog ~]# more /etc/sysctl.conf
# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.
#
# Use '/sbin/sysctl -a' to list all possible parameters.
......[root@dog ~]# ls -l /proc/sys
总用量 0
dr-xr-xr-x 0 root root 0 5月  28 05:41 abi
dr-xr-xr-x 0 root root 0 5月  27 23:20 crypto
dr-xr-xr-x 0 root root 0 5月  28 05:41 debug
dr-xr-xr-x 0 root root 0 5月  28 05:41 dev
dr-xr-xr-x 0 root root 0 5月  27 22:51 fs
dr-xr-xr-x 0 root root 0 5月  27 22:51 kernel
dr-xr-xr-x 0 root root 0 5月  27 23:39 net
dr-xr-xr-x 0 root root 0 5月  28 05:41 sunrpc
dr-xr-xr-x 0 root root 0 5月  28 05:41 vm[root@dog ~]# cat /proc/sys/kernel/hostname
dog.super.com[root@dog ~]# sysctl -a | more
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 1000000
kernel.sched_latency_ns = 5000000
kernel.sched_wakeup_granularity_ns = 1000000
kernel.sched_tunable_scaling = 1
......[root@dog ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296[root@dog ~]# sysctl -w kernel.shmmax=2147483648
kernel.shmmax = 2147483648[root@dog ~]# cat /proc/sys/kernel/shmmax
2147483648

检测和监督硬件设备

  • 系统使用klogd服务将系统启动过程中屏幕显示的信息写入到内存的一个环形缓冲区中
  • 当环形缓冲区被写满后系统将把环形缓冲区中的信息写到/var/log/dmesg日志文件中
  • 可使用dmesg命令来查看环形缓冲区中的信息
  • 也可通过/var/log/dmesg中内容来查看这些信息

#列出环形缓冲区中的信息
[root@dog ~]# dmesg |more
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-754.29.2.el6.x86_64 (mockbuild@x86-ol6-builder-01) (gcc vers
ion 4.4.7 20120313 (Red Hat 4.4.7-23.0.1) (GCC) ) #1 SMP Tue May 12 11:05:50 PDT
2020
......[root@dog ~]# more /var/log/dmesg
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-754.29.2.el6.x86_64 (mockbuild@x86-ol6-builder-01) (gcc ver
sion 4.4.7 20120313 (Red Hat 4.4.7-23.0.1) (GCC) ) #1 SMP Tue May 12 11:05:50 PD
T 2020
Command line: ro root=UUID=eaff7b39-53a1-4ee8-8556-a84550747a0d rd_NO_LUKS  KEYB[root@dog ~]# ls -l /usr/share/hwdata
总用量 5756
-rw-r--r--. 1 root root  355009 6月  19 2018 MonitorsDB
-rw-r--r--. 1 root root 3748612 6月  19 2018 oui.txt
-rw-r--r--. 1 root root 1116345 6月  19 2018 pci.ids
-rw-r--r--. 1 root root   55055 6月  19 2018 pnp.ids
-rw-r--r--. 1 root root    1622 6月  19 2018 upgradelist
-rw-r--r--. 1 root root  597009 6月  19 2018 usb.ids
drwxr-xr-x. 2 root root    4096 5月  16 08:05 videoaliases
-rw-r--r--. 1 root root    1980 6月  19 2018 videodrivers[root@dog ~]# ls -l /proc/*info
-r--r--r--. 1 root root 0 5月  28 05:51 /proc/buddyinfo
-r--r--r--. 1 root root 0 5月  28 05:51 /proc/cpuinfo
-r--r--r--. 1 root root 0 5月  28 05:51 /proc/meminfo
-r--r--r--. 1 root root 0 5月  28 05:51 /proc/pagetypeinfo
-rw-r--r--. 1 root root 0 5月  28 05:51 /proc/slabinfo
-r--------. 1 root root 0 5月  28 05:51 /proc/vmallocinfo
-r--r--r--. 1 root root 0 5月  28 05:51 /proc/zoneinfo
[root@dog ~]# cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 158
model name    : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping    : 9
......[root@dog ~]# more /etc/udev/udev.conf
# The initial syslog(3) priority: "err", "info", "debug" or its
# numerical equivalent. For runtime debugging, the daemons internal
# state can be changed with: "udevadm control --log-priority=<value>".
udev_log="err"
......[root@dog ~]# ls -l /etc/udev/rules.d/
总用量 40
-rw-r--r--. 1 root root 1652 11月 20 2010 60-fprint-autosuspend.rules
-rw-r--r--. 1 root root 1060 7月  24 2010 60-pcmcia.rules
-rw-r--r--. 1 root root  316 1月  25 2018 60-raw.rules
-rw-r--r--. 1 root root  789 3月  30 07:48 70-persistent-cd.rules
-rw-r--r--. 1 root root  420 3月  24 11:55 70-persistent-net.rules
-rw-r--r--. 1 root root  320 1月  11 2017 90-alsa.rules
-rw-r--r--. 1 root root   83 8月  17 2014 90-hal.rules
-rw-r--r--. 1 root root 2486 9月  12 2017 97-bluetooth-serial.rules
-rw-r--r--. 1 root root  308 4月   9 2019 98-kexec.rules
-rw-r--r--. 1 root root  341 5月  13 04:08 99-vmware-scsi-udev.rules[root@dog ~]# more /etc/udev/rules.d/50-udev.rules
/etc/udev/rules.d/50-udev.rules: 没有那个文件或目录[root@dog ~]# more /etc/udev/rules.d/60-pcmcia.rules
# PCMCIA devices:
#
ACTION!="add", GOTO="pcmciautils_end"
......

PCI总线

  • PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写
  • PCI是目前个人电脑中使用最广泛的接口,几乎所有的主板产品上都带有这种插槽
  • 用/sbin/lspci命令查看目前哪些设备插在PCI插槽中
  • 这些PCI信息存放在/proc/bus/pci/子目录中
  • 可用ls命令列出/proc/bus/pci/子目录中所有内容
#查看目前有哪些设备插在PCI插槽中
[root@dog ~]# lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
......#列出/proc/bus/pci中所有内容
[root@dog ~]# ls -l /proc/bus/pci
总用量 0
dr-xr-xr-x. 2 root root 0 5月  28 06:02 00
dr-xr-xr-x. 2 root root 0 5月  28 06:02 02
-r--r--r--. 1 root root 0 5月  28 06:02 devices#列出那些设备插在USB插槽中
[root@dog ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub[root@dog ~]# ls -l /media
总用量 14
drwxr-xr-x.  2 root root 4096 5月  19 22:13 cdrom
drwxr-xr-x.  2 root root 4096 5月  19 22:13 floppy
drwxr-xr-x. 12 dag  dag  6144 10月 18 2014 OL6.6 x86_64 Disc 1 20141018

系统监视工具top

  • 在Linux中使用最频繁的系统监督工具可能是top
  • 可使用top命令列出系统状态、系统默认每5秒钟刷新一下屏幕上的显示结果
[root@dog ~]# top
top - 04:26:47 up 35 min,  3 users,  load average: 0.22, 0.16, 0.10
Tasks:  84 total,   1 running,  83 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.3% us,  7.9% sy,  0.7% ni, 85.8% id,  0.0% wa,  0.3% hi,  0.0% si
Mem:    807032k total,   290772k used,   516260k free,    23144k buffers
Swap:  2096472k total,        0k used,  2096472k free,   174456k cached    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
3601 root      15   0 39052  16m 4228 S  8.3  2.1   0:39.72 X
……
  • top - 04:26:47 up 35 min, 3 users表示:

    • 该系统早上04:26:47开机,已开启35分钟,目前系统上有3个用户
  • load average: 0.22, 0.16, 0.10表示:
    • 过去10分钟系统平均负载,其中3个数字分别代表现在、5分钟前和10分钟前系统的平均负载
    • 该系统目前系统平均负载是0.22,5分钟前系统平均负载是0.16,而10分钟前系统平均负载是0.10
  • load average为任务队列的平均长度。通常对于单CPU系统,1以下表示系统大部分时间空闲、1~2之间表示系统正好以它的能力运行、而2~3表示系统轻度负载、10以上表示系统已经严重过载。

系统监视工具free

  • 另一个常用的Linux和UNIX操作系统监测工具是free,可以使用free命令来显示内存的使用状态
  • 使用free命令可同时获得物理内存和虚拟内存(交换区)的使用量
[root@dog ~]# freetotal       used       free     shared    buffers     cached
Mem:       1019796     875804     143992       4392      29536     496340
-/+ buffers/cache:     349928     669868
Swap:      4194300          0    4194300

系统监控工具vmstat

  • vmstat工具可用来显示进程、内存、交换区、I/O以及CUP的工作状态:
  • vmstat命令显示结果中一些列的具体含义:
  • process / r:进程正在等待CPU(运行队列的大小)。
  • process / b:进程在不中断地睡眠。
  • swap / si:进程从交换区滚入(载入)内存。
  • swap / so :进程滚出到交换区上,但是仍然处于运行状态。
  • io / bi:载入内存的数据块数。
  • io / bo:写入硬盘的数据块数。
  • system / in:每秒钟的中断次数。
  • system / cs:每秒钟的环境切换的次数。
  • cpu / us:执行用户代码所使用的CPU时间。
  • cpu / sy:执行系统码所使用的CPU时间。
  • cpu / id:CPU空闲时间。
  • vmstat [时间间隔] [显示的记录行数]
  • cpu / wa:CPU等待的时间。
#使用vmstat命令列出系统的进程、内存、交换区、I/O以及CPU的工作状态
[root@dog ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 143868  29584 496360    0    0   369     3   46   92  0  1 99  0  0#使用以下vmstat命令监督系统的运行情况、3表示每3秒刷新一次显示信息、5表示一共刷新5次:
[root@dog ~]# vmstat 3 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 143868  29592 496388    0    0   368     3   46   92  0  1 99  0  0
1  0      0 143836  29592 496388    0    0     0     0   34   63  0  0 100  0  0
0  0      0 143836  29592 496388    0    0     0     0   42  110  0  0 100  0  0
0  0      0 143844  29592 496388    0    0     0     0  116  331  4  0 95  0  0
0  0      0 143844  29600 496388    0    0     0     4  108  304  3  0 96  0  0

系统监控工具iostat

  • 监督系统I/O设备负载信息的常用工具还有iostat
  • 它除了可获取I/O设备性能方面的信息之外,还可获取CPU性能方面的信息
  • 该工具显示结果的第1部分是从系统启动以来的统计信息、而接下来的部分就是从前一部分报告的时间算起的统计信息
  • iostat [选项] [时间间隔] [刷新显示信息的次数]
  • 几个比较常用的选项为:
    1. -d:显示硬盘所传输的数据和服务时间、即包括每个硬盘
    2. -p:包含每个分区的统计信息、p是partition的第1个字母
    3. -c:只显示CPU的使用信息
    4. -x:显示扩展的硬盘统计信息、x是extended的缩写
#使用iostat命令来监督linux系统的CPU使用状况,其中2表示每2s刷新(重新收集)一次显示信息,3表示一共刷新显示信息3次
[root@dog ~]# iostat -c 2 3
Linux 2.6.32-754.29.2.el6.x86_64 (dog.super.com)     2020年05月28日     _x86_64_(1 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.39    0.00    0.57    0.03    0.00   99.01avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.00    0.00    0.00    0.00    0.00  100.00avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.00    0.00    0.00    0.00    0.00  100.00
#*使用以下iostat命令监督硬盘分区的运行状况:显示结果列名的简单解释如下:* tps:表示transfers per second的缩写(每秒钟传输的数量)* kB_read/s:每秒钟从硬盘中读出数据的KB数* kB_wrtn/s:每秒写入硬盘数据的KB数* kB_read:从硬盘中读出数据的总KB数* kB_wrtn:写入硬盘数据的总KB数[root@dog ~]# iostat -p -k 3 2
Linux 2.6.32-754.29.2.el6.x86_64 (dog.super.com)     2020年05月28日     _x86_64_(1 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.39    0.00    0.56    0.03    0.00   99.01Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.01         0.02         0.00        222          0
sda               3.81       357.12         3.30    4675014      43168
sda1              0.05         0.18         0.00       2397         32
sda2              0.03         0.11         0.00       1452          0
sda3              3.73       356.78         3.30    4670557      43136avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.68    0.00    0.00    0.00    0.00   99.32Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00          0          0
sda               0.00         0.00         0.00          0          0
sda1              0.00         0.00         0.00          0          0
sda2              0.00         0.00         0.00          0          0
sda3              0.00         0.00         0.00          0          0

系统中进程的监控

  • Linux系统上运行的每一个程序都在系统中创建一个相对应的进程

  • 当一个用户登录Linux系统并启动shell时他就启动了一个进程(shell进程)

  • 当用户执行一个Linux命令或开启一个应用程序时他也启动了一个进程

  • 当一个进程创建另一个进程时第1个进程被称为新进程的父进程、而新进程被称为子进程

  • 当子进程运行时父进程处于等待状态。当子进程完成了它的工作之后,子进程会通知父进程,然后父进程终止子进程

  • 使用ps命令列出所在shell所调度运行的全部进程:

  • ps命令有一些选项、可通过使用不同的选项以不同格式显示进程状态的信息:ps [选项]

  • ps命令可有多个选项、以下是两个常用的选项:

    • -e:显示每一个进程的信息、包括PID、TTY、TIME和CMD
    • -f:显示每一个进程的全部信息列表、除了-e选项显示的信息之外,还额外地增加了UID、父进程标识符号和进程启动时间
  • 使用带有-ef选项的ps命令列出目前系统上被调度运行的所有进程

#不带任何参数的ps命令仅列出所在的shell所调度运行的进程(不会列出任何系统的守护进程)
[root@dog ~]# psPID TTY          TIME CMD
3266 pts/0    00:00:00 su
3274 pts/0    00:00:00 bash
4464 pts/0    00:00:00 ping
4468 pts/0    00:00:00 ping
4521 pts/0    00:00:00 more
4537 pts/0    00:00:00 more
4540 pts/0    00:00:00 more
4614 pts/0    00:00:00 dmesg
4615 pts/0    00:00:00 more
4712 pts/0    00:00:00 top
4797 pts/0    00:00:00 ps

带有 -ef选项的ps命令列出目前在系统上被调度运行的所有进程

以下是ps命令显示结果每一列的解释:
1. UID:该进程的拥有者(owner)的用户名
2. PID:该进程的唯一进程标识号码
3. PPID:父进程的进程标识号码
4. C:这个值已经不再使用了
5. STIME:该进程启动的时间(小时:分:秒)
6. TTY:进程的控制终端、系统守护进程将显示问号?、表示该进程不是使用终端启动的
7. TIME:该进程的累计执行时间
8.CMD:命令名、选项和参数

[root@dog ~]# ps -ef | more
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 02:47 ?        00:00:01 /sbin/init
root         2     0  0 02:47 ?        00:00:00 [kthreadd]
root         3     2  0 02:47 ?        00:00:00 [migration/0]
root         4     2  0 02:47 ?        00:00:00 [ksoftirqd/0]
root         5     2  0 02:47 ?        00:00:00 [stopper/0]
root         6     2  0 02:47 ?        00:00:00 [watchdog/0]
root         7     2  0 02:47 ?        00:00:13 [events/0]
root         8     2  0 02:47 ?        00:00:00 [events/0]
root         9     2  0 02:47 ?        00:00:00 [events_long/0]
root        10     2  0 02:47 ?        00:00:00 [events_power_ef]
root        11     2  0 02:47 ?        00:00:00 [cgroup]
......

pgrep命令

  • 为了方便进程的搜寻操作,Linux引入了一个功能类似ps和grep的组合命令的单独命令、即pgrep
  • 可用pgrep命令利用名字来显示指定的进程
  • 它默认只显示在命令行上匹配所指定条件的每个进程的PID
  • 使用带有-l选项的pgrep命令将显示进程的名字
[root@dog ~]# ps -ef | grep tty
root      2618     1  0 02:48 tty2     00:00:00 /sbin/mingetty /dev/tty2
root      2621     1  0 02:48 tty3     00:00:00 /sbin/mingetty /dev/tty3
root      2623     1  0 02:48 tty4     00:00:00 /sbin/mingetty /dev/tty4
root      2625     1  0 02:48 tty5     00:00:00 /sbin/mingetty /dev/tty5
root      2627     1  0 02:48 tty6     00:00:00 /sbin/mingetty /dev/tty6
root      2651  2648  0 02:48 tty1     00:00:47 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-gdm-B4NKhR/database -nolisten tcp vt1
root      4813  3274  0 06:38 pts/0    00:00:00 grep tty[root@dog ~]# pgrep -l klogd
2356 klogd

进程监控命令pstree

  • Linux系统还提供了另一个可能看起来更直观的与进程管理有关的命令、即pstree命令
  • pstree命令将正在运行的进程作为一棵树来显示
  • 树的根基可以是一个进程的PID也可以是init(如果在命令中没有参数)
#作者的#列出PID为4729的进程的进程状态树
[root@dog ~]# pstree 4729
su───bash───more#如在命令中指定的参数是用户名,进程树的根是基于该用户所拥有的进程[root@dog ~]# pstree dog
bash───su───bash───more
#我自己系统的#使用pstree命令列出PID为24的金车房的进程状态树
[root@dog ~]# pstree 24
ata_sff/0#列出用户dag的所有进程的进程状态树
[root@dog ~]# pstree dag
bonobo-activati───{bonobo-activat}clock-appletdbus-daemon───{dbus-daemon}dbus-launchgconf-im-settingconfd-2gnome-session─┬─abrt-applet├─bluetooth-apple├─gdu-notificatio├─gnome-panel───{gnome-panel}├─gnome-power-man├─gnome-volume-co├─gpk-update-icon───{gpk-update-ico}├─metacity───{metacity}├─nautilus├─nm-applet├─polkit-gnome-au├─restorecond└─{gnome-session}gdm-user-switchgnome-keyring-d───2*[{gnome-keyring-}]gnome-screensavgnome-settings-───{gnome-settings}gnome-terminal─┬─bash───su───bash─┬─dmesg│                  ├─6*[more]│                  ├─2*[ping]│                  ├─pstree│                  └─top├─gnome-pty-helpe└─{gnome-terminal}gnotegvfs-afc-volume───{gvfs-afc-volum}gvfs-gdu-volumegvfs-gphoto2-vogvfsdgvfsd-burngvfsd-metadatagvfsd-trashibus-x11im-settings-dae─┬─ibus-daemon─┬─ibus-engine-pin│             ├─ibus-gconf│             ├─python│             └─{ibus-daemon}└─{im-settings-da}notification-arpulseaudio─┬─gconf-helper└─2*[{pulseaudio}]seahorse-daemontrashappletvmtoolsd───{vmtoolsd}wnck-applet#不带任何参数的pstree命令列出这个系统所有进程的进程状态树
[root@dog ~]# pstree
init─┬─NetworkManager─┬─dhclient│                └─{NetworkManager}├─VGAuthService├─abrtd├─acpid├─atd├─auditd───{auditd}├─automount───4*[{automount}]├─bonobo-activati───{bonobo-activat}├─certmonger├─clock-applet├─console-kit-dae───63*[{console-kit-da}]├─crond├─cupsd├─2*[dbus-daemon───{dbus-daemon}]├─2*[dbus-launch]├─devkit-power-da├─gconf-im-settin├─gconfd-2├─gdm-binary─┬─gdm-simple-slav─┬─Xorg│            │                 ├─gdm-session-wor─┬─gnome-session─┬─abrt-app+│            │                 │                 │               ├─bluetoot+│            │                 │                 │               ├─gdu-noti+│            │                 │                 │               ├─gnome-pa+│            │                 │                 │               ├─gnome-po+│            │                 │                 │               ├─gnome-vo+│            │                 │                 │               ├─gpk-upda+│            │                 │                 │               ├─metacity+│            │                 │                 │               ├─nautilus│            │                 │                 │               ├─nm-applet│            │                 │                 │               ├─polkit-g+│            │                 │                 │               ├─restorec+│            │                 │                 │               └─{gnome-s+│            │                 │                 └─{gdm-session-wo}│            │                 └─{gdm-simple-sla}│            └─{gdm-binary}├─gdm-user-switch├─gnome-keyring-d───2*[{gnome-keyring-}]├─gnome-screensav├─gnome-settings-───{gnome-settings}├─gnome-terminal─┬─bash───su───bash─┬─dmesg│                │                  ├─6*[more]│                │                  ├─2*[ping]│                │                  ├─pstree│                │                  └─top│                ├─gnome-pty-helpe│                └─{gnome-terminal}├─gnote├─gvfs-afc-volume───{gvfs-afc-volum}├─gvfs-gdu-volume├─gvfs-gphoto2-vo├─gvfsd├─gvfsd-burn├─gvfsd-metadata├─gvfsd-trash├─hald─┬─hald-runner─┬─hald-addon-acpi│      │             └─hald-addon-inpu│      └─{hald}├─ibus-x11├─im-settings-dae─┬─ibus-daemon─┬─ibus-engine-pin│                 │             ├─ibus-gconf│                 │             ├─python│                 │             └─{ibus-daemon}│                 └─{im-settings-da}├─master─┬─pickup│        └─qmgr├─mcelog├─5*[mingetty]├─modem-manager├─notification-ar├─polkitd├─pulseaudio─┬─gconf-helper│            └─2*[{pulseaudio}]├─rpc.idmapd├─rpc.statd├─rpcbind├─rsyslogd───3*[{rsyslogd}]├─rtkit-daemon───2*[{rtkit-daemon}]├─seahorse-daemon├─sshd├─trashapplet├─udevd───2*[udevd]├─udisks-daemon─┬─udisks-daemon│               └─{udisks-daemon}├─2*[vmtoolsd───{vmtoolsd}]├─vmware-vmblock-───2*[{vmware-vmblock}]├─wnck-applet├─wpa_supplicant└─xinetd

控制进程的信号(Signal)

  • 在Linux中是使用信号(Signal)来控制进程
  • 一个信号就是可以传送给一个进程的一个消息、进程通过执行信号所要求的操作来响应信号
  • 信号由一个信号号码和一个信号名来标识,每一个信号都有一个相关的操作,常用信号的描述如下:

kill命令

  • 用kill命令把一个信号发送给一个或多个进程
  • kill命令只能终止一个用户所属的那些进程、但是root用户可以使用kill命令终止任何进程
  • kill命令默认向进程发送signal 15、该信号将引起进程以一种有序的方式终止
  • kill命令的语法格式为:kill [-signal] PIDs
#用kill命令以一种有序方式终止PID为3852的进程
[root@dog ~]# kill 3852#使用kill命令杀死PID为3908的进程
[root@dog ~]# kill -9 3908

pkill命令及组合键

  • 使用pkill命令向一个进程发送信号
  • 默认pkill命令向进程发送signal 15的终止信号
  • 与kill命令不同的是pkill允许使用进程名来标识要终止的进程
  • 使用pkill命令终止more命令所对应的进程
  • CTL+C表示SIGINT (2)
    [root@dog ~]# pkill more
  • CTL+Z表示SIGSTOP (19)
#使用pkill命令终止more命令所对应的进程
[root@dog ~]# pkill more

Linux 内核模块及系统监控相关推荐

  1. linux下的系统监控软件,Linux系统监控工具sysstat

    sysstat就有监控CPU使用率.硬盘和网络吞吐数据,对这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率.安全运行服务器的得力助手. Ubuntu Linux系统下安装(见下 ...

  2. Linux系统监控——top命令

    1.top命令显示 top命令显示区分为两个部分,上面是系统统计信息:下面是进程信息. 2.系统统计信息 2.1 第一行 第一行,需要关注的是load avg这行,通过这三个值,我们能看出系统负载的发 ...

  3. Linux CPU、内存监控命令详解

    查看多核CPU命令mpstat -P ALL  和  sar -P ALL  说明:sar -P ALL > aaa.txt   重定向输出内容到文件 aaa.txt top命令经常用来监控li ...

  4. Linux下脚本实战之系统监控

    Linux下脚本实战之系统监控 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.监控系统的CPU.内存.硬盘使用率 二.脚本内容 #!/bin/bash ################# ...

  5. linux 系统监控、诊断工具之 IO wait

    1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...

  6. linux 程序返回值 139,Linux系统监控之ssh登陆自动139邮件短信提醒

    linux系统监控之ssh登陆自动139邮件短信提醒 Linux系统监控非常重要,互联网的网络的安全是一个非常重要的问题,很多时候,我们会出于安全考虑,希望服务器在有用户通过ssh登陆时能自动向管理员 ...

  7. linux 车载视频监控,基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文.docx...

    基于Linux平台车载视频监控系统研发-计算机科学与技术专业论文 目录 HYPERLINK \l "_bookmark0" 第一章 绪论1 HYPERLINK \l "_ ...

  8. MetricBeat(win/linux)部署 系统CPU内存等资源情况监控

    目录 1.下载 2.linux系统监控 ​3.启用模块 4.windows系统监控 1.下载 下载MetricBeat的linux和windows版本 https://artifacts.elasti ...

  9. linux系统监控命令汇总

    零.Linux系统监控命令速查手册 命令 功能应用 用法举例     free 查看内存使用情况,包括物理内存和虚拟内存 free -h或free -m     vmstat 对系统的整体情况进行统计 ...

最新文章

  1. 【c语言】蓝桥杯算法训练 1的个数
  2. sas宏中如何跳出%do循环
  3. 【JFreeChart】JFreeChart—输出柱形图
  4. Excel之抽奖器实现
  5. eclipse加载maven工程提示pom.xml无法解析org.apache.maven.plugins:maven-resources-plugin:2.4.3解决方案...
  6. Makefile.am和makefile.in生成Makefile
  7. Matlab中图例注释函数legend详解
  8. java ftp 上传文件到服务器,java实现ftp上传文件到服务器
  9. NOX+ Open vSwitch安装相关命令【备份】
  10. Mybatis 的日志管理
  11. linux 定时执行某个任务,多个时间段
  12. ExtJS EditorGridPanel 示例之JSON格式Store前后台增删改查
  13. opencv出现0x75BA812F 处(位于 Project1.exe 中)有未经处理的异常: Microsoft C++ 异常的一种可行解决方案
  14. 燃烧远征怀旧服务器人数小程序,《魔兽世界怀旧服》燃烧的远征制作人访谈 详细讲解新版本...
  15. UIPATH 浏览器在新标签页中执行操作
  16. 云计算机短网址,最新官方新浪短网址生成API接口与在线短网址缩短工具分享
  17. C语言中#define宏中省略号作用,例子:#define __stringify_1(x...) #x
  18. caffe中的多种loss函数
  19. Latex常用语法结构
  20. 是的,诺基亚还“活着”,并推出了新款平板电脑!

热门文章

  1. 游戏‘微信打飞机’ 第三课
  2. TL431介绍及其应用电路
  3. Problem F: 凹凸四边形
  4. 钉钉授权时报获取钉钉用户信息失败,失败原因:访问ip不在白名单之中的解决办法
  5. 【数值溢出】从二进制的角度看数值溢出
  6. OI中的组合数与二项式
  7. eprom是计算机内存吗,EEPROM和EPROM的区别在哪里?
  8. ubuntu 100M 到 10M
  9. 摔倒检测+yolov5
  10. c语言上机怎么弄一元一次方程,怎么在c语言中编写一元一次方程