进程管理-查看进程
ps 命令
ps aux:查看系统中所有进程,使用 BSD 操作系统格式,注意 aux 前面没有 -
[root@iZwz91sneajs2ji49vo4wxZ routes]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 125780 3136 ? Ss 6月03 17:55 /usr/lib/systemd/systemd --systemroot 2 0.0 0.0 0 0 ? S 6月03 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 6月03 1:10 [ksoftirqd/0]root 5 0.0 0.0 0 0 ? S< 6月03 0:00 [kworker/0:0H]root 7 0.0 0.0 0 0 ? S 6月03 0:12 [migration/0]root 8 0.0 0.0 0 0 ? S 6月03 0:00 [rcu_bh]root 9 0.0 0.0 0 0 ? S 6月03 34:26 [rcu_sched]root 10 0.0 0.0 0 0 ? S< 6月03 0:00 [lru-add-drain]root 11 0.0 0.0 0 0 ? S 6月03 0:17 [watchdog/0]root 12 0.0 0.0 0 0 ? S 6月03 0:09 [watchdog/1]root 741 0.0 0.0 110104 132 tty1 Ss+ 6月03 0:00 /sbin/agetty --noclear tty1 linuxroot 742 0.0 0.0 110104 132 ttyS0 Ss+ 6月03 0:00 /sbin/agetty --keep-baud 115200,38root 6462 0.0 0.0 157320 6068 ? Ss 13:41 0:00 sshd: root@pts/0root 6500 0.0 0.0 115684 2184 pts/0 Ss 13:41 0:00 -bash...
各列含义:USER:该进程是哪个用户产生的PID:该进程 ID%CPU:该进程 CPU 占用率%MEM:该进程物理内存占用率VSZ:该进程占用虚拟内存大小RSS:该进程实际占用物理内存大小TTY:该进程是哪个终端中运行的。tty1-tty7 代表本地控制台终端,tty1-tty6 是本地命令行终端,tty7 是图形界面终端,pts/0-255 代表虚拟终端STAT:进程状态。R运行,S睡眠,T停止状态,s包含子进程,+位于后台START:进程启动时间TIME:该进程占用 CPU 的运算时长COMMAND:产生此进程的启动命令
pstree 命令
pstree:查看进程树
[root@iZwz91sneajs2ji49vo4wxZ routes]# pstreesystemd─┬─AliSecGuard───6*[{AliSecGuard}]├─AliYunDun───23*[{AliYunDun}]├─AliYunDunUpdate───3*[{AliYunDunUpdate}]├─BT-Panel───2*[{BT-Panel}]├─BT-Task───7*[{BT-Task}]├─CmsGoAgent.linu─┬─exe───12*[{exe}]│ └─5*[{CmsGoAgent.linu}]├─2*[agetty]├─aliyun-service───2*[{aliyun-service}]├─atd...
top 命令
top:查看系统健康状态利器
上图含义:top - 16:42:08 up 130 days, 2:56, 1 user, load average: 0.10, 0.09, 0.11
| 内容 | 含义 | 
|---|---|
| top - 16:42:08 | 当前系统时间是 16:42:08 | 
| up 130 days, 2:56 | 当前服务器已开机 130 天 2 小时 51 分 | 
| 1 user | 当前有 1 个用户连接了服务器 | 
| load average: 0.10, 0.09, 0.11 | 服务器 1 分钟之前平均负载 0.10,5 分钟之前平均负载 0.09,15 分钟之前平均负载 0.11,平均负载指的是 CPU 占用率,数值跟 CPU 核数有关 | 
Tasks: 137 total, 1 running, 136 sleeping, 0 stopped, 0 zombie
| 内容 | 含义 | 
|---|---|
| Tasks: 137 total | 系统中有 137 个进程 | 
| 1 running | 1 个进程正在运行 | 
| 136 sleeping | 136 个睡眠进程 | 
| 0 stopped | 0 个停止的进程 | 
| 0 zombie | 0 个僵尸进程 | 
%Cpu(s): 1.5 us, 0.8 sy, 0.0 ni, 97.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
| 内容 | 含义 | 
|---|---|
| %Cpu(s): 1.5 us | 用户模式占用的 CPU 百分比为 1.5% | 
| 0.8 sy | 系统模式占用的 CPU 百分比为 0.8% | 
| 0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比为 0.0% | 
| 97.7 id | 空闲的 CPU 百分比为 97.7% | 
| 0.0 wa | 等待输入/输出的进程占用 CPU 百分比为 0.0% | 
| 0.0 hi | 硬中断请求服务器占用的 CPU 百分比为 0.0% | 
| 0.0 si | 软中断请求服务器占用的 CPU 百分比为 0.0% | 
| 0.0 st | st(Steal time)虚拟时间百分比,当使用虚拟机时,虚拟机等待实际 CPU 的时间百分比为 0.0% | 
参数:-d:隔几秒刷新一次,默认 3 秒-b:使用批处理模式输出。一般和 -n 一起使用-n:指定 top 命令的执行次数,一般和 -b 一起使用
交互功能:? 或 h:显示交互模式的帮助P:以 CPU 使用率排序,默认是此选项M:以内存的使用率排序N:以 PID 排序q:退出
进程管理-杀死进程
kill 命令
kill [信号] 进程id ...:一般用于杀死进程kill -9 pid ...:强制杀死进程,支持多个kill -1 pid ...:重启进程,平滑重启服务,用于 Nginx 或 Apache 等
killall 命令
killall [选项][信号] 进程名
选项:-i:交互式,询问是否要杀死某个进程-I:忽略进程名的大小写killall -9 httpd:杀死所有 Apache 进程killall -i -9 httpd:交互式杀死所有 Apache 进程
[root@iZwz91sneajs2ji49vo4wxZ ~]# killall -i -9 php信号 php(2927) ? (y/N) N信号 php(2928) ? (y/N) N信号 php(2929) ? (y/N) N[root@iZwz91sneajs2ji49vo4wxZ iep-test.ca163.com]# ps -ef|grep ieproot 6476 6237 5 20:01 pts/1 00:00:30 java -jar target/iep.jarroot 6718 6237 1 20:03 pts/1 00:00:04 java -jar target/iep.jarroot 7756 6237 0 20:10 pts/1 00:00:00 grep --color=auto iep[root@iZwz91sneajs2ji49vo4wxZ iep-test.ca163.com]# killall -i -9 java信号 java(6476) ? (y/N) y信号 java(6718) ? (y/N) y信号 java(16450) ? (y/N) n[1]- 已杀死 java -jar target/iep.jar[2]+ 已杀死 java -jar target/iep.jar
w 命令
查看所有终端用户
[root@iZwz91sneajs2ji49vo4wxZ ~]# w12:18:13 up 6 days, 22 min, 3 users, load average: 0.00, 0.04, 0.09USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 119.33.33.142 11:53 5.00s 0.01s 0.00s wroot pts/1 119.33.33.142 12:00 15:01 33.25s 0.00s -bashroot pts/2 119.33.33.142 12:15 5.00s 0.00s 0.00s -bash
pkill 命令
pkill [选项][信号] 进程名:功能与 killall 相似
选项:-t:按照终端号踢出 linux 用户,只有 root 拥有些权限
终端1(把终端 2 踢下线):
[root@iZwz91sneajs2ji49vo4wxZ ~]# w12:20:44 up 6 days, 24 min, 3 users, load average: 0.04, 0.04, 0.08USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 119.33.33.142 11:53 4.00s 0.01s 0.00s wroot pts/1 119.33.33.142 12:00 17:32 33.49s 0.00s -bashroot pts/2 119.33.33.142 12:20 12.00s 0.00s 0.00s -bash[root@iZwz91sneajs2ji49vo4wxZ ~]# pkill -t -9 pts/2
终端2(被踢下线):
[root@iZwz91sneajs2ji49vo4wxZ ~]# w12:20:38 up 6 days, 24 min, 3 users, load average: 0.05, 0.04, 0.09USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot pts/0 119.33.33.142 11:53 22.00s 0.01s 0.01s -bashroot pts/1 119.33.33.142 12:00 17:26 33.46s 0.00s -bashroot pts/2 119.33.33.142 12:20 6.00s 0.00s 0.00s w[root@iZwz91sneajs2ji49vo4wxZ ~]# Connection to 120.77.155.61 closed.
进程优先级
Linux 是一个多用户、多任务的操作系统,但是 CPU 在同一个时钟周期只能运算一个指令。进程优先级在一定程序上决定了每个进程运行的先后顺序,一般都不用去修改进程优先级,修改的作用不大,只有硬件开发可能需要修改优先级ps -le | more 查看优先级信息
[root@iZwz91sneajs2ji49vo4wxZ ~]# ps -le | moreF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD4 S 0 1 0 0 80 0 - 12936 ep_pol ? 00:01:12 systemd1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd1 S 0 4 2 0 60 -20 - 0 worker ? 00:00:00 kworker/0:0H1 S 0 6 2 0 80 0 - 0 smpboo ? 00:00:06 ksoftirqd/01 S 0 7 2 0 -40 - - 0 smpboo ? 00:00:02 migration/01 S 0 8 2 0 80 0 - 0 rcu_gp ? 00:00:00 rcu_bh1 S 0 9 2 0 80 0 - 0 rcu_gp ? 00:01:41 rcu_sched1 S 0 10 2 0 60 -20 - 0 rescue ? 00:00:00 lru-add-drain5 S 0 11 2 0 -40 - - 0 smpboo ? 00:00:01 watchdog/05 S 0 12 2 0 -40 - - 0 smpboo ? 00:00:00 watchdog/11 S 0 13 2 0 -40 - - 0 smpboo ? 00:00:01 migration/11 S 0 14 2 0 80 0 - 0 smpboo ? 00:00:04 ksoftirqd/11 S 0 16 2 0 60 -20 - 0 worker ? 00:00:00 kworker/1:0H
PRI 代表 Priority,NI 代表 Nice,这两个数值都代表进程优先级,数值越小优先级越高
用户只能修改 NI 的值,NI 的范围是 -20 到 19
普通用户调整的 NI 值的范围是 0 到 19,而且只能调整自己的进程
普通用户只能调高 NI 的值,不能降低
root 用户才能设定进程 NI 值为负值,而且可以调整所有用户的进程
PRI(最终值)= PRI(原始值)+ NI,只有 PRI 最终值才代码进程的优先级
