linux中进程相关命令,linux进程管理相关命令

进程管理相关命令

pstree: 命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

选项:

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;

-c:不使用精简标示法;

-G:使用VT100终端机的列绘图字符;

-h:列出树状图时,特别标明现在执行的程序;

-H:此参数的效果和指定"-h"参数类似,但特别标明指定的程序;

-l:采用长列格式显示树状图;

-n:用程序识别码排序。预设是以程序名称来排序;

-p:显示程序识别码;

-u:显示用户名称;

-U:使用UTF-8列绘图字符;

-V:显示版本信息。

pstree 常用 选项:

显示当前所有进程的进程号和进程id

[root@lvs data]# pstree -p

init(1)─┬─abrtd(1813)

├─acpid(1525)

├─atd(1855)

├─auditd(1412)───{auditd}(1413)

├─console-kit-dae(1891)─┬─{console-kit-da}(1892)

│ ├─{console-kit-da}(1893)

│ ├─{console-kit-da}(1894)

│ ├─{console-kit-da}(1895)

│ ├─{console-kit-da}(1896)

│ ├─{console-kit-da}(1897)

│ ├─{console-kit-da}(1898)

│ ├─{console-kit-da}(1899)

│ ├─{console-kit-da}(1900)

│ ├─{console-kit-da}(1901)

│ ├─{console-kit-da}(1902)

│ ├─{console-kit-da}(1903)

│ ├─{console-kit-da}(1904)

│ ├─{console-kit-da}(1905)

│ ├─{console-kit-da}(1906)

│ ├─{console-kit-da}(1907)

显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示。

[root@lvs data]# pstree -a

init

├─abrtd

├─acpid

├─atd

├─auditd

│ └─{auditd}

├─console-kit-dae --no-daemon

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

│ ├─{console-kit-da}

ps: 命令报告当前系统的进程状态

Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

ps 支持三种风格的格式

1、UNIX options, which may be grouped and must be preceded by a dash.

UNIX选项,可以分组,并且必须以 '-' 开头。

如 -A -e

2、BSD options, which may be grouped and must not be used with a dash.

BSD选项,可以分组,不能和 '-' 一起使用。

如 a

3、GNU long options, which are preceded by two dashes.

GNU长选项,前面有两个'--'。

如 --help

选项:

a 选项包括所有终端中的进程

x 选项包括不链接终端的进程

u 选项显示进程所有者的信息

f 选项显示进程树,相当于 --forest

k|--sort 属性 对属性排序,属性前加- 表示倒序

o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

L 显示支持的属性列表

-C cmdlist 指定命令,多个命令用,分隔

-L 显示线程

-e: 显示所有进程,相当于-A

-f: 显示完整格式程序信息

-F: 显示更完整格式的进程信息

-H: 以进程层级格式显示进程相关信息

-u userlist 指定有效的用户ID或名称

-U userlist 指定真正的用户ID或名称

-g gid或groupname 指定有效的gid或组名称

-G gid或groupname 指定真正的gid或组名称

-p pid 显示指pid的进程

--ppid pid 显示属于pid的子进程

-M 显示SELinux信息,相当于Z

ps输出属性

ce0fd4e942bf5aa49f0a99a443966db1.png

VSZ: Virtual memory SiZe,虚拟内存集,线性内存

RSS: ReSident Size, 物理内存使用数

ni: nice值

pri: priority 优先级

psr: processor CPU编号

rtprio: 实时优先级

STAT:进程状态

R:running

S: interruptable sleeping

D: uninterruptable sleeping

T: stopped

Z: zombie

+: 前台进程

l: 多线程进程

L:内存分页并带锁

N:低优先级进程

<:>

s: session leader,会话(子进程)发起者

常用组合命令:

[root@lvs ~]# ps aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.0 19352 1640 ? Ss Aug27 0:01 /sbin/init

root 2 0.0 0.0 0 0 ? S Aug27 0:00 [kthreadd]

root 3 0.0 0.0 0 0 ? S Aug27 0:00 [migration/0]

root 4 0.0 0.0 0 0 ? S Aug27 0:00 [ksoftirqd/0]

root 5 0.0 0.0 0 0 ? S Aug27 0:00 [stopper/0]

root 6 0.0 0.0 0 0 ? S Aug27 0:00 [watchdog/0]

root 7 0.0 0.0 0 0 ? S Aug27 0:00 [migration/1]

root 8 0.0 0.0 0 0 ? S Aug27 0:00 [stopper/1]

root 9 0.0 0.0 0 0 ? S Aug27 0:00 [ksoftirqd/1]

root 10 0.0 0.0 0 0 ? S Aug27 0:00 [watchdog/1]

root 11 0.0 0.0 0 0 ? S Aug27 0:07 [events/0]

root 12 0.1 0.0 0 0 ? S Aug27 2:42 [events/1]

root 13 0.0 0.0 0 0 ? S Aug27 0:00 [events/0]

root 14 0.0 0.0 0 0 ? S Aug27 0:00 [events/1]

[root@lvs ~]# ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 Aug27 ? 00:00:01 /sbin/init

root 2 0 0 Aug27 ? 00:00:00 [kthreadd]

root 3 2 0 Aug27 ? 00:00:00 [migration/0]

