查看配置
cpu信息查看
[root@localhost ~]# lscpu
Architecture: x86_64 #架构
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 45 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 2 # sockect(插槽)*core per socket * thread per core
On-line CPU(s) list: 0,1
Vendor ID: GenuineIntel
BIOS Vendor ID: GenuineIntel
Model name: Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz #cpu型号
BIOS Model name: Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz
CPU family: 6
Model: 126
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 2
Stepping: 5
BogoMIPS: 2380.78
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 cpuid tsc_known_freq pni pclmulqd
q 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 avx5
12dq rdseed adx smap avx512ifma clflushopt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves arat avx512
vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq rdpid fsrm md_clear fl
ush_l1d arch_capabilities
Virtualization features: #虚拟化
Hypervisor vendor: VMware
Virtualization type: full
Caches (sum of all):
L1d: 96 KiB (2 instances)
L1i: 64 KiB (2 instances)
L2: 1 MiB (2 instances)
L3: 12 MiB (2 instances)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0,1
Vulnerabilities:
Gather data sampling: Unknown: Dependent on hypervisor status
Indirect target selection: Mitigation; Aligned branch/return thunks
Itlb multihit: KVM: Mitigation: VMX unsupported
L1tf: Not affected
Mds: Not affected
Meltdown: Not affected
Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Reg file data sampling: Not affected
Retbleed: Mitigation; Enhanced IBRS
Spec rstack overflow: Not affected
Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl
Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Spectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI SW loop, KVM SW loop
Srbds: Unknown: Dependent on hypervisor status
Tsa: Not affected
Tsx async abort: Not affected
内存
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.5Gi 501Mi 2.6Gi 9.0Mi 739Mi 3.0Gi
Swap: 3.9Gi 0B 3.9Gi
磁盘
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs tmpfs 725M 9.1M 716M 2% /run
/dev/mapper/rlm-root xfs 37G 2.4G 35G 7% /
/dev/nvme0n1p1 xfs 960M 256M 705M 27% /boot
/dev/mapper/rlm-home xfs 19G 161M 18G 1% /home
tmpfs tmpfs 363M 0 363M 0% /run/user/0
内核信息
cat /etc/os-release
uname -a
hostnamectl
进程是什么
1.基本概念
● 进程是运行中的程序
● 程序是静态文件,保存在硬盘上
● 进程是程序运行的实例,是动态的,保存在内存中。有生有死
[root@localhost ~]# file /bin/date # 程序文件
/bin/date: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=1b8568b41767b3c81e4080e90838bfdb24ca2e90, for GNU/Linux 3.2.0, stripped
[root@localhost ~]# /bin/date # 执行后产生进程
2026年 07月 08日 星期三 10:14:41 CST
[root@localhost ~]# ps aux | grep date # 通过ps命令可以看到这个进程
root 1536 0.0 0.0 221696 2604 pts/0 S+ 10:14 0:00 grep --color=auto date
2. pid/ppid/进程树
进程也是分父子关系的,子进程都由父进程创建出来的
pid:进程唯一识别号,类似身份证号
ppid:父进程唯一识别号
所有的进程的祖先是systemd(pid=1)的进程
[root@localhost ~]# echo $$ #查看当前shell进程号
1440
[root@localhost ~]# ps -ef | grep 1440 #查看当前shell父进程号
UID PID PPID C STIME TTY TIME CMD
root 1440 1439 0 10:13 pts/0 00:00:00 -bash
root 1542 1440 0 10:19 pts/0 00:00:00 ps -ef
root 1543 1440 0 10:19 pts/0 00:00:00 grep --color=auto 1440
[root@localhost ~]# pstree -p #查看进程树,带上进程号
systemd(1)─┬─NetworkManager(909)─┬─{NetworkManager}(910)
│ └─{NetworkManager}(911)
├─agetty(930)
├─auditd(826)───{auditd}(827)
├─chronyd(862)
├─crond(928)
├─dbus-broker-lau(852)───dbus-broker(853)
├─firewalld(856)───{firewalld}(908)
├─irqbalance(857)───{irqbalance}(863)
├─rsyslogd(943)─┬─{rsyslogd}(967)
│ └─{rsyslogd}(971)
├─sshd(917)─┬─sshd(1423)───sshd(1439)───bash(1440)───pstree(1546)
│ └─sshd(1428)───sshd(1470)───sftp-server(1471)
├─systemd(1429)───(sd-pam)(1431)
├─systemd-journal(725)
├─systemd-logind(858)
└─systemd-udevd(737)
查看进程号为1的进程
[root@localhost ~]# ps -p 1
PID TTY TIME CMD
1 ? 00:00:01 systemd
3. 前台进程和守护进程
前台进程:绑定终端,关闭终端就没了,使用ps aux查看基础进程,tty列一般是有值的,比如(pts/0)
守护进程:独立运行,与终端无关,tty列一般是?,比如后续学到的各种服务都是守护进程状态运行,nginx,sshd等


