linux进程

本文深入讲解进程的概念,包括父进程和子进程的关系,进程的状态,如僵尸进程和僵停状态,以及如何通过ps、top和kill等命令查看和管理进程。同时,探讨了进程的优先级调整方法和前后台进程的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程:一个软件的运行就是一个进程。这些在CPU运行。

父进程和子进程:
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性
之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:

子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec
自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,
子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩
余的结构,然后继续执行其自己的程序代码。
zombie僵尸进程,没办法杀死,只能重启系统

PID,PPID
当前的进程状态
内存的分配情况
CPU和已花费的实际时间
用户UID,它决定进程的特权

ps -ef 和 ps aux是查看进程的指令。

[root@localhost yasuo]# ps aux | head -3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128164  6824 ?        Ss   09:30   0:25 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2  0.0  0.0      0     0 ?        S    09:30   0:00 [kthreadd]

UID指的是运行进程的发起用户的UID 能够决定进程的特权。
PID: 进程ID
%CPU: CPU占用率 1分钟内
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程 //不能有太多,有太多就不正常的
X 死掉的进程

  Ss  	s进程的领导者,父进程
  S< <优先级较高的进程
  SN  N优先级较低的进程
  R+	+表示是前台的进程组
  Sl	以线程的方式运行	

START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名

查看指定进程的PID

[root@localhost yasuo]# ps -ef | grep sshd
root       1079      1  0 09:30 ?        00:00:00 /usr/sbin/sshd -D
root       1404   1079  0 09:30 ?        00:00:03 sshd: root@pts/0
root       2285   1079  0 10:13 ?        00:00:26 sshd: root@pts/1
root      26062   1596  0 18:17 pts/0    00:00:00 grep --color=auto sshd

进程树

[root@localhost yasuo]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
        ├─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─2*[abrt-watch-log]
        ├─abrtd
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─alsactl
        ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
        │                 └─3*[{at-spi-bus-laun}]
        ├─at-spi2-registr───2*[{at-spi2-registr}]
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─avahi-daemon───avahi-daemon
        ├─colord───2*[{colord}]
        ├─crond
        ├─cupsd
        ├─2*[dbus-daemon───{dbus-daemon}]
        ├─dbus-launch
        ├─dnsmasq───dnsmasq
        ├─firewalld───{firewalld}
        ├─gdm─┬─X───3*[{X}]
        │     ├─gdm-session-wor─┬─gnome-session-b─┬─gnome-settings-───4*[{gnome-settings-}]
        │     │                 │                 ├─gnome-shell─┬─ibus-daemon─┬─ibus-dconf───3*[+
        │     │                 │                 │             │             ├─ibus-engine-sim─+++
        │     │                 │                 │             │             └─2*[{ibus-daemon}+
        │     │                 │                 │             └─10*[{gnome-shell}]
        │     │                 │                 └─3*[{gnome-session-b}]
        │     │                 └─2*[{gdm-session-wor}]
        │     └─3*[{gdm}]
        ├─gssproxy───5*[{gssproxy}]
        ├─ibus-x11───2*[{ibus-x11}]
        ├─irqbalance
        ├─ksmtuned───sleep
        ├─libvirtd───15*[{libvirtd}]
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─packagekitd───2*[{packagekitd}]
        ├─polkitd───5*[{polkitd}]
        ├─pulseaudio───2*[{pulseaudio}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─rtkit-daemon───2*[{rtkit-daemon}]
        ├─smartd
        ├─sshd─┬─sshd───bash───pstree
        │      └─sshd───bash───tail
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        ├─upowerd───2*[{upowerd}]
        ├─vmtoolsd
        ├─wpa_supplicant
        └─xdg-permission-───2*[{xdg-permission-}]

top指令可以查看全局的信息。按Q退出。

top - 18:08:48 up  8:38,  2 users,  load average: 0.00, 0.02, 0.05
Tasks: 154 total,   1 running, 152 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867048 total,   763548 free,   351184 used,   752316 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1236576 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                    
     1 root      20   0  128164   6824   4056 S   0.3  0.4   0:24.93 systemd                    
   408 root      20   0       0      0      0 S   0.3  0.0   0:11.24 xfsaild/dm-0               
   672 root      20   0   21620   1272    960 S   0.3  0.1   0:21.66 irqbalance                 
  1404 root      20   0  147784   5248   3968 S   0.3  0.3   0:03.01 sshd                       
 25093 root      20   0  157716   2212   1528 R   0.3  0.1   0:01.70 top                        
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.11 kthreadd                   
     3 root      20   0       0      0      0 S   0.0  0.0   0:01.09 ksoftirqd/0                
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H               
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.17 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:32.39 rcu_sched                  
    10 root      rt   0       0      0      0 S   0.0  0.0   0:00.61 watchdog/0                 
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.77 watchdog/1                 
    12 root      rt   0       0      0      0 S   0.0  0.0   0:01.79 migration/1                
    13 root      20   0       0      0      0 S   0.0  0.0   0:03.54 ksoftirqd/1                
    15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H               
    17 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kdevtmpfs

h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载

kill指令:用信号杀死进程。

kill 4577 不写信号默认15

  1. SIGHUP 重新加载配置进程pid不变 重新启动:会先关闭后开启的和重新加载不同
  2. SIGINT 键盘中断^C
  3. SIGQUIT 键盘退出
  4. SIGKILL 强制终止
  5. SIGTERM 终止(正常结束),缺省信号,不一定响应,但如果响应了,会自动清空占用的资源
  6. SIGCONT 继续 把停止的进程继续
  7. SIGSTOP 停止
    20)SIGTSTP 暂停^Z

优先级:
Linux 进程调度及多任务
相对优先级nice
查看进程的nice级别
启动具有不同nice级别的进程
更改现有进程的nice级别
Nice NI值高优先级低

范围从-20 到19

nice [选项] 命令
nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值。
选项:
-n NI值:给命令赋予NI值
例如
nice -n -5 service httpd start

renice命令
renice [优先级] PID
renice命令是修改已经存在进程的NI值得命令

前台进程和后台进程
foreground:

前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。
background:
后台进程没有控制终端,它不需要终端的交互。

指令后加 “&” 可以在后台运行指令。

jobs :查看作业进程。
Ctrl+Z :将前台进程弄到后台并停止。
bg % 1 将1号进程在后台运行,启动。
fg % 1 将1号进程挪到前台。

虚拟内存和实际内存,虚拟内存是指通用的函数部分+自己本身的部分,实际内存就是指本身的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值