root 4 2 0 Aug27 ? 00:00:00 [ksoftirqd/0]

root 5 2 0 Aug27 ? 00:00:00 [stopper/0]

root 6 2 0 Aug27 ? 00:00:00 [watchdog/0]

root 7 2 0 Aug27 ? 00:00:00 [migration/1]

root 8 2 0 Aug27 ? 00:00:00 [stopper/1]

root 9 2 0 Aug27 ? 00:00:00 [ksoftirqd/1]

root 10 2 0 Aug27 ? 00:00:00 [watchdog/1]

root 11 2 0 Aug27 ? 00:00:07 [events/0]

root 12 2 0 Aug27 ? 00:02:42 [events/1]

root 13 2 0 Aug27 ? 00:00:00 [events/0]

[root@lvs ~]# ps -eFH

UID PID PPID C SZ RSS PSR STIME TTY TIME CMD

root 2 0 0 0 0 1 Aug27 ? 00:00:00 [kthreadd]

root 3 2 0 0 0 0 Aug27 ? 00:00:00 [migration/0]

root 4 2 0 0 0 0 Aug27 ? 00:00:00 [ksoftirqd/0]

root 5 2 0 0 0 0 Aug27 ? 00:00:00 [stopper/0]

root 6 2 0 0 0 0 Aug27 ? 00:00:00 [watchdog/0]

root 7 2 0 0 0 1 Aug27 ? 00:00:00 [migration/1]

root 8 2 0 0 0 1 Aug27 ? 00:00:00 [stopper/1]

root 9 2 0 0 0 1 Aug27 ? 00:00:00 [ksoftirqd/1]

root 10 2 0 0 0 1 Aug27 ? 00:00:00 [watchdog/1]

root 11 2 0 0 0 0 Aug27 ? 00:00:07 [events/0]

root 12 2 0 0 0 1 Aug27 ? 00:02:43 [events/1]

root 13 2 0 0 0 0 Aug27 ? 00:00:00 [events/0]

root 14 2 0 0 0 1 Aug27 ? 00:00:00 [events/1]

root 15 2 0 0 0 0 Aug27 ? 00:00:00 [events_long/0]

root 16 2 0 0 0 1 Aug27 ? 00:00:00 [events_long/1]

自定义显示pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm,不过需要配合O选项来

[root@lvs ~]# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm

PID TID CLS RTPRIO NI PRI PSR %CPU STAT COMMAND

1 1 TS - 0 19 0 0.0 Ss init

2 2 TS - 0 19 1 0.0 S kthreadd

3 3 FF 99 - 139 0 0.0 S migration/0

4 4 TS - 0 19 0 0.0 S ksoftirqd/0

5 5 FF 99 - 139 0 0.0 S stopper/0

6 6 FF 99 - 139 0 0.0 S watchdog/0

7 7 FF 99 - 139 1 0.0 S migration/1

8 8 FF 99 - 139 1 0.0 S stopper/1

9 9 TS - 0 19 1 0.0 S ksoftirqd/1

10 10 FF 99 - 139 1 0.0 S watchdog/1

11 11 TS - 0 19 0 0.0 S events/0

12 12 TS - 0 19 1 0.1 S events/1

13 13 TS - 0 19 0 0.0 S events/0

14 14 TS - 0 19 1 0.0 S events/1

[root@lvs ~]# ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

STAT EUID RUID TT TPGID SESS PGRP PPID PID %CPU COMMAND

Ss 0 0 ? -1 1 1 0 1 0.0 init

S 0 0 ? -1 0 0 0 2 0.0 kthreadd

S 0 0 ? -1 0 0 2 3 0.0 migration/0

S 0 0 ? -1 0 0 2 4 0.0 ksoftirqd/0

S 0 0 ? -1 0 0 2 5 0.0 stopper/0

S 0 0 ? -1 0 0 2 6 0.0 watchdog/0

S 0 0 ? -1 0 0 2 7 0.0 migration/1

S 0 0 ? -1 0 0 2 8 0.0 stopper/1

S 0 0 ? -1 0 0 2 9 0.0 ksoftirqd/1

S 0 0 ? -1 0 0 2 10 0.0 watchdog/1

S 0 0 ? -1 0 0 2 11 0.0 events/0

S 0 0 ? -1 0 0 2 12 0.1 events/1

S 0 0 ? -1 0 0 2 13 0.0 events/0

S 0 0 ? -1 0 0 2 14 0.0 events/1

S 0 0 ? -1 0 0 2 15 0.0 events_long/0

S 0 0 ? -1 0 0 2 16 0.0 events_long/1

S 0 0 ? -1 0 0 2 17 0.0 events_power_ef

S 0 0 ? -1 0 0 2 18 0.0 events_power_ef

以进程树显示系统中的进程如何相互链接:

[root@lvs ~]# ps -e --forest

PID TTY TIME CMD

2 ? 00:00:00 kthreadd

3 ? 00:00:00 \_ migration/0

4 ? 00:00:00 \_ ksoftirqd/0

5 ? 00:00:00 \_ stopper/0

6 ? 00:00:00 \_ watchdog/0

7 ? 00:00:00 \_ migration/1

8 ? 00:00:00 \_ stopper/1

9 ? 00:00:00 \_ ksoftirqd/1

