一、进程管理
进程: 可执行程序运行后在系统产生的记录,和该进程占用的资源(cpu 内存 网络 磁盘 GPU)
1、静态查询
[root@controller ~]# ps -ef | head //静态查询
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:58 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 14:58 ? 00:00:00 [kthreadd]
root 4 2 0 14:58 ? 00:00:00 [kworker/0:0H]
root 6 2 0 14:58 ? 00:00:00 [ksoftirqd/0]
root 7 2 0 14:58 ? 00:00:00 [migration/0]
root 8 2 0 14:58 ? 00:00:00 [rcu_bh]
root 9 2 0 14:58 ? 00:00:01 [rcu_sched]
root 10 2 0 14:58 ? 00:00:00 [lru-add-drain]
root 11 2 0 14:58 ? 00:00:00 [watchdog/0]
//UID 用户id
//PID 进程id
//PPID 父进程ID
//C 占用CPU的百分比
//STIME 进程启动时间
//TTY 运行终端
//TIME 占用CPU时间
//CMD 程序名
[root@controller ~]# ps aux | head
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 191272 4340 ? Ss 14:58 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 14:58 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 14:58 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 14:58 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 14:58 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 14:58 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 14:58 0:01 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 14:58 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 14:58 0:00 [watchdog/0]
//USER 用户名
//PID 进程ID
//%CPU CPU占用率
//%MEM 内存占用率 memory
//VSZ 虚拟内存
//RSS 实际消耗内存
//TTY 运行终端
//STAT 进程状态
//START 启动时间
//TIME 占用CPU时间
//COMMAND 程序名
2、动态查询
[root@controller ~]# top //动态查询
//输入 P:按照CPU使用率排序
//M:按照内存使用率排序
//数字1: 按照展开CPU核心
top - 19:15:21 up 4:17, 2 users, load average: 0.00, 0.01, 0.05
//当前系统时间 运行时长 登录用户 平均负载: 1分钟 5分钟 15分钟
Tasks: 220 total, 1 running, 219 sleeping, 0 stopped, 0 zombie
//进程总量 1个运行 187个休眠 0个停止 0个僵尸
%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
// 用户态 内核态 nice值调整 空闲率 等待硬盘百分比 硬中断 软中断 虚拟化偷取
KiB Mem : 4026224 total, 2414232 free, 770888 used, 841104 buff/cache
//内存总量 空闲内存 使用内存 缓存 有效内存
KiB Swap: 2097148 total, 2097148 free, 0 used. 2994960 avail Mem
//交换分区 空闲 使用
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
864 rtkit 21 1 198804 1796 1432 S 0.3 0.0 0:00.19 rtkit-daemon
48308 root 20 0 162020 2352 1592 R 0.3 0.1 0:00.03 top
1 root 20 0 191272 4340 2640 S 0.0 0.1 0:01.53 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.06 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:01.21 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:00.06 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/1
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
17 root rt 0 0 0 0 S 0.0 0.0 0:00.06 watchdog/2
//PID 进程id
//USER 用户名
//PR 优先级
//NI nice值
//VIRT 虚拟内存
//RES 实际消耗内存
//SHR 共享内存
//S 进程状态
//%CPU CPU消耗百分比
//%MEM 内存消耗百分比
//TIME+ 占用CPU时间
//COMMAND 程序名
输入P
输入M
输入数字1
二、杀死进程
[root@controller ~]# kill -15 48443
[root@controller ~]# kill -9 48453
[root@controller ~]# pkill vim //杀死所有vim进程
[root@controller ~]# killall vim //杀死所有vim进程
[root@robin ~]# xkill //xshell不可使用
三、进程状态 PROCESS STATE CODES:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped by job control signal
t stopped by debugger during the tracing
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
< high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group
1、前后台切换
Ctrl+Z 将一个于前台运行的命令调至后台
yum install -y xclock
[root@controller ~]# xclock -update 1 //前台运行
Warning: Missing charsets in String to FontSet conversion
[root@controller ~]# xclock -update 1 & //后台运行
[1] 3239
[root@controller ~]# jobs //查询后台进程
[1]+ 运行中 xclock -update 1 &
[root@controller ~]# bg 1 //后台程序运行
bash: bg: 任务 1 已在后台
[root@controller ~]# fg 1 //后台程序调用到前台
xclock -update 1
kill %1 //杀死后台进程
[1]+ 已终止 xclock -update 1
[root@controller ~]# nohup xclock -update 1 & //脱离终端运行
[1] 3348
nohup: 忽略输入并把输出追加到"nohup.out"
[root@controller ~]#
2、nice值(-20~19 值越小优先级越高)
[root@controller ~]# nice -n -20 vim
[root@controller ~]# ps
PID TTY TIME CMD
2678 pts/0 00:00:00 bash
3348 pts/0 00:00:00 xclock
3439 pts/0 00:00:00 ps
[root@controller ~]# renice -10 -p 3348
3348 (进程 ID) 旧优先级为 0,新优先级为 -10
3、CPU相关
[root@controller ~]# uptime
19:54:59 up 26 min, 2 users, load average: 0.08, 0.10, 0.13
[root@controller ~]# mpstat -P ALL
Linux 3.10.0-1062.el7.x86_64 (controller) 2025年01月06日 _x86_64_ (4 CPU)
19时55分31秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
19时55分31秒 all 0.78 0.01 0.58 1.52 0.00 0.04 0.00 0.00 0.00 97.07
19时55分31秒 0 0.68 0.02 0.56 1.52 0.00 0.04 0.00 0.00 0.00 97.18
19时55分31秒 1 1.10 0.01 0.64 1.46 0.00 0.07 0.00 0.00 0.00 96.72
19时55分31秒 2 0.70 0.01 0.52 1.17 0.00 0.03 0.00 0.00 0.00 97.58
19时55分31秒 3 0.64 0.02 0.60 1.93 0.00 0.03 0.00 0.00 0.00 96.79
[root@controller ~]# mpstat -P ALL 1 10 //实时更新
[root@controller ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4 //总核心数
On-line CPU(s) list: 0-3
Thread(s) per core: 1 //一个核心线程数
Core(s) per socket: 1 //一个cpu核心数
座: 4 //有几个cpu
NUMA 节点: 1
厂商 ID: GenuineIntel
CPU 系列: 6
型号: 126
型号名称: Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
步进: 5
CPU MHz: 1190.400
BogoMIPS: 2380.80
超管理器厂商: VMware
虚拟化类型: 完全
L1d 缓存: 48K
L1i 缓存: 32K
L2 缓存: 512K
L3 缓存: 6144K
NUMA 节点0 CPU: 0-3
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid avx512f avx512dq rdseed adx smap avx512ifma clflushopt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 arat avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq md_clear spec_ctrl intel_stibp flu
sh_l1d arch_capabilities
[root@controller ~]# cat /proc/cpuinfo //内存相关
4、内存相关
[root@controller ~]# free -m
total used free shared buff/cache available
Mem: 3931 752 2106 22 1072 2927
Swap: 2047 0 2047
[root@controller ~]# cat /proc/meminfo
5、高级命令
[root@controller ~]# tac /etc/passwd //上下颠倒
[root@controller ~]# rev /etc/passwd //左右颠倒
6、统计行数
1 wc命令
[root@controller ~]# wc -l /etc/passwd //统计行数
[root@controller ~]# wc -w aa.txt //统计单词数
[root@controller ~]# wc -c aa.txt //统计字符
2 sort命令 默认首位排序
[root@controller ~]# sort -n aa.txt -n 按整个数字排序
[root@controller ~]# sort -nr aa.txt -r 降序
[root@controller ~]# sort -nru aa.txt -u 去重
3 uniq 去重 默认连续相同行
[root@controller ~]# sort aa.txt | uniq -c //-c 求重复次数
[root@controller ~]# sort aa.txt | uniq -d //-c 只显示重复行
[root@controller ~]# sort aa.txt | uniq -u //-u 显示不重复的行
4 grep: 过滤
[root@controller ~]# grep root /etc/passwd
[root@controller ~]# grep -A 2 root /etc/passwd //-A 匹配行后两行
[root@controller ~]# grep -B 2 root /etc/passwd //-B 匹配行前两行
[root@controller ~]# grep -C 2 root /etc/passwd //-C 前后2行
[root@controller ~]# grep -n root /etc/passwd //-n 显示行号
[root@controller ~]# grep -i root /etc/passwd //-i 忽略大小写
[root@controller ~]# grep -v root /etc/passwd //-v 取反
[root@controller ~]# grep -x root /root/aa.txt //-x 完全匹配
[root@controller ~]# grep -rl hostname /etc/ //-r 递归 -l 列出文件名
5 cut: 剪切
[root@controller ~]# cut -d':' -f 1 /etc/passwd //第一个字段
[root@controller ~]# cut -d':' -f 1-3 /etc/passwd //第1-3字段
[root@controller ~]# cut -d':' -f 1,3-5 /etc/passwd //第1, 3-5字段
[root@controller ~]# cut -c 1 /etc/passwd //取第一个字符
[root@controller ~]# cut -c 1-10 /etc/passwd
[root@controller ~]# cut -c 1,5-10 /etc/passwd