linux/进程管理.md
2025-03-19 11:44:04 +08:00

11 KiB
Raw Permalink Blame History

进程管理


一:进程介绍

1. 进程的基本属性

PIDProcess ID

  • 每个进程的唯一标识符,由操作系统分配,范围从 1init/systemd 进程)开始递增。
  • PPIDParent Process ID:父进程的 PID表示创建该进程的进程。

用户和组

  • UID/GID:进程所属的用户和组,决定进程的权限(如文件访问权限)。

进程状态

通过pstop查看进程状态,常见的状态包括:

  • RRunning:正在运行或可运行(在运行队列中)。
  • SSleeping:可中断的睡眠状态(等待资源或事件)。
  • DUninterruptible Sleep:不可中断的睡眠(通常等待磁盘 I/O
  • TStopped:进程被暂停(如通过 Ctrl+ZSIGSTOP 信号)。
  • ZZombie:僵尸进程(已终止但未被父进程回收资源)。

资源占用

  • CPU 占用率:进程使用的 CPU 时间比例。
  • 内存占用包括虚拟内存VSZ和物理内存RSS
  • 打开的文件和端口:通过 lsofnetstat 查看。

2. 进程的生命周期

创建

  • 通过 fork() 系统调用创建子进程(复制父进程的内存空间)。
  • 通过 exec() 系统调用加载新程序到子进程的内存空间。

运行

  • 进程在 CPU 时间片内运行,可能处于用户态或内核态。

终止

  • 正常终止:进程主动调用 exit() 或返回 main()
  • 强制终止:通过 kill -9 发送 SIGKILL 信号。
  • 僵尸进程:子进程终止后,父进程未调用 wait() 回收其资源。

二:进程管理

1. 查看进程

ps命令

查看当前进程状态,常用组合:

ps aux       # 查看所有进程的详细信息用户、CPU、内存等
ps aux --sort -%cpu  # 以CPU的降序排列查看进程
ps aux --sort %cpu   # 以CPU的升序排列查看进程
ps -ef       # 查看完整格式的进程列表
ps -p <PID>  # 查看指定 PID 的进程
ps aox 属性,[属性],...   # 查看进程的指定属性

示例:
[user03@wxin ~]$ ps aux --sort %cpu | head -3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.2 193820  4676 ?        Ss   01:38   0:12 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    01:38   0:00 [kthreadd]

[user03@wxin ~]$ ps -ef | head -5
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 01:38 ?        00:00:12 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 01:38 ?        00:00:00 [kthreadd]
root          4      2  0 01:38 ?        00:00:00 [kworker/0:0H]
root          6      2  0 01:38 ?        00:00:00 [ksoftirqd/0]

[user03@wxin ~]$ ps -p 1
   PID TTY          TIME CMD
     1 ?        00:00:12 systemd
     
[user03@wxin ~]$ ps -axo uid,pid,%cpu,vsz | head -5
  UID    PID %CPU    VSZ
    0      1  0.0 193820
    0      2  0.0      0
    0      4  0.0      0
    0      6  0.0      0

top命令

实时监控进程及系统资源占用

top

# 快捷键:
# - P按 CPU 使用率排序
# - M按内存使用率排序
# - N按PID大小率排序
# - k终止指定 PID 的进程
# - q退出
# - <: 向前
# - >: 向后
# - z: 彩色
# - Z: 设置彩色

2. 启动进程

直接运行程序(前台)

/path/to/command

后台运行程序

/path/to/command &

3. 终止进程

通过 kill 发送信号

kill <PID>             # 默认发送 SIGTERM15正常终止
kill -9 <PID>          # 强制终止SIGKILL9

通过进程名终止

pkill <进程名>         # 根据名称终止进程
killall <进程名>      # 终止所有同名进程

4. 恢复/暂停进程

  • 暂停进程:Ctrl + Z(发送 SIGTSTP 信号)
  • 恢复进程到前台:fg
  • 恢复进程到后台:bg

5. 后台进程管理

jobs命令

查看当前 Shell 的后台任务:

jobs -l   # 列出任务及其 PID

nohup命令

让进程在终端关闭后继续运行:

nohup /path/to/command > output.log 2>&1 &

disown命令

将已启动的进程从当前 Shell 分离

disown -h <PID>   # 防止进程因 Shell 退出而终止

6. 进程优先级调整

nice命令

启动进程时指定优先级(范围:-20 到 19值越小优先级越高

nice -n 10 /path/to/command   # 以优先级 10 启动

renice命令

调整运行中进程的优先级

renice -n 5 -p <PID>   # 将 PID 的优先级调整为 5

7. 查找进程

按名称查找

pgrep <进程名>         # 返回匹配的 PID
pgrep -l <关键字>     # 显示进程名和 PID

按端口查找

netstat -tunlp | grep <端口号>
# 或
ss -tunlp | grep <端口号>

按资源占用查找

lsof -i :<端口号>      # 查看占用端口的进程
lsof /path/to/file    # 查看占用文件的进程

三:虚拟文件系统

1.cpu

[root@wxin ~]# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 183
model name	: Intel(R) Core(TM) i7-14700HX
stepping	: 1
microcode	: 0x125
cpu MHz		: 2304.002
cache size	: 33792 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 32
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht 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 invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips	: 4608.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 45 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 183
model name	: Intel(R) Core(TM) i7-14700HX
stepping	: 1
microcode	: 0x125
cpu MHz		: 2304.002
cache size	: 33792 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 1
initial apicid	: 1
fpu		: yes
fpu_exception	: yes
cpuid level	: 32
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht 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 invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips	: 4608.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 45 bits physical, 48 bits virtual
power management:

processor	: 2
vendor_id	: GenuineIntel
cpu family	: 6
model		: 183
model name	: Intel(R) Core(TM) i7-14700HX
stepping	: 1
microcode	: 0x125
cpu MHz		: 2304.002
cache size	: 33792 KB
physical id	: 1
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 32
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht 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 invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips	: 4608.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 45 bits physical, 48 bits virtual
power management:

processor	: 3
vendor_id	: GenuineIntel
cpu family	: 6
model		: 183
model name	: Intel(R) Core(TM) i7-14700HX
stepping	: 1
microcode	: 0x125
cpu MHz		: 2304.002
cache size	: 33792 KB
physical id	: 1
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 3
initial apicid	: 3
fpu		: yes
fpu_exception	: yes
cpuid level	: 32
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht 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 invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
bogomips	: 4608.00
clflush size	: 64
cache_alignment	: 64
address sizes	: 45 bits physical, 48 bits virtual
power management:

2.内存

[root@wxin ~]# cat /proc/meminfo 
MemTotal:        2027892 kB
MemFree:          225776 kB
MemAvailable:     847368 kB
Buffers:              36 kB
Cached:           730156 kB
SwapCached:          496 kB
Active:           506068 kB
Inactive:         845292 kB
Active(anon):     201568 kB
Inactive(anon):   473196 kB
Active(file):     304500 kB
Inactive(file):   372096 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2097148 kB
SwapFree:        2082548 kB
Dirty:                 4 kB
Writeback:             0 kB
AnonPages:        620724 kB
Mapped:            95716 kB
Shmem:             53596 kB
Slab:             221480 kB
SReclaimable:     133040 kB
SUnreclaim:        88440 kB
KernelStack:       10208 kB
PageTables:        35596 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3111092 kB
Committed_AS:    4185336 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      179396 kB
VmallocChunk:   34359310332 kB
Percpu:            37376 kB
HardwareCorrupted:     0 kB
AnonHugePages:    247808 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      118656 kB
DirectMap2M:     1978368 kB
DirectMap1G:           0 kB

3.内核

[root@wxin ~]# cat /proc/cmdline 
BOOT_IMAGE=/vmlinuz-3.10.0-1160.el7.x86_64 root=/dev/mapper/centos-root ro rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8