10 ? 00:00:00 \_ watchdog/1

11 ? 00:00:07 \_ events/0

12 ? 00:02:44 \_ events/1

13 ? 00:00:00 \_ events/0

14 ? 00:00:00 \_ events/1

15 ? 00:00:00 \_ events_long/0

16 ? 00:00:00 \_ events_long/1

以进程树显示指定的进程

[root@lvs ~]# ps -f --forest -C sshd

UID PID PPID C STIME TTY TIME CMD

root 1720 1 0 Aug27 ? 00:00:00 /usr/sbin/sshd

root 2581 1720 0 Aug27 ? 00:00:02 \_ sshd: root@pts/0,pts/1

[root@lvs ~]# ps -ef --forest | grep -v grep | grep sshd

root 1720 1 0 Aug27 ? 00:00:00 /usr/sbin/sshd

root 2581 1720 0 Aug27 ? 00:00:02 \_ sshd: root@pts/0,pts/1

查看进程的PID,PPID,用户名和命令:

[root@lvs ~]# ps -eo pid,ppid,user,cmd

PID PPID USER CMD

1 0 root /sbin/init

2 0 root [kthreadd]

3 2 root [migration/0]

4 2 root [ksoftirqd/0]

5 2 root [stopper/0]

6 2 root [watchdog/0]

7 2 root [migration/1]

8 2 root [stopper/1]

9 2 root [ksoftirqd/1]

要显示一个进程的所有线程,将显示LWP(轻量级进程)以及NLWP(轻量级进程数)列:

[root@lvs ~]# ps -fl -C httpd

F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD

1 S root 9174 1 0 80 0 - 44381 poll_s 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9249 9174 0 80 0 - 44415 sys_se 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9250 9174 0 80 0 - 44381 sys_se 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9251 9174 0 80 0 - 44415 sys_se 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9252 9174 0 80 0 - 44381 inet_c 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9253 9174 0 80 0 - 44415 sys_se 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9254 9174 0 80 0 - 44415 sys_se 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9255 9174 0 80 0 - 44381 sys_se 09:52 ? 00:00:00 /usr/sbin/

5 S apache 9256 9174 0 80 0 - 44381 sys_se 09:52 ? 00:00:00 /usr/sbin/

[root@lvs ~]#

使用其PID查找进程名称:

[root@lvs ~]# ps -p 8982 -o comm=

su

查找指定进程名所有的所属PID,在编写需要从std输出或文件读取PID的脚本时这个参数很有用:

[root@lvs ~]# ps -C htttpd,sshd -o pid=

1720

2581

列出所有格式说明符

[root@lvs ~]# ps L

%cpu %CPU

%mem %MEM

_left LLLLLLLL

_left2 L2L2L2L2

_right RRRRRRRR

_right2 R2R2R2R2

_unlimited U

_unlimited2 U2

alarm ALARM

args COMMAND

atime TIME

blocked BLOCKED

bsdstart START

bsdtime TIME

c C

.....

检查一个进程的执行时间

[root@lvs ~]# ps -eo comm,etime,user| grep httpd

httpd 14:13 root

httpd 13:57 apache

httpd 13:57 apache

httpd 13:57 apache

httpd 13:57 apache

httpd 13:57 apache

httpd 13:57 apache

httpd 13:57 apache

httpd 13:57 apache

查找占用最多内存和CPU的进程:

[root@lvs ~]# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu |head

PID PPID CMD %MEM %CPU

9374 8983 dd if=/dev/zero of=/dev/nul 0.0 99.2

12 2 [events/1] 0.0 0.1

1 0 /sbin/init 0.0 0.0

2 0 [kthreadd] 0.0 0.0

3 2 [migration/0] 0.0 0.0

4 2 [ksoftirqd/0] 0.0 0.0

5 2 [stopper/0] 0.0 0.0

6 2 [watchdog/0] 0.0 0.0

7 2 [migration/1] 0.0 0.0

用户定义的格式显示安全信息

[root@lvs ~]# ps -eo euser,ruser,suser,fuser,f,comm,label

EUSER RUSER SUSER FUSER F COMMAND LABEL

root root root root 4 init system_u:system_r:init_t:s0

root root root root 1 kthreadd system_u:system_r:kernel_t:s0

root root root root 1 migration/0 system_u:system_r:kernel_t:s0

root root root root 1 ksoftirqd/0 system_u:system_r:kernel_t:s0

root root root root 1 stopper/0 system_u:system_r:kernel_t:s0

root root root root 1 watchdog/0 system_u:system_r:kernel_t:s0

root root root root 1 migration/1 system_u:system_r:kernel_t:s0

root root root root 1 stopper/1 system_u:system_r:kernel_t:s0

root root root root 1 ksoftirqd/1 system_u:system_r:kernel_t:s0

root root root root 1 watchdog/1 system_u:system_r:kernel_t:s0

root root root root 1 events/0 system_u:system_r:kernel_t:s0

root root root root 1 events/1 system_u:system_r:kernel_t:s0

root root root root 1 events/0 system_u:system_r:kernel_t:s0

root root root root 1 events/1 system_u:system_r:kernel_t:s0

root root root root 1 events_long/0 system_u:system_r:kernel_t:s0

