16-Linux进程管理
进程的概念:进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
进程与服务:
计算机中,一个正在执行的程序或命令,被叫做“进程”(process)。
启动之后一只存在、常驻内存的进程,一般被称作“服务”(service)。
命令
ps:查看当前系统进程状态
语法:ps 【选项】
选项:
小技巧:
如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux;
如果想查看进程的父进程 ID 可以使用 ef
案例:
# 案例一:ps aux 组合 [root@192 mnt]# ps aux | grep ps # 连接grep使用 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND # 案例二:ps -ef 组合 [root@192 mnt]# ps -ef UID PID PPID C STIME TTY TIME CMD
ps aux 字段说明:
USER: 该进程是由哪个用户产生的
PID: 进程的 I号
%CPU: 该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源:
%MEM: 该进程占用物理内存的百分比,占用越高,进程越耗费资源:VSZ:该进程占用虚拟内存的大小,单位KB:
RSS: 该进程占用实际物理内存的大小,单位KB:
TTY: 该进程是在哪个终端中运行的。对于 CentOs来说,tty1 是图形化终端,tty2-tty6 是本地的字符界面终端。pts/0-255代表虚拟终端。
STAT: 进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、
Z: 僵尸状态、s:包含子进程、1:多线程、+:前台显示START:该进程的启动时间
TIME: 该进程占用CPU的运算时间,注意不是系统时间
COMMAND: 产生此进程的命令名
ps -ef显示各字段说明:
UID:用户ID
PID:进程 ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算执行优先级会降低:数值越小,表明进程是I/0密集型运算,执行优先级会提高STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU 时间
CMD:启动进程所用的命令和参数
kill:终止进程
语法:kill 【选项】 进程号
选项:-9:表示强迫进程立即停止
案例:
# 案例一:通过进程号杀死指定进程 [root@192 mnt]# kill -9 6703 #这是firefox的一个进程,强制杀死此进程 # 案例二:通过进程名杀死进程 [root@192 mnt]# killall -9 firefox # 杀死进程名包含Firefox的全部进程 [root@192 mnt]# ps -ef | grep firefox root 6894 2353 0 04:40 pts/0 00:00:00 grep --color=auto firefox
pstree:查看进程树
说明:展示树状图
语法:pstree 【选项】
选项:
-p:显示进程的PID
-u:显示进程所属的用户
top:实时监控系统进程状态
语法:top 【选项】
选项:
-d秒数:指定 top 命令每隔几秒更新。默认是3秒在top
-i:使 top 不显示任何闲置或者僵死进程。
-p:通过指定监控进程 ID 来仅仅监控某个进程的状态。
交互命令:
P:以CPU使用率排序,默认就是此项
M:以内存的使用率排序
N:以 PID 排序
q:退出 top
查询结果中各字段的说明:
案例:
[root@192 mnt]# top -d 1 -i # 每秒刷新,并且不显示僵死的进程 top - 04:55:22 up 5:22, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 216 total, 1 running, 215 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 2027896 total, 362804 free, 826948 used, 838144 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1009940 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2311 root 20 0 158856 5568 4236 S 1.0 0.3 0:04.03 sshd 7038 root 20 0 162236 2428 1600 R 1.0 0.1 0:00.04 top
netstat:显示网络状态和端口占用信息
语法:netstat 【选项】
选项:
-a:显示所有正在监听(listen)和未监听的套接字(socket)
-n:拒绝显示别名,能显示数字的全部转化成数字
-l:仅列出在监听的服务状态
-p:表示显示哪个进程在调用
案例:
# 案例一:通过进程号查看sshd进程的网络信息 [root@192 mnt]# netstat -anp | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1054/sshd tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 2311/sshd: root@pts tcp 0 0 192.168.80.100:22 192.168.80.1:59219 ESTABLISHED 2352/sshd: root@not tcp 0 36 192.168.80.100:22 192.168.80.1:59209 ESTABLISHED 2311/sshd: root@pts tcp6 0 0 :::22 :::* LISTEN 1054/sshd tcp6 0 0 ::1:6010 :::* LISTEN 2311/sshd: root@pts unix 2 [ ] DGRAM 35599 2352/sshd: root@not unix 3 [ ] STREAM CONNECTED 22242 1054/sshd unix 2 [ ] DGRAM 34420 2311/sshd: root@pts # 案例二:查看某端口号是否被占用 [root@192 mnt]# netstat -nltp | grep 22 tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1312/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1054/sshd tcp6 0 0 :::22 :::* LISTEN 1054/sshd