内核模块及系统监控
Linux系统内核模块Linux系统内核模块功能控制Linux系统内核模块手工装入内核模块/proc虚拟文件系统/proc虚拟文件系统的特色
永久保存/proc/sys下的配置检测和监督硬件设备PCI总线系统监视工具top系统监视工具free系统监控工具iostat带有 -ef选项的ps命令列出目前在系统上被调度运行的所有进程pgrep命令进程监控命令pstree控制进程的信号(Signal)kill命令pkill命令及组合键
Linux系统内核模块
Linux系统内核模块是对Linux小内核的扩充这些模块可在需要时装入也可在不需要时卸载将这些模块与系统核心部分分开的好处是:在没有增加开机时载入内核映像大小的情况下,又允许在需要时扩充内核的功能内核中许多组件可被编译成可动态载入的形式这些编译后的组件就是内核模块内核模块外挂在核心上——这样在增加系统功能的同时却没有增加核心的大小
Linux系统内核模块功能
Linux系统内核模块有两个功能:
提供计算机外围设备的驱动程序提供一些其他的文件系统的支持 在载入内核模块时可以设定内核模块所有的内核模块都存放在/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 ~]
总用量 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 ~]
anaconda
-ks
.cfg install
.log
.syslog 公共的 视频 文档 音乐
install
.log profile
.bak 模板 图片 下载 桌面
[root@dog ~]
2
.6
.32
-754
.29
.2
.el6
.x86_64
[root@dog ~]
/lib
/modules
/2
.6
.32
-754
.29
.2
.el6
.x86_64
/modules
.dep
[root@dog ~]
/lib
/modules
/2
.6
.32
-754
.29
.2
.el6
.x86_64
/modules
.dep: ASCII text
, with very long lines
[root@dog ~]
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虚拟文件系统的特色
可使用/proc获取内核配置信息或对内核进行配置一个虚拟文件系统,所有文件只存在内存中、并不存到硬盘上系统重启后所有更改过的内容自动消失、又回到初始设置利用/proc可显示进程的信息、内存资源、硬件设备等/proc中有一些子目录、如/proc/PID/子目录中包含了所有进程利用子目录中文件可修改网络置和内存设置或内核的一些参数所有对/proc的修改立即生效
可使用命令列出/proc目录中的详细内容可使用cat命令列出内存的详细信息 ls -l /proc cat /proc/meminfo
[root@dog ~]
总用量 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 ~]
MemTotal: 1019796 kB
MemFree: 190128 kB
Buffers: 10664 kB
Cached: 504064 kB
SwapCached: 0 kB
Active: 100668 kB
......
[root@dog ~]
You have new mail in
/var/spool
/mail
/root
[root@dog ~]
1
[root@dog ~]
PING 127
.0
.0
.1
(127
.0
.0
.1
) 56
(84
) bytes of
data.
^Z
[1
]+ Stopped ping 127
.0
.0
.1
[root@dog ~]
[root@dog ~]
0
[root@dog ~]
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命令完成的工作:
列出所有当前的系统设置:sysctl –a从/etc/sysctl.conf文件中重新载入系统设置:sysctl –p动态设置一个在/proc目录中文件的值: sysctl -w kernel.shmmax=2147483648
[root@dog ~]
......
[root@dog ~]
总用量 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 ~]
dog
.super
.com
[root@dog ~]
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 ~]
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 ~]
kernel
.shmmax = 2147483648
[root@dog ~]
2147483648
检测和监督硬件设备
系统使用klogd服务将系统启动过程中屏幕显示的信息写入到内存的一个环形缓冲区中当环形缓冲区被写满后系统将把环形缓冲区中的信息写到/var/log/dmesg日志文件中可使用dmesg命令来查看环形缓冲区中的信息也可通过/var/log/dmesg中内容来查看这些信息
[root@dog ~]
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
) )
2020
......
[root@dog ~]
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
) )
T 2020
Command line: ro root=UUID=eaff7b39
-53a1
-4ee8
-8556
-a84550747a0d rd_NO_LUKS KEYB
[root@dog ~]
总用量 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 ~]
-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 ~]
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 ~]
udev_log=
"err"
......
[root@dog ~]
总用量 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 ~]
/etc
/udev
/rules
.d
/50
-udev
.rules: 没有那个文件或目录
[root@dog ~]
ACTION
!=
"add", GOTO=
"pcmciautils_end"
......
PCI总线
PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写PCI是目前个人电脑中使用最广泛的接口,几乎所有的主板产品上都带有这种插槽用/sbin/lspci命令查看目前哪些设备插在PCI插槽中这些PCI信息存放在/proc/bus/pci/子目录中可用ls命令列出/proc/bus/pci/子目录中所有内容
[root@dog ~]
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
)
......
[root@dog ~]
总用量 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
[root@dog ~]
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 ~]
总用量 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
- 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 ~]
total 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等待的时间。
[root@dog ~]
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
[root@dog ~]
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 [选项] [时间间隔] [刷新显示信息的次数]几个比较常用的选项为:
-d:显示硬盘所传输的数据和服务时间、即包括每个硬盘-p:包含每个分区的统计信息、p是partition的第1个字母-c:只显示CPU的使用信息-x:显示扩展的硬盘统计信息、x是extended的缩写
[root@dog ~]
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
%idle
0
.39 0
.00 0
.57 0
.03 0
.00 99
.01
avg
-cpu:
%user
%nice
%system
%iowait
%steal
%idle
0
.00 0
.00 0
.00 0
.00 0
.00 100
.00
avg
-cpu:
%user
%nice
%system
%iowait
%steal
%idle
0
.00 0
.00 0
.00 0
.00 0
.00 100
.00
显示结果列名的简单解释如下:
* tps:表示transfers per second的缩写(每秒钟传输的数量)
* kB_read
/s:每秒钟从硬盘中读出数据的KB数
* kB_wrtn
/s:每秒写入硬盘数据的KB数
* kB_read:从硬盘中读出数据的总KB数
* kB_wrtn:写入硬盘数据的总KB数
[root@dog ~]
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
%idle
0
.39 0
.00 0
.56 0
.03 0
.00 99
.01
Device: 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 43136
avg
-cpu:
%user
%nice
%system
%iowait
%steal
%idle
0
.68 0
.00 0
.00 0
.00 0
.00 99
.32
Device: 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命令列出目前系统上被调度运行的所有进程
[root@dog ~]
PID 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 ~]
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 ~]
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 ~]
2356 klogd
进程监控命令pstree
Linux系统还提供了另一个可能看起来更直观的与进程管理有关的命令、即pstree命令pstree命令将正在运行的进程作为一棵树来显示树的根基可以是一个进程的PID也可以是init(如果在命令中没有参数)
[root@dog ~]
su───bash───more
[root@dog ~]
bash───su───bash───more
[root@dog ~]
ata_sff
/0
[root@dog ~]
bonobo
-activati───
{bonobo
-activat
}
clock
-applet
dbus
-daemon───
{dbus
-daemon
}
dbus
-launch
gconf
-im
-settin
gconfd
-2
gnome
-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
-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
ibus
-x11
im
-settings
-dae─┬─ibus
-daemon─┬─ibus
-engine
-pin
│ ├─ibus
-gconf
│ ├─python
│ └─
{ibus
-daemon
}
└─
{im
-settings
-da
}
notification
-ar
pulseaudio─┬─gconf
-helper
└─2
*[{pulseaudio
}]
seahorse
-daemon
trashapplet
vmtoolsd───
{vmtoolsd
}
wnck
-applet
[root@dog ~]
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
[root@dog ~]
[root@dog ~]
pkill命令及组合键
使用pkill命令向一个进程发送信号默认pkill命令向进程发送signal 15的终止信号与kill命令不同的是pkill允许使用进程名来标识要终止的进程使用pkill命令终止more命令所对应的进程CTL+C表示SIGINT (2) [root@dog ~]# pkill moreCTL+Z表示SIGSTOP (19)
[root@dog ~]