调整优先级命令

nice 命令

nice [option] [command [arg]...]

没修改之前sleep 默认nice值为0

[root@lvs ~]# ps axo pid,comm,ni

.....

12556 sleep 0

12557 ps 0

在命令执行前修改nice值

[cobbler@lvs ~]$ nice -n 10 sleep 100

修改后的nice值

[root@lvs ~]# ps axo pid,comm,ni

12553 sleep 10

12554 ps 0

pgrep  搜索进程命令

最灵活:ps 选项 | 其它命令

支持是用正则表达式

pgrep [options] pattern

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal: 与指定终端相关的进程

-l: 显示进程名

-a: 显示完整格式的进程名

-P pid: 显示指定进程的子进程

查找以ht开头的任意进程

[root@lvs ~]# pgrep -l ^ht.*

9174 httpd

9249 httpd

9250 httpd

9251 httpd

9252 httpd

9253 httpd

9254 httpd

9255 httpd

9256 httpd

查找以pass开头的进程

[root@lvs ~]# pgrep -l ^pass

12687 passwd

查找以哪个终端的进程

[root@lvs ~]# pgrep -lt pts/0

2585 bash

uptime 命令

显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

系统平均负载:

指在特定时间间隔内运行队列中的平均进程数

[root@lvs ~]# uptime

11:08:21 up 1 day, 2:33, 4 users, load average: 0.00, 0.00, 0.01

top 实时动态地查看系统的整体运行情况

top:有许多内置命令:

排序:

P:以占据的CPU百分比,%CPU

M:占据内存百分比,%MEM

T:累积占据CPU时长,TIME+

首部信息显示:

uptime信息:l命令

tasks及cpu信息:t命令

cpu分别显示:1 (数字)

memory信息:m命令

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:W

栏位信息简介:

us:用户空间

sy:内核空间

ni:调整nice时间

id:空闲

wa:等待IO时间

hi:硬中断

si:软中断(模式切换)

st:虚拟机偷走的时间

选项:

-d # 指定刷新时间间隔,默认为3秒

-b 全部显示所有进程

-n # 刷新多少次后退出

-H 线程模式,示例:top -H -p `pidof mysqld`

指定刷新时间为1秒,默认为3秒,显示全部进程

[root@lvs ~]# top -d 1 -b

内存管理和查看命令

内存空间使用状态

free  [option]

选项:

-b 以字节为单位

-m 以MB为单位

-g 以GB为单位

-h 易读格式

-o 不显示-/+buffers/cache行

-t 显示RAM + swap的总和

-s n 刷新间隔为n秒

-c n 刷新n次后即退出

# 能易读格式 -h

[root@lvs ~]# free -h

total used free shared buffers cached

Mem: 1.8G 1.7G 145M 332K 18M 1.5G

-/+ buffers/cache: 163M 1.7G

Swap: 3.0G 0B 3.0G

[root@lvs ~]#

# -b 以字节为单位

[root@lvs ~]# free -b

total used free shared buffers cached

Mem: 1950887936 1798332416 152555520 339968 19484672 1607409664

-/+ buffers/cache: 171438080 1779449856

Swap: 3246387200 0 3246387200

[root@lvs ~]#

指定刷新间隔1秒

[root@lvs ~]# free -h -s 1

total used free shared buffers cached

Mem: 1.8G 1.7G 145M 332K 18M 1.5G

-/+ buffers/cache: 163M 1.7G

Swap: 3.0G 0B 3.0G

指定刷新次数就退出

[root@lvs ~]# free -h -s 2 -c 2

total used free shared buffers cached

Mem: 1.8G 1.7G 145M 332K 18M 1.5G

-/+ buffers/cache: 163M 1.7G

Swap: 3.0G 0B 3.0G

total used free shared buffers cached

Mem: 1.8G 1.7G 145M 332K 18M 1.5G

-/+ buffers/cache: 163M 1.7G

Swap: 3.0G 0B 3.0G

[root@lvs ~]#

65f9708533b02336ba1ffc999a4c7ed7.png

vmstat命令: vmstat [options] [delay [count]]

26491ad321131c757878c86457374d58.png

procs:

r:可运行(正运行或等待运行)进程的个数,和核心数有关

b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)

memory:

swpd: 交换内存的使用总量

free:空闲物理内存总量

buffer:用于buffer的内存总量

cache:用于cache的内存总量

swap:

si:从磁盘交换进内存的数据速率(kb/s)

so:从内存交换至磁盘的数据速率(kb/s)

io:

bi:从块设备读入数据到系统的速率(kb/s)

bo: 保存数据至块设备的速率

system:

in: interrupts 中断速率,包括时钟

cs: context switch 进程切换速率

cpu:

us:Time spent running non-kernel code

sy: Time spent running kernel code

id: Time spent idle. Linux 2.5.41前,包括IO-wait time.

wa: Time spent waiting for IO. 2.5.41前,包括in idle.

st: Time stolen from a virtual machine. 2.6.11前, unknown.

统计内存数据

[root@lvs ~]# vmstat -s

1905164 total memory

1756192 used memory

126336 active memory

1488324 inactive memory

148972 free memory

19204 buffer memory

1569768 swap cache

3170300 total swap

0 used swap

3170300 free swap

