linux-进程管理

1. 在linux中,每个执行程序都称为一个进程,每个进程分配一个id号,称为pid。

2. 每个进程都可能以两种方式存在的,前台和后台。

3. 程序启动分配进程,占用内存空间。

进程管理

ps

 -e   显示所有进程

 -f    以全格式显示

 -a   显示当前终端的所有进程

 -u   以用户的格式显示进程信息

  -x  显示后台进程运行的参数

  -o  以用户定义的格式显示

ps axo pid,comm,pcpu      //查看进程的PID、名称以及CPU 占用率

# ps axo pid,comm,pcpu --sort=pcpu       // sort 参数以pcpu 为对象对

]# ps axo pid,comm,pcpu --sort=pcpu |tail -n 10
     7 rcu_sched        0.3
  4855 coredns          0.5
 79883 kube-scheduler   0.6
  1262 containerd       0.7
  1128 dockerd          3.0
  2849 etcd             3.7
 79865 kube-controller  3.7
  4507 calico-node      4.0
 11697 kubelet          5.9
  2959 kube-apiserver  11.0
]# ps -aux |head -5
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1 191584  5376 ?        Ss   May11   4:28 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    May11   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    May11   0:59 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   May11   0:00 [kworker/0:0H]

RSS: 进程占用物理内存大小,KB

VSZ: 进程占用虚拟内存大小,KB

TTY: 终端名称

STAT:  进程运行状态

  S :休眠, R: 运行,s: 表示该进程是会话的先导进程, N:表示进程拥有比普通优先级更低的优先级, D:短暂等待,Z:僵死进程(程序退出,内存未释放), T: 被跟踪或停止

TIME :占用CPU时间总共时间

COMMAND:进程启动参数

 

父子进程

  父进程可以创建子进程,多进程模式。比如:nginx可以启动多个worker进程。

]# ps -ef |head -5
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 May11 ?        00:04:29 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 May11 ?        00:00:00 [kthreadd]
root          3      2  0 May11 ?        00:00:59 [ksoftirqd/0]
root          5      2  0 May11 ?        00:00:00 [kworker/0:0H]

PID:当前进程

PPID:父进程

 

终止进程 kill 和 killall

  -9 强迫进程立即停止

示例

1、踢掉某个非法登录的用户

ps -aux |grep sshd  # 找到非法用户远程的sshd pid,使用kill pid

2、终止多个gedit

killall nginx

3、强制杀掉一个终端

kill -9 pid

pstree:查看进程关系

]# pstree -p
systemd(1)─┬─ModemManager(690)─┬─{ModemManager}(708)
           │                   └─{ModemManager}(725)
           ├─NetworkManager(728)─┬─{NetworkManager}(802)
           │                     └─{NetworkManager}(806)

-p   显示进程号

-u  显示进程启动用户

-a  显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。

 

动态监控进程

top

参数:

  d:s,指定top刷新时间,默认3s。

  i:不显示限制或僵死进程。

  p:通过指定监控进程id来仅仅监控某个进程的状态。

  M:以内存使用率排序

  N:以PID排序

  P:以CPU使用率进行排序

  u:输入用户名,监控某个用户启动的进程。

  k:终止指定的进程。

top - 23:57:57 up 3 days, 16:01,  2 users,  load average: 0.45, 0.73, 0.71
Tasks: 226 total,   2 running, 224 sleeping,   0 stopped,   0 zombie
%Cpu(s):  5.1 us,  3.4 sy,  0.0 ni, 90.8 id,  0.0 wa,  0.0 hi,  0.7 si,  0.0 st
KiB Mem :  4028736 total,   922240 free,  1564960 used,  1541536 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  2201124 avail Mem
Tasks: 任务数量,进程总数   zombie: 僵死进程,需要手动释放
%Cpu(s):  5.1 us(用户占用),  3.4 sy(系统占用),  0.0 ni, 90.8 id(空闲),  0.0 wa,  0.0 hi,  0.7 si,  0.0 st 
 
 
 
posted @ 2022-05-14 22:51  不会跳舞的胖子  阅读(99)  评论(0编辑  收藏  举报