首页 > 代码库 > linux进程管理
linux进程管理
ps: 查看linux当前时程状态
ps [options]
ps支持三种版本的选项:
unix 风格选项:ps –aux
bsd风格选项: ps aux
gnu风格选项: ps --pid 1
-A : 查看所有进程,同-e
-a : 查看所有进程,除了session leader
x : 用于和-a组合,列出所有进程
常用命令组合:
查看每一个进程
ps –ef
ps –eF
ps –ely
查看每一个进程(使用BSD风格)
ps ax
ps axu
查看进程树
ps –ejH
ps –axjf
查看线程信息
ps –eLf
ps axms
查看以root用户运行的每个进程
ps -Uroot -uroot u
以用户自定义格式显示每个进程
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan
#ps axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 17128 1316 ? Ss Aug21 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S Aug21 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Aug21 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S Aug21 0:06 [ksoftirqd/0]root 509 0.0 0.0 11104 1276 ? S<s Aug21 0:00 /sbin/udevd -d
root 575 0.0 0.0 11100 1228 ? S< Sep01 0:00 /sbin/udevd -d
root 706 0.0 0.0 11100 1220 ? S< Sep01 0:00 /sbin/udevd -d
root 796 0.0 0.0 0 0 ? S Aug21 0:12 [vmmemctl]
root 1082 0.0 0.0 0 0 ? S Aug21 0:00 [kdmflush]
root 1117 0.0 0.0 0 0 ? S Aug21 0:00 [jbd2/sda1-8]
root 1118 0.0 0.0 0 0 ? S Aug21 0:00 [ext4-dio-unwrit]
root 1119 0.0 0.0 0 0 ? S Aug21 0:00 [jbd2/dm-2-8]
root 1120 0.0 0.0 0 0 ? S Aug21 0:00 [ext4-dio-unwrit]
root 1315 0.0 0.0 0 0 ? S Aug21 0:19 [flush-253:0]
root 1377 0.0 0.0 329048 2296 ? Sl Aug21 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
rpc 1420 0.0 0.0 18976 900 ? Ss Aug21 0:01 rpcbind
dbus 1435 0.0 0.0 21804 1324 ? Ss Aug21 0:01 dbus-daemon --system
root 1445 0.0 0.1 84328 5680 ? Ss Aug21 0:03 NetworkManager --pid-file=/var/run/NetworkManager/NetworkManager.pid
root 1449 0.0 0.0 58064 2180 ? S Aug21 0:00 /usr/sbin/modem-manager
rpcuser 1464 0.0 0.0 23348 1328 ? Ss Aug21 0:00 rpc.statd
root 1508 0.0 0.0 0 0 ? S Aug21 0:00 [rpciod/0]
root 1524 0.0 0.0 23092 504 ? Ss Aug21 0:00 rpc.idmapd
root 1547 0.0 0.0 44972 660 ? Ss Aug21 0:00 /usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -B -u -f /var/log/wpa_supplicant.log -P /var/run/wpa_supplicant.pid
root 1569 0.0 0.0 189200 2868 ? Ss Aug21 0:00 cupsd -C /etc/cups/cupsd.conf
root 1581 0.0 0.0 4080 644 ? Ss Aug21 0:00 /usr/sbin/acpid
68 1590 0.0 0.0 38924 3568 ? Ssl Aug21 0:07 hald
root 1591 0.0 0.0 20328 1180 ? S Aug21 0:00 hald-runner
root 1647 0.0 0.0 22448 1080 ? S Aug21 0:00 hald-addon-input: Listening on /dev/input/event0 /dev/input/event2
68 1651 0.0 0.0 17936 1016 ? S Aug21 0:00 hald-addon-acpi: listening on acpid socket /var/run/acpid.socket
root 1691 0.0 0.1 206140 5288 ? Ss Aug21 0:41 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 1692 0.0 0.1 206140 5012 ? S Aug21 0:00 php-fpm: pool www
www 1693 0.0 0.1 206140 5012 ? S Aug21 0:00 php-fpm: pool www
root 1711 0.0 0.0 64400 1212 ? Ss Aug21 0:00 /usr/sbin/sshd
root 1719 0.0 0.0 22096 948 ? Ss Aug21 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
ntp 1727 0.0 0.0 26496 1904 ? Ss Aug21 0:02 ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
root 1803 0.3 6.4 1013428 262396 ? Sl Aug21 58:22 prosvc
root 1890 0.0 0.0 110308 924 ? Ss Aug21 0:00 /usr/sbin/abrtd
root 1898 0.0 0.0 117240 1328 ? Ss Aug21 0:07 crond
root 1909 0.0 0.0 21456 580 ? Ss Aug21 0:00 /usr/sbin/atd
root 1967 0.0 0.0 62204 576 ? Ss Aug21 0:03 /usr/sbin/certmonger -S -p /var/run/certmonger.pid
root 1982 0.0 0.0 81384 2844 ? Ss Aug21 0:00 login -- root
root 1984 0.0 0.0 4064 528 tty2 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty2
root 1986 0.0 0.0 4064 528 tty3 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty3
root 1988 0.0 0.0 4064 524 tty4 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty4
root 1990 0.0 0.0 4064 524 tty5 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty5
root 1992 0.0 0.0 4064 528 tty6 Ss+ Aug21 0:00 /sbin/mingetty /dev/tty6
VSZ:进程占用的虚拟内存大小(kb)RSS:进程占用的物理内存大小(kb)
STAT:状态码
D: 不可中断的睡眠进程(比如说IO)
R: 正在运行的或可运行的进程(在运行队列中)
S: 可中断的睡眠进程(等待事件完成)
T: 已停止的进程(比如说Ctrl+Z停止的进程)
X: 已终止的进程
Z:“zombie”僵尸进程,Defunct process
< : 高优先级进程
N : 低优先级进程
L : 有分页被锁进内存的进程
s : session leader进程
l : 有多线程的进程
+ : 前台进程组
pstree:显示进程树
[root@unp ~]# pstree
init─┬─.ruby.bin───9*[{.ruby.bin}]
├─NetworkManager
├─abrtd
├─acpid
├─atd
├─auditd───{auditd}
├─certmonger
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─cupsd
├─dbus-daemon
├─hald─┬─hald-runner─┬─hald-addon-acpi
│ │ └─hald-addon-inpu
│ └─{hald}
├─login───bash
├─5*[mingetty]
├─modem-manager
├─mysqld_safe───mysqld───15*[{mysqld}]
├─nginx───4*[nginx]
├─ntpd
├─php-fpm───2*[php-fpm]
├─polkitd
├─rpc.idmapd
├─rpc.statd
├─rpcbind
├─rsyslogd───4*[{rsyslogd}]
├─sshd─┬─sshd─┬─bash───mysql
│ │ └─bash
│ └─sshd─┬─bash───pstree
│ └─bash───vim
├─udevd───2*[udevd]
├─wpa_supplicant
└─xinetd
pgrep sshd列出指定进程的PID
[root@unp ~]# pgrep sshd
1711
2058
2713
pidof 查看指定程序的pid
[root@unp ~]# pidof sshd
2713 2058 1711
top: 用于实时显示进程信息
top - 10:28:20 up 12 days, 54 min, 5 users, load average: 0.00, 0.00, 0.00
Tasks: 117 total, 1 running, 115 sleeping, 1 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 4057140k total, 1835332k used, 2221808k free, 280036k buffers
Swap: 4128760k total, 0k used, 4128760k free, 1021048k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1803 root 20 0 989m 256m 5700 S 0.3 6.5 58:32.80 .ruby.bin
1 root 20 0 17128 1316 1068 S 0.0 0.0 0:01.06 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:06.64 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
6 root RT 0 0 0 0 S 0.0 0.0 0:02.31 watchdog/0
7 root 20 0 0 0 0 S 0.0 0.0 1:07.83 events/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
13 root 20 0 0 0 0 S 0.0 0.0 0:11.58 sync_supers
14 root 20 0 0 0 0 S 0.0 0.0 0:05.08 bdi-default
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
16 root 20 0 0 0 0 S 0.0 0.0 0:10.62 kblockd/0
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpid
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_hotplug
20 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ata/0
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ata_aux
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd
24 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kseriod
25 root 20 0 0 0 0 S 0.0 0.0 0:00.00 md/0
26 root 20 0 0 0 0 S 0.0 0.0 0:00.00 md_misc/0
27 root 20 0 0 0 0 S 0.0 0.0 0:00.49 khungtaskd
28 root 20 0 0 0 0 S 0.0 0.0 0:01.05 kswapd0
29 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
30 root 39 19 0 0 0 S 0.0 0.0 0:03.64 khugepaged
31 root 20 0 0 0 0 S 0.0 0.0 0:00.00 aio/0
32 root 20 0 0 0 0 S 0.0 0.0 0:00.00 crypto/0
37 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthrotld/0
38 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pciehpd
40 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kpsmoused
41 root 20 0 0 0 0 S 0.0 0.0 0:00.00 usbhid_resumer
72 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kstriped
263 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_0
265 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_1
273 root 20 0 0 0 0 S 0.0 0.0 0:21.37 mpt_poll_0
274 root 20 0 0 0 0 S 0.0 0.0 0:00.00 mpt/0M:按内存百分比大小排序
P:按CPU占用百分比大小排序
T:按CPU累积时间大小排序
l: 是否显示负载信息
t: 是否显示cpu和进程的统计信息
m: 是否显示内存摘要信息
q: 退出
k: 输入一个进程id,回车终止一个进程
s: 改变top刷新时间间隔
htop交互式进程查看器
vmstat 查看虚拟内存状态
[root@unp ~]# 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 2221560 280040 1021236 0 0 3 13 19 30 0 0 99 0 0
procs:
r:等待运行的进程个数
b:阻塞的进程个数
memory:
swpd: 使用的虚拟内存的大小(kb)
free: 空闲的物理内存大小
buff: 已使用的物理内存的缓存大小
cache: 已使用的物理内存的高速缓冲区大小
swap:
si: 从磁盘读入交换分区的大小
so: 从交换分区写入磁盘的大小
io:
bi:块设备接收到的数据大小(通常是写)
bo:块设备发送的数据大小(通常是读)
system:
in: cpu每秒的中断次数
cs: cpu每秒的上下文切换次数(比如,线程切换,系统调用)
cpu:
us:用户cpu时间
sy:系统cpu时间
id:空闲cpu时间
wa:等待io的cpu时间
vmstat –d: 显示磁盘状态
[root@unp ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
ram2 0 0 0 0 0 0 0 0 0 0
ram3 0 0 0 0 0 0 0 0 0 0
ram4 0 0 0 0 0 0 0 0 0 0
ram5 0 0 0 0 0 0 0 0 0 0
ram6 0 0 0 0 0 0 0 0 0 0
ram7 0 0 0 0 0 0 0 0 0 0
ram8 0 0 0 0 0 0 0 0 0 0
ram9 0 0 0 0 0 0 0 0 0 0
ram10 0 0 0 0 0 0 0 0 0 0
ram11 0 0 0 0 0 0 0 0 0 0
ram12 0 0 0 0 0 0 0 0 0 0
ram13 0 0 0 0 0 0 0 0 0 0
ram14 0 0 0 0 0 0 0 0 0 0
ram15 0 0 0 0 0 0 0 0 0 0
loop0 0 0 0 0 0 0 0 0 0 0
loop1 0 0 0 0 0 0 0 0 0 0
loop2 0 0 0 0 0 0 0 0 0 0
loop3 0 0 0 0 0 0 0 0 0 0
loop4 0 0 0 0 0 0 0 0 0 0
loop5 0 0 0 0 0 0 0 0 0 0
loop6 0 0 0 0 0 0 0 0 0 0
loop7 0 0 0 0 0 0 0 0 0 0
sr0 367 1096 5852 1129 0 0 0 0 0 1
sda 83945 22568 5369754 82959 550099 2587381 25102338 711942 0 233
sdb 3323 8273 24120 514 4388 425103 429512 25046 0 1
sdc 2709 167 23210 377 1204 29953 805000 51734 0 2
sdd 1856 128 16024 220 32 0 264 6 0 0
sde 6858 13997 49078 931 454 40587 66286 1713 0 0
dm-0 102868 0 5340826 204709 3137978 0 25591504 55113403 0 230
dm-1 719 0 5752 1560 7 0 56 21 0 1
dm-2 1076 0 8602 1582 518 0 4144 362 0 0
dm-3 1734 0 1962 1703 0 0 0 0 0 0
vmstat 2 10 每两秒刷新一次,显示10次
[root@unp ~]# vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2221064 280040 1021708 0 0 3 13 19 30 0 0 99 0 0
0 0 0 2221056 280040 1021708 0 0 0 0 29 51 0 0 100 0 0
0 0 0 2221056 280040 1021708 0 0 0 0 25 47 1 0 100 0 0
0 0 0 2221056 280040 1021708 0 0 0 0 26 47 0 0 100 0 0
0 0 0 2221056 280040 1021712 0 0 0 0 31 45 1 0 99 0 0
0 0 0 2221056 280040 1021712 0 0 0 0 25 48 0 0 100 0 0
0 0 0 2221056 280040 1021712 0 0 0 20 28 55 0 0 100 0 0
0 0 0 2221056 280040 1021712 0 0 0 0 26 48 0 0 100 0 0
0 0 0 2221056 280040 1021712 0 0 0 0 26 48 0 0 100 0 0
0 0 0 2221056 280040 1021712 0 0 0 0 24 46 0 0 100 0 0
iostat 报告cpu状态、设备和网各输入输出状态
[root@unp ~]# iostat
Linux 2.6.32-358.el6.x86_64 (unp) 09/02/2014 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
0.42 0.00 0.10 0.01 0.00 99.47
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
scd0 0.00 0.01 0.00 5852 0
sda 0.61 5.15 24.11 5369754 25126922
sdb 0.01 0.02 0.41 24120 429512
sdc 0.00 0.02 0.77 23210 805000
sdd 0.00 0.02 0.00 16024 264
sde 0.01 0.05 0.06 49078 66286
dm-0 3.11 5.12 24.58 5340826 25616088
dm-1 0.00 0.01 0.00 5752 56
dm-2 0.00 0.01 0.00 8602 4144
dm-3 0.00 0.00 0.00 1962 0
cpu利用率报告:
%user: 用户空间cpu时间利用率百分比
%nice: 用户空间cpu时间利用率百分比(拥用nice优先级)
%system: 系统空间CPU时间利用率百分比
%iowait: cpu等待IO所占的百分比
%idle: cpu空闲时间百分比
磁盘利用率报告:
Device: 块设备名
tps: 每秒的IO请求数
Blk_read/s: 每秒从块设备读取的block数量
Blk_wrtn/s: 每秒写入块设备的block数量
Blk_read: 读取block的总数
Blk_wrtn: 写入block的总数
dstat: 用于产生系统资源状态报告,用于替代vmstat和iostat
-c : 启用cpu状态
-C 0,3,total: 包含cpu0 cpu3,total的CPU状态
-d:启用磁盘状态
-g: 启用分页状态
-l:启用负载
-m: 启用内存状态
-n:启用网络状态
-N eth1: 启用eth1网卡的网络状态
-p:启用进程状态
-r:启用io请求状态
-s:启用swap状态
-t:启用时间输出
-y:启用系统状态(CPU中断次数,CPU切换上下文)
--socket:启用socket状态
--tcp:启用tcp状态
--udp:启用udp状态
--fs:启用文件系统状态
--ipc:启用ipc状态
--lock:启用文件锁状态
dstat
[root@unp ~]# dstat
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 99 0 0 0|2685B 13k| 0 0 | 0 0 | 101 194
2 0 98 0 0 0| 0 0 | 60B 826B| 0 0 | 43 43
0 0 100 0 0 0| 0 0 | 60B 346B| 0 0 | 24 45
dstat –socket –tcp --udp显示所有的tcp udp socket连接状态
[root@unp ~]# dstat --socket --tcp --udp
------sockets------ ----tcp-sockets---- --udp--
tot tcp udp raw frg|lis act syn tim clo|lis act
149 8 10 0 0| 11 2 0 0 0| 17 0
149 8 10 0 0| 11 2 0 0 0| 17 0^C
kill:终止一个进程
常用的几个信号:
1: SIGHUP,让程序重读配置文件,而不是重启程序
2: SIGINT,中断信号,Ctrl + c即发送此信号
9: SIGKILL,杀死进程
15: SIGTERM,终止进程
kill –n pid 杀死进程
n为对应的信号数字
linux作业控制:bg fg nohup
linux执行命令的方式有两种:
前台执行:直接在终端输入命令,回车
后台执行:直接在终端输入命令,后跟一个&,回车
通过jobs查看作业号
[root@unp ~]# jobs
[1]+ Stopped vim /tmp/name_list把后台作业移至前台
fg %1
把前台作业移至后台
bg %1
终止作业
kill %1
执行COMMAND &时,当退出当前会话时,作业也会终止,如果希望用户退也终端之后COMMAND在后台继续执行,则需要这样:
nohup COMMAND &
killall:根据进程名称杀死进程
killall sshd:杀死sshd进程
pmap:查看进程的内存映射
[root@unp ~]# pmap `pidof init`
1: /sbin/init
00007f5a2038d000 1580K r-x-- /lib64/libc-2.12.so
00007f5a20518000 2044K ----- /lib64/libc-2.12.so
00007f5a20717000 16K r---- /lib64/libc-2.12.so
00007f5a2071b000 4K rw--- /lib64/libc-2.12.so
00007f5a2071c000 20K rw--- [ anon ]
00007f5a20721000 88K r-x-- /lib64/libgcc_s-4.4.7-20120601.so.1
00007f5a20737000 2044K ----- /lib64/libgcc_s-4.4.7-20120601.so.1
00007f5a20936000 4K rw--- /lib64/libgcc_s-4.4.7-20120601.so.1
00007f5a20937000 28K r-x-- /lib64/librt-2.12.so
00007f5a2093e000 2044K ----- /lib64/librt-2.12.so
00007f5a20b3d000 4K r---- /lib64/librt-2.12.so
00007f5a20b3e000 4K rw--- /lib64/librt-2.12.so
00007f5a20b3f000 92K r-x-- /lib64/libpthread-2.12.so
00007f5a20b56000 2048K ----- /lib64/libpthread-2.12.so
00007f5a20d56000 4K r---- /lib64/libpthread-2.12.so
00007f5a20d57000 4K rw--- /lib64/libpthread-2.12.so
00007f5a20d58000 16K rw--- [ anon ]
00007f5a20d5c000 256K r-x-- /lib64/libdbus-1.so.3.4.0
00007f5a20d9c000 2044K ----- /lib64/libdbus-1.so.3.4.0
00007f5a20f9b000 4K r---- /lib64/libdbus-1.so.3.4.0
00007f5a20f9c000 4K rw--- /lib64/libdbus-1.so.3.4.0
00007f5a20f9d000 36K r-x-- /lib64/libnih-dbus.so.1.0.0
00007f5a20fa6000 2044K ----- /lib64/libnih-dbus.so.1.0.0
00007f5a211a5000 4K r---- /lib64/libnih-dbus.so.1.0.0
00007f5a211a6000 4K rw--- /lib64/libnih-dbus.so.1.0.0
00007f5a211a7000 96K r-x-- /lib64/libnih.so.1.0.0
00007f5a211bf000 2044K ----- /lib64/libnih.so.1.0.0
00007f5a213be000 4K r---- /lib64/libnih.so.1.0.0
00007f5a213bf000 4K rw--- /lib64/libnih.so.1.0.0
00007f5a213c0000 128K r-x-- /lib64/ld-2.12.so
00007f5a215c5000 20K rw--- [ anon ]
00007f5a215de000 4K rw--- [ anon ]
00007f5a215df000 4K r---- /lib64/ld-2.12.so
00007f5a215e0000 4K rw--- /lib64/ld-2.12.so
00007f5a215e1000 4K rw--- [ anon ]
00007f5a215e2000 140K r-x-- /sbin/init
00007f5a21804000 8K r---- /sbin/init
00007f5a21806000 4K rw--- /sbin/init
00007f5a2256c000 132K rw--- [ anon ]
00007fffab2fb000 84K rw--- [ stack ]
00007fffab384000 4K r-x-- [ anon ]
ffffffffff600000 4K r-x-- [ anon ]
total 17128K
nice renice修改进程优先级
优先级的范围-20到19,默认nice 为0
未启动进程: nice –n 3 COMMAND
已启动的进程: renice 3 COMMAND
linux进程管理