37687 non-nice user cpu ticks

50 nice user cpu ticks

98054 system cpu ticks

21566338 idle cpu ticks

2842 IO-wait cpu ticks

37 IRQ cpu ticks

7100 softirq cpu ticks

0 stolen cpu ticks

2362662 pages paged in

2276586 pages paged out

0 pages swapped in

0 pages swapped out

3285297 interrupts

2187566 CPU context switches

1535330071 boot time

13649 forks

iostat:统计CPU和设备IO信息

示例:iostat 1 10

[root@lvs ~]# iostat 1 10

Linux 2.6.32-754.el6.x86_64 (lvs) 08/28/2018 _x86_64_ (2 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

0.17 0.00 0.48 0.01 0.00 99.33

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

scd0 0.00 0.01 0.00 572 0

sda 0.46 43.41 41.87 4721080 4553236

dm-0 0.00 0.02 0.01 1786 1136

avg-cpu: %user %nice %system %iowait %steal %idle

0.00 0.00 0.50 0.00 0.00 99.50

pmap [options] pid [...]

-x: 显示详细格式的信息

示例:pmap 12757

另外一种实现:

cat /proc/PID/maps

[root@lvs ~]# pmap -x 12757

12757: vim test

Address Kbytes RSS Dirty Mode Mapping

0000000000400000 2140 1200 0 r-x-- vim

0000000000817000 92 80 60 rw--- vim

000000000082e000 44 36 36 rw--- [ anon ]

0000000000a2d000 40 8 0 rw--- vim

00000000012c9000 2160 2024 2024 rw--- [ anon ]

00000034cbe00000 128 116 0 r-x-- ld-2.12.so

00000034cc020000 4 4 4 r---- ld-2.12.so

00000034cc021000 4 4 4 rw--- ld-2.12.so

00000034cc022000 4 4 4 rw--- [ anon ]

00000034cc200000 8 8 0 r-x-- libdl-2.12.so

00000034cc202000 2048 0 0 ----- libdl-2.12.so

00000034cc402000 4 4 4 r---- libdl-2.12.so

00000034cc403000 4 4 4 rw--- libdl-2.12.so

00000034cc600000 1580 520 0 r-x-- libc-2.12.so

.....

[root@lvs ~]# cat /proc/12757/maps

00400000-00617000 r-xp 00000000 08:02 789328 /usr/bin/vim

00817000-0082e000 rw-p 00217000 08:02 789328 /usr/bin/vim

0082e000-00839000 rw-p 00000000 00:00 0

00a2d000-00a37000 rw-p 0022d000 08:02 789328 /usr/bin/vim

012c9000-014e5000 rw-p 00000000 00:00 0 [heap]

34cbe00000-34cbe20000 r-xp 00000000 08:02 653214 /lib64/ld-2.12.so

34cc020000-34cc021000 r--p 00020000 08:02 653214 /lib64/ld-2.12.so

34cc021000-34cc022000 rw-p 00021000 08:02 653214 /lib64/ld-2.12.so

34cc022000-34cc023000 rw-p 00000000 00:00 0

34cc200000-34cc202000 r-xp 00000000 08:02 653217 /lib64/libdl-2.12.so

EPEL源监控工具

htop命令: top的升级版,功能更强大

选项:

-d #: 指定延迟时间;

-u UserName: 仅显示指定用户的进程

-s COLUME: 以指定字段进行排序

子命令:

s: 跟踪选定进程的系统调用

l: 显示选定进程打开的文件列表

a:将选定的进程绑定至某指定CPU核心

t: 显示进程树

abaaf13c050025242133d91e1040796d.png

glances命令:

语法: glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]

a Sort processes automatically l Show/hide logs

c Sort processes by CPU% b Bytes or bits for network I/O

m Sort processes by MEM% w Delete warning logs

p Sort processes by name x Delete warning and critical logs

i Sort processes by I/O rate 1 Global CPU or per-CPU stats

d Show/hide disk I/O stats h Show/hide this help screen

f Show/hide file system stats t View network I/O as combination

n Show/hide network stats u View cumulative network I/O

s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)

y Show/hide hddtemp stats

常用选项:

-b: 以Byte为单位显示网卡数据速率

-d: 关闭磁盘I/O模块

-f /path/to/somefile: 设定输入文件位置

-o {HTML|CSV}:输出格式

-m: 禁用mount模块

-n: 禁用网络模块

-t #: 延迟时间间隔

-1:每个CPU的相关数据单独显示

glances是以C/S模式运行的

服务器模式:

glances -s -B IPADDR

也可以不用指定监听哪个地址 默认全部监听

IPADDR: 指明监听的本机哪个地址

服务器上监听192.168.50.130这个地址上

[root@lvs ~]# glances -s -B 192.168.50.130

Glances server is running on 192.168.50.130:61209

客户端

[root@centos6 ~]#glances -c 192.168.50.130

lvs (CentOS 6.10 64bit / Linux 2.6.32-754.el6.x86_64) Uptime: 1 day, 6:48:53

CPU 3.1% Load 2-core Mem 9.3% active: 137M Swap 0.0%

user: 1.1% 1 min: 0.17 total: 1.82G inactive: 1.39G total: 3.02G

