Linux 内核模块及系统监控

    技术2022-07-11  80

    内核模块及系统监控

    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 ~]# 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虚拟文件系统的特色

    可使用/proc获取内核配置信息或对内核进行配置一个虚拟文件系统,所有文件只存在内存中、并不存到硬盘上系统重启后所有更改过的内容自动消失、又回到初始设置利用/proc可显示进程的信息、内存资源、硬件设备等/proc中有一些子目录、如/proc/PID/子目录中包含了所有进程利用子目录中文件可修改网络置和内存设置或内核的一些参数所有对/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命令完成的工作: 列出所有当前的系统设置:sysctl –a从/etc/sysctl.conf文件中重新载入系统设置:sysctl –p动态设置一个在/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 ~]# free 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等待的时间。 #使用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 [选项] [时间间隔] [刷新显示信息的次数]几个比较常用的选项为: -d:显示硬盘所传输的数据和服务时间、即包括每个硬盘-p:包含每个分区的统计信息、p是partition的第1个字母-c:只显示CPU的使用信息-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 %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 #*使用以下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 %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命令列出目前系统上被调度运行的所有进程

    #不带任何参数的ps命令仅列出所在的shell所调度运行的进程(不会列出任何系统的守护进程) [root@dog ~]# ps 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 ~]# 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-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 #不带任何参数的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 moreCTL+Z表示SIGSTOP (19) #使用pkill命令终止more命令所对应的进程 [root@dog ~]# pkill more
    Processed: 0.010, SQL: 11