==总结==:
是的,在实际运维视角中,除了用户登录产生的bash交互进程和它的子进程之外,systemd下挂的其余长期后台进程,几乎全都是守护进程,并且绝大多数都可以用 systemctl管理。
Daemon 是“脱离终端控制、在后台长期运行、为系统提供特定服务”的进程。
进程查看和排查工具
1. ps aux
a:显示所有终端下的进程,包括其他用户的进程(而不只是当前终端的)。
u:以面向用户的格式输出,显示用户名、CPU 和内存使用率等详细字段。
x:显示没有控制终端的进程(即后台守护进程,如 systemd、nginx 等)。
0. top
是 Linux 的实时系统监测工具,主要监控 CPU、内存和进程这三块


[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.2 0.4 108308 16556 ? Ss 21:13 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 31
root 2 0.0 0.0 0 0 ? S 21:13 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 21:13 0:00 [pool_workqueue_]
==总结==:
深入理解为什么linux和windows的程序互相跑不了
- 二进制文件格式不同


Linux 内核只认 ELF 格式,Windows 内核只认 PE 格式——它们各自按自己”看得懂”的方式去读二进制文件,读不懂就拒绝执行。这就是最根本、最直接的不兼容原因。
列参数解析见课件
下面先不学
2. stat常见状态码(目前遇不到)
3. STAT 状态码速查(最常遇到的几个)
R:正在运行或处于运行队列中(可运行)。
S:可中断的睡眠(等待某个事件完成,最常见)。
D:不可中断的睡眠(通常在等待 I/O,如磁盘读写,此时不能轻易 kill)。
Z:僵尸进程(子进程已退出,但父进程未回收,若大量堆积需处理)。
T:暂停或被跟踪(如按了 Ctrl+Z 暂停的任务)。
后缀附加符(如 S+、Ss):
+:前台进程组(在前端运行)。
s:会话领导者(通常为首进程)。
l:多线程进程。
3. 示例
# 造一个T状态
[root@rocky ~]# vim test.txt
# 按 Ctrl+Z
[root@rocky ~]# ps aux | grep vim # STAT = T
# ⭐找CPU最高的10个进程(生产最常用) -%cpu是根据cpu递减,不加-就是递增
[root@rocky ~]# ps aux --sort -%cpu | head -11
# ⭐找内存最高的10个进程 -rss是根据rss递减的意思,不加-就是递增
[root@rocky ~]# ps aux --sort -rss | head -11
# 以树形展示
[root@rocky ~]# ps auxf
# 自定义显示格式,知道就行,不作要求
[root@localhost ~]# ps -axo user,pid,ppid,%mem,%cpu,command --sort -%cpu
这个新人需要知道吗

4. 查看进程pid的方式汇总
[root@localhost ~]# cat /run/sshd.pid
[root@localhost ~]# ps -aux |grep sshd
[root@localhost ~]# pgrep -l sshd
[root@localhost ~]# pidof sshd
进程控制与实时监控
1. top命令
| 行 | 关键字段 | 怎么看 |
|---|---|---|
| 第1行 | load average | 1分钟/5分钟/15分钟负载,≈CPU核心数算正常 |
| 第2行 | Tasks(就相当于进程) | 重点关注 zombie 是不是0 |
| 第3行 | %Cpu | us(应用占用)、wa(IO等待,高说明磁盘慢) |
| 进程列表 | %CPU/%MEM/COMMAND | ⭐看谁占资源多 |
重点交互命令
| 按键 | 功能 |
|---|---|
| P | ⭐按CPU排序 |
| M | ⭐按内存排序 |
| c | 显示完整命令 |
| q | 退出 |
| s | 改刷新间隔 |
其他选项参考课件
示例见课件部分
2. kill命令
| 编号 | 信号名 | 作用 | 使用场景 |
|---|---|---|---|
| 1 | SIGHUP | 重新加载配置 | 改完配置文件不想重启 |
| 9 | SIGKILL | 强制终止 | ⚠️最后手段 |
| 15 | SIGTERM | 优雅终止(默认) | ⭐首选! |
==-15:礼貌请进程”下班”,进程可保存数据、释放资源==
-9:内核直接”拖走”,进程来不及善后,可能丢数据、产生僵尸
准则:能用-15就不用-9
# 示例
[root@rocky ~]# ping baidu.com > /dev/null &
[1] 12345
[root@rocky ~]# kill -15 12345 # 优雅终止
[root@rocky ~]# kill -9 12345 # 强制终止(-15杀不掉时用)
3. pkill批量杀
# kill是精准狙击(要PID),pkill是地毯式轰炸(按名字)
[root@rocky ~]# pkill ping # 杀掉所有ping
[root@rocky ~]# pkill -u appuser # 杀掉某用户所有进程
[root@rocky ~]# pkill -9 -t pts/1 # 踢掉某终端用户
其他示例见课件
进程优先级
进程调度策略
| cls 显示值 | 内核常量 | 类型 | 使用场景 |
|---|---|---|---|
| TS | SCHED_OTHER / SCHED_NORMAL | 普通(默认) | 绝大多数业务进程,CFS 完全公平调度 |
| FF | SCHED_FIFO | 实时(先入先出) | 必须立即完成且不主动让 CPU 的任务 |
nice和pr
Nice值:这是进程的“让行意愿”。Nice值越高(越“善良”),越主动给别人让出执行权;Nice值越低(越“霸道”),越爱插队,想着优先执行
PR值:这是内核的最终调度优先级。内核会根据CPU实时负载强行调整顺序,不是完全听nice值
pr和nice的关系
再调度策略为SCHED_NORMAL时,top命令中的PR和NI列一定满足以下公式
PR = 20 + NI
而PR值是回被内核动态调整的,如果想要看动态的值,使用ps命令查看pri列
# 这也是查看优先级常用命令
[root@192 ~]# ps -axo pid,command,nice,cls --sort=-nice # -o参数定义列格式
PID COMMAND NI CLS
43 [khugepaged] 19 TS
42 [ksmd] 5 TS
1 /usr/lib/systemd/systemd -- 0 TS
2 [kthreadd] 0 TS
3 [pool_workque&ue_] 0 TS
10 [kworker/u512:0-events_unbo 0 TS
12 [kworker/u512:1-netns] 0 TS
13 [rcu_tasks_kthre] 0 TS
调整正在运行的进程
#终端1
[root@192 ~]# vim
#终端2
[root@192 ~]# ps -axo command,pid,nice |grep vim
vim 12648 0
grep --color=auto vim 12652 0
[root@192 ~]# renice -20 -p 12648
12648 (process ID) 旧优先级为 0,新优先级为 -20
[root@192 ~]# ps -axo command,pid,nice |grep vim
vim 12648 -20
grep --color=auto vim 12656 0
调整正在运行的进程
#终端1
[root@192 ~]# vim
#终端2
[root@192 ~]# ps -axo command,pid,nice |grep vim
vim 12648 0
grep --color=auto vim 12652 0
[root@192 ~]# renice -20 -p 12648
12648 (process ID) 旧优先级为 0,新优先级为 -20
[root@192 ~]# ps -axo command,pid,nice |grep vim
vim 12648 -20
grep --color=auto vim 12656 0
启动时指定优先级
# 终端1
[root@192 ~]# nice -n 19 vim
# 终端2
[root@192 ~]# ps -axo command,pid,nice |grep vim
vim 12657 19
grep --color=auto vim 12661 0
实践部分
nice不要调成-20,可能会导致ssh都无法连上去
一般不会太关注nice,==nice只用作微调,因为大部分业务场景都容器化,cpu资源基本由cgroups来做限制==
后台管理
jobs
不能用作部署服务,终端关闭,任务会被终止
nohup
见课件示例
系统服务管理
定义见课件
[root@192 ~]# pstree -p
systemd(1)─┬─NetworkManager(907)─┬─{NetworkManager}(908)
│ └─{NetworkManager}(909)
├─auditd(823)───{auditd}(824)
├─chronyd(862)
├─crond(929)
├─dbus-broker-lau(853)───dbus-broker(854)
├─firewalld(857)───{firewalld}(906)
├─irqbalance(858)───{irqbalance}(863)
├─login(933)───bash(1432)
├─ping(12690)
├─rsyslogd(941)─┬─{rsyslogd}(970)
│ └─{rsyslogd}(973)
├─sshd(922)─┬─sshd(12693)───sshd(12698)───bash(12700)───pstree(12786)
│ └─sshd(12697)───sshd(12731)───sftp-server(12732)
├─systemd(1423)───(sd-pam)(1425)
├─systemd-journal(726)
├─systemd-logind(859)
└─systemd-udevd(738)
核心命令
常用命令
systemctl start name.service # 启动
systemctl stop name.service # 停止
systemctl restart name.service # 重启
systemctl reload name.service # ⭐重载配置(不停服)
systemctl status name.service # ⭐查看状态
开关机启动相关
systemctl enable name.service # ⭐开机自启
systemctl disable name.service # 取消自启
systemctl is-enabled name.service # 检查是否自启
查看所有服务
systemctl list-units --type service --all # 所有服务状态
systemctl list-unit-files --type service # 查看是否开机自启