system: 2.0% 5 min: 0.42 used: 174M buffers: 20.7M used: 0

idle: 96.9% 15 min: 0.22 free: 1.65G cached: 1.47G free: 3.02G

Network Rx/s Tx/s Tasks 131 (200 thr), 1 run, 130 slp, 0 oth

eth0 3Kb 113Kb

eth1 0b 0b VIRT RES CPU% MEM% PID NAME

lo 0b 0b 205M 12M 4.7 0.6 13829 glances

0 0 0.3 0.0 12 events/1

Disk I/O In/s Out/s 19M 2M 0.0 0.1 1 /sbin/init

dm-0 0 0 0 0 0.0 0.0 2 kthreadd

sda1 0 0 0 0 0.0 0.0 3 migration/0

sda2 0 0 0 0 0.0 0.0 4 ksoftirqd/0

sda3 0 0 0 0 0.0 0.0 5 stopper/0

sda4 0 0 0 0 0.0 0.0 6 watchdog/0

sda5 0 0 0 0 0.0 0.0 7 migration/1

0 0 0.0 0.0 8 stopper/1

Mount Used Total 0 0 0.0 0.0 9 ksoftirqd/1

/ 3.29G 19.1G 0 0 0.0 0.0 10 watchdog/1

Connected to 192.168.50.130 | Press 'h' for help 2018-08-28 05:38:40

dstat 命令: 系统资源统计,代替vmstat,iostat

dstat [-afv] [options..] [delay [count]]

-c: 显示cpu相关信息

-C #,#,...,total

-d: 显示disk相关信息

-D total,sda,sdb,...

-g:显示page相关统计数据

-m: 显示memory相关统计数据

-n: 显示network相关统计数据

-p: 显示process相关统计数据

-r: 显示io请求相关的统计数据

-s: 显示swapped相关的统计数据

--tcp

--udp

--unix

--raw

--socket

--ipc

--top-cpu:显示最占用CPU的进程

--top-io: 显示最占用io的进程

--top-mem: 显示最占用内存的进程

--top-latency: 显示延迟最大的进程

[root@lvs ~]# 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 1 99 0 0 0| 21k 21k| 0 0 | 0 0 | 48 20

0 1 99 0 0 0| 0 0 | 41M 41M| 0 0 | 10k 44

0 0 99 0 0 1| 0 0 | 41M 41M| 0 0 | 10k 44

0 0 100 0 0 0| 0 0 | 41M 41M| 0 0 | 10k 49

0 0 100 0 0 0| 0 1024k| 41M 41M| 0 0 | 10k 51

1 0 99 0 0 0| 0 80k| 39M 39M| 0 0 |9416 50

0 1 99 0 0 1| 0 0 | 39M 38M| 0 0 |8684 43

0 0 100 0 0 0| 0 0 | 39M 39M| 0 0 |9262 43

0 0 100 0 0 0| 0 0 | 41M 41M| 0 0 | 10k 42

0 0 99 0 0 1| 0 192k| 41M 41M| 0 0 | 10k 47

0 0 100 0 0 0| 0 0 | 38M 38M| 0 0 |9070 41

0 0 99 0 0 1| 0 0 | 40M 40M| 0 0 |9825 41

0 0 100 0 0 0| 0 0 | 40M 40M| 0 0 | 10k 41

0 0 100 0 0 0| 0 0 | 41M 41M| 0 0 |9975 43

0 1 99 0 0 0| 0 0 | 41M 41M| 0 0 | 10k 48

0 0 100 0 0 0| 0 0 | 40M 40M| 0 0 |9576 47

lsof: list open files查看当前系统文件的工具。

命令参数:

-a:列出打开文件存在的进程

-c:列出指定进程所打开的文件

-g:列出GID号进程详情

-d:列出占用该文件号的进程

+d:列出目录下被打开的文件

+D:递归列出目录下被打开的文件

-n:列出使用NFS的文件

-i:列出符合条件的进程(4、6、协议、:端口、 @ip )

-p:列出指定进程号所打开的文件

-u:列出UID号进程详情

-h:显示帮助信息

-v:显示版本信息。

-n: 不反向解析网络名字

进程管理

查看由登录用户启动而非系统启动的进程

[root@lvs ~]# lsof /dev/pts/0

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 2585 root 0u CHR 136,0 0t0 3 /dev/pts/0

bash 2585 root 1u CHR 136,0 0t0 3 /dev/pts/0

bash 2585 root 2u CHR 136,0 0t0 3 /dev/pts/0

bash 2585 root 255u CHR 136,0 0t0 3 /dev/pts/0

glances 13829 root 0u CHR 136,0 0t0 3 /dev/pts/0

glances 13829 root 1u CHR 136,0 0t0 3 /dev/pts/0

glances 13829 root 2u CHR 136,0 0t0 3 /dev/pts/0

指定进程号,查看该进程打开的文件;

[root@lvs ~]# lsof -p 8967

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 8967 root cwd DIR 8,2 4096 1044483 /root

bash 8967 root rtd DIR 8,2 4096 2 /

bash 8967 root txt REG 8,2 942200 915863 /bin/bash

bash 8967 root mem REG 8,2 161776 653214 /lib64/ld-2.12.so

bash 8967 root mem REG 8,2 23088 653217 /lib64/libdl-2.12.so

bash 8967 root mem REG 8,2 1930416 653215 /lib64/libc-2.12.so

bash 8967 root mem REG 8,2 134792 653253 /lib64/libtinfo.so.5.7

bash 8967 root mem REG 8,2 99174448 784755 /usr/lib/locale/locale-archive

bash 8967 root mem REG 8,2 66432 652834 /lib64/libnss_files-2.12.so

bash 8967 root mem REG 8,2 26060 785015 /usr/lib64/gconv/gconv-modules.cache

....

文件管理

指定程序打开的文件

[root@lvs ~]# lsof -c httpd

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

httpd 9174 root cwd DIR 8,2 4096 2 /

httpd 9174 root rtd DIR 8,2 4096 2 /

httpd 9174 root txt REG 8,2 367136 798455 /usr/sbin/httpd

httpd 9174 root mem REG 8,2 9488 798371 /usr/lib64/apr-util-1/apr_ldap-1.so

httpd 9174 root mem REG 8,2 27896 652832 /lib64/libnss_dns-2.12.so

httpd 9174 root mem REG 8,2 66432 652834 /lib64/libnss_files-2.12.so

httpd 9174 root mem REG 8,2 10416 798451 /usr/lib64/httpd/modules/mod_version.so

httpd 9174 root mem REG 8,2 27312 798410 /usr/lib64/httpd/modules/mod_cgi.so

httpd 9174 root mem REG 8,2 22992 798417 /usr/lib64/httpd/modules/mod_disk_cache.so

httpd 9174 root mem REG 8,2 10384 798447 /usr/lib64/httpd/modules/mod_suexec.so

指定用户打开的文件

[root@lvs ~]# lsof -u root | more

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

init 1 root cwd DIR 8,2 4096 2 /

init 1 root rtd DIR 8,2 4096 2 /

init 1 root txt REG 8,2 150352 1051071 /sbin/init

init 1 root mem REG 8,2 66432 652834 /lib64/libns

s_files-2.12.so

init 1 root mem REG 8,2 1930416 653215 /lib64/libc-

2.12.so

init 1 root DEL REG 8,2 653235 /lib64/libgc

c_s-4.4.7-20120601.so.1.#prelink#.Ek7K1Q

init 1 root mem REG 8,2 47760 653223 /lib64/librt

-2.12.so

init 1 root mem REG 8,2 146592 653222 /lib64/libpt

hread-2.12.so

init 1 root mem REG 8,2 268240 652925 /lib64/libdb

us-1.so.3.4.0

init 1 root mem REG 8,2 39896 653003 /lib64/libni

h-dbus.so.1.0.0

init 1 root mem REG 8,2 106016 653005 /lib64/libni

h.so.1.0.0

init 1 root mem REG 8,2 161776 653214 /lib64/ld-2.

12.so

init 1 root 0u CHR 1,3 0t0 4601 /dev/null

.....

指定目录下被打开的文件

参数+D为递归列出目录下被打开的文件,参数+d为列出目录下被打开的文件

[root@lvs ~]# lsof +D /var/log/

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

auditd 1412 root 5w REG 8,2 514162 392909 /var/log/audit/audit.log

rsyslogd 1434 root 1w REG 8,2 163242 392981 /var/log/messages

rsyslogd 1434 root 2w REG 8,2 1526 392982 /var/log/secure

rsyslogd 1434 root 4w REG 8,2 335 392980 /var/log/maillog

rsyslogd 1434 root 5w REG 8,2 29024 392979 /var/log/cron

rsyslogd 1434 root 6w REG 8,2 2628 391700 /var/log/boot.log

console-k 1891 root 9w REG 8,2 2053 391701 /var/log/ConsoleKit/history

httpd 9174 root 2w REG 8,2 709 393074 /var/log/httpd/error_log

httpd 9174 root 7w REG 8,2 859 393083 /var/log/httpd/access_log

httpd 9249 apache 2w REG 8,2 709 393074 /var/log/httpd/error_log

[root@lvs ~]# lsof +d /var/log/

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rsyslogd 1434 root 1w REG 8,2 163242 392981 /var/log/messages

rsyslogd 1434 root 2w REG 8,2 1526 392982 /var/log/secure

rsyslogd 1434 root 4w REG 8,2 335 392980 /var/log/maillog

rsyslogd 1434 root 5w REG 8,2 29024 392979 /var/log/cron

rsyslogd 1434 root 6w REG 8,2 2628 391700 /var/log/boot.log

网络管理

查看所有网络连接

[root@lvs ~]# lsof -i -n

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1720 root 3u IPv4 14010 0t0 TCP *:ssh (LISTEN)

sshd 1720 root 4u IPv6 14015 0t0 TCP *:ssh (LISTEN)

master 1799 root 12u IPv4 14220 0t0 TCP 127.0.0.1:smtp (LISTEN)

master 1799 root 13u IPv6 14221 0t0 TCP [::1]:smtp (LISTEN)

sshd 2581 root 3u IPv4 16010 0t0 TCP 192.168.50.130:ssh->192.168.50.1:49430 (ESTABLISHED)

dhclient 5549 root 6u IPv4 22052 0t0 UDP *:bootpc

dhclient 5670 root 6u IPv4 22186 0t0 UDP *:bootpc

httpd 9174 root 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9249 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9250 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9251 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9252 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9253 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9254 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9255 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9256 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

ssh 13753 root 3r IPv4 52325 0t0 TCP 192.168.50.130:35156->192.168.50.128:ssh (ESTABLISHED)

glances 13829 root 3u IPv4 52565 0t0 TCP 192.168.50.130:61209 (LISTEN)

# 查看指定IP网络连接

[root@lvs ~]# lsof -i@192.168.50.130

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 2581 root 3u IPv4 16010 0t0 TCP 192.168.50.130:ssh->192.168.50.1:49430 (ESTABLISHED)

ssh 13753 root 3r IPv4 52325 0t0 TCP 192.168.50.130:35156->192.168.50.128:ssh (ESTABLISHED)

glances 13829 root 3u IPv4 52565 0t0 TCP 192.168.50.130:61209 (LISTEN)

查看指定端口连接情况

[root@lvs ~]# lsof -i :80 -n

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

httpd 9174 root 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9249 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9250 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9251 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9252 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9253 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9254 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9255 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

httpd 9256 apache 4u IPv6 29668 0t0 TCP *:http (LISTEN)

查看指定进程打开的网络连接数

-i、-a、-p等,-i查看网络连接情况,-a查看存在的进程,-p指定进程

[root@lvs ~]# lsof -i -n -a -p 13829

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

glances 13829 root 3u IPv4 52565 0t0 TCP 192.168.50.130:61209 (LISTEN)

查看指定状态的网络连接

-n:no host names, -P:no port names,-i TCP指定协议,-s指定协议状态通过多个参数可以清晰的查看网络连接情况、协议连接情况等

[root@lvs ~]# lsof -n -P -i TCP -s TCP:ESTABLISHED

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 2581 root 3u IPv4 16010 0t0 TCP 192.168.50.130:22->192.168.50.1:49430 (ESTABLISHED)

ssh 13753 root 3r IPv4 52325 0t0 TCP 192.168.50.130:35156->192.168.50.128:22 (ESTABLISHED)

glances 13829 root 4u IPv4 55271 0t0 TCP 192.168.50.130:61209->192.168.50.128:41386 (ESTABLISHED)

lsof 还可以用来恢复删除的文件,不过不要重启系统,否则就没戏了

1、查找/var/log/messages文件

[root@lvs ~]# lsof | grep /var/log/messages

rsyslogd 1434 root 1w REG 8,2 163779 392981 /var/log/messages

2、删除/var/log/messages文件

[root@lvs ~]# rm -rf /var/log/messages

3、在用查找命令发现/var/log/messages被标记为deleted

[root@lvs ~]# lsof | grep /var/log/messages

rsyslogd 1434 root 1w REG 8,2 163779 392981 /var/log/messages (deleted)

4、找到被删的文件的进程号,到/proc/下指定进程号目录下

[root@lvs ~]# cat /proc/1434/fd/1

Aug 28 01:58:09 lvs dhclient[5670]: DHCPACK from 192.168.112.254 (xid=0x119e82b7)

Aug 28 01:58:11 lvs dhclient[5670]: bound to 192.168.112.128 -- renewal in 849 seconds.

Aug 28 02:05:48 lvs dhclient[5549]: DHCPREQUEST on eth0 to 192.168.50.254 port 67 (xid=0x57ab2d56)

Aug 28 02:05:48 lvs dhclient[5549]: DHCPACK from 192.168.50.254 (xid=0x57ab2d56)

Aug 28 02:05:50 lvs dhclient[5549]: bound to 192.168.50.130 -- renewal in 880 seconds.

Aug 28 02:12:20 lvs dhclient[5670]: DHCPREQUEST on eth1 to 192.168.112.254 port 67 (xid=0x119e82b7)

5、重定向到/var/log/messages里面

[root@lvs ~]# cat /proc/1434/fd/1 > /var/log/messages

6、对比大小,恢复完成

[root@lvs ~]# ll /var/log/messages

-rw-r--r--. 1 root root 163779 Aug 28 16:02 /var/log/messages

kill命令:

向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写

显示当前系统可用信号: kill –l,trap -l

[root@lvs ~]# kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

[root@lvs ~]# trap -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

常用信号:man 7 signal

1) SIGHUP: 无须关闭进程而让其重读配置文件

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

3) SIGQUIT:相当于ctrl+\

9) SIGKILL: 强制杀死正在运行的进程

15) SIGTERM:终止正在运行的进程

18) SIGCONT:继续运行

19) SIGSTOP:后台休眠

指定信号的方法:

(1) 信号的数字标识:1, 2, 9

(2) 信号完整名称:SIGHUP

(3) 信号的简写名称:HUP

按PID:kill [-SIGNAL] pid …

kill –n SIGNAL pid;kill –s SIGNAL pid

按名称:killall [-SIGNAL] comm…

按模式:pkill [options] pattern

-SIGNAL

-u uid: effective user,生效者

-U uid: real user,真正发起运行命令者

-t terminal: 与指定终端相关的进程

-l: 显示进程名(pgrep可用)

-a: 显示完整格式的进程名(pgrep可用)

-P pid: 显示指定进程的子进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值