Linux运维*一.Linux基础---24、进程管理

一、进程管理基础知识

1、应用程序、系统、内核、Lib库、硬件之间的关系:

在Linux上,应用程序都是对Kernel内核或者Libraries库调用实现应用程序功能的

应用程序运行在用户和内核之间,实现用户空间和内核空间之间的交互

(用户指令、内核或库调用、内核特权指令)

内核负责进程管理、文件系统管理、网络功能、内存管理、驱动管理、安全、硬件管理...

 

2、进程:Process

进程是运行起来的程序中的一个副本,使用内存及CPU进行库、内核的调用等运算操作,是一个动态的实体,而程序则时一个静态的文件。

 

3、进程的特性:

存在声明周期

有自己的元数据:进程运行时间、PID、进程发起者...

 

 

4、Linu系统启动流程:

(01、上电开机,BIOS自检

(02、磁盘引导MBR

(03、grub引导菜单(Boot Loader)

(04、加载Kernel及必要组建

(05、启动init进程,依据inittab设定运行级别

(06、init进程,执信rc.sysinit文件

(07、启动内核模块,执信不同级别的脚本程序

(08、执行/etc/rc.d/rc.loacl

(09、启动mingetty,进入系统登陆界面

 

5、进程优先级0--139:

1--99:实时优先级(数字越大优先级越高)

100--139:静态优先级(数字越小优先级越高)

Nice值:-20--19可以通过调整Nice值调整进程的静态优先级(对应静态优先级)

优先级=nice+120

 

6、进程队列

等待队列:等待运行的队列

过期队列:运行过的队列,等待队列运行完成后才能再次被运行调度

 

7、进程类型:

  守护进程:daemon,由内核在系统引导过程中启动的进程

  用户进程(前台进程):通过终端启动的进程

 

8、进程的状态:

  运行状态:running

  就绪准太:ready

  睡眠状态:

         可中断睡眠状态:interruptable,可随时启动

         不可终端睡眠状态:uninterruptabl,不能被启动

  停止状态:stopped,暂停在内存中,但不会被调用,除非手动启动

  僵死状态:zombie

 

 

9、线程:一个进程可以分为多个线程运行

 

10、常用进程管理工具

pstree # 进程树查看工具

ps # 进程状态查看工具

pgrep # 进程状态过滤显示命令

pidof # 根据进程名获取PID

top # 进程动态信息查看

htop # 进程动态信息查看(top升级版,支持鼠标操作)

kill # 进程控制命令,通过向进程发送控制信号控制进程状态

nice、renice # 进程优先级的调整

fuser # 查看占用指定文件或者端口的进程

 

11、作业:为实现同一个项目的多组进程

前台作业:运行时占据了终端的命令行窗口的作业

后台作业:运行时后台运行,不占用终端的作业

 

 

二、pstree:进程树查看工具(yum install -y psmisc)

pstree 选项 pid

常用选项

-a # 显示该行程的完整指令及参数

-c # 如果有重覆的行程名, 则分开列出(默认会在前面加上 *)

-apnh # 显示进程间的关系

-u # 显示用户名称

 

示例:

[oneapm@ONEAPM-NGINX01 ~]$ pstree -apnhu 97712

nginx,97712,oneapm

├─nginx,97713

├─nginx,97714

└─nginx,97715

 

三、ps:进程状态查看工具

ps 选项

常用选项

u # 以当前用户为中心组织进程状态信息

a # 显示与终端相关的进程

x # 显示与终端无关的进程

ax # 显示所有进程

Z # 显示安全相关信息

-e # 显示所有进程,相当于ax

-f # 显示完整格式的进程信息

-F # 显示更加完整格式的进程信息

-H # 显示进程树关系(子进程及父进程关系)

-j # 以任务格式显示

-U # 指定以某个用户身份运行的进程(-U root)

-o # 自定义显示字段

-o euser,ruser,fuser,f,comm,label,tty,pid,ppid,psr,tid,class,rtprio,ni,pri,

-o psr,pcpu,stat,wchan:14,euid,ruid,tpgid,sess,pgrp

常用字段:

ni nice值

pri priority,优先级

psr processor,使用的是那颗CPU

rtptrio 实时优先级

euid 有效用户

ruid 实际用户

pid 进程

ppid 父进程

 

显示字段说明:

USER(属主):进程的属主

PID(进程号):process id,进程的ID

PPID(父进程号):进程的夫进程号

%CPU(CPU占用率):该进程占用的cpu

%MEM(内存占用率):该进程占用的内存

VSZ(虚拟内存集):Virtual memory SiZe,虚拟内存大小

RSS(常驻内存集):常驻内存,固定占用,不能用于动态交换

TTY(终端):进程的终端(?表示与终端无关)

SATA(进程状态):

                R    running

                S    interruptable sleeping

                D   uninterruptable sleeping

                T    stopped

                Z    zombie

                +    用户进程

                l     多线程进程

               N    低优先级进程

               <    高优先级进程

                s    session leader会话领导进程 

                  (该进程启动会引导其它进程启动,终止该进程,着领导启动的进程也会终止)

 

常见用法示例;

[oneapm@ONEAPM-NGINX01 ~]$ ps -U oneapm -FH

UID PID PPID C SZ RSS PSR STIME TTY TIME CMD

oneapm 26506 26497 0 40870 2416 2 15:34 ? 00:00:00 sshd: oneapm@pts/4

oneapm 26507 26506 0 29217 3584 2 15:34 pts/4 00:00:00 -bash

oneapm 29704 26507 0 38830 1864 0 15:45 pts/4 00:00:00 ps -U oneapm -FH

oneapm 21837 21831 0 40870 2560 1 15:15 ? 00:00:00 sshd: oneapm@pts/3

oneapm 21838 21837 0 29189 3356 3 15:15 pts/3 00:00:00 -bash

oneapm 21895 21838 1 30726 2604 2 15:15 pts/3 00:00:29 htop

oneapm 99165 1 2 1460380 772244 2 Feb27 ? 03:33:12 /data/oneapm/jdk1.8.0_65/bin/java -cp /data/oneapm/usercenter/usercenter_system:/

oneapm 97712 1 0 10956 1136 1 Feb27 ? 00:00:00 nginx: master process /data/oneapm/NginxHome_new/nginx-1.1.6.1/sbin/nginx -c /dat

oneapm 97713 97712 2 13422 11348 2 Feb27 ? 04:08:26 nginx: worker process

oneapm 97714 97712 3 13382 11292 1 Feb27 ? 06:34:10 nginx: worker process

oneapm 97715 97712 6 13602 12052 3 Feb27 ? 11:27:32 nginx: worker process

oneapm 63641 1 0 35690 700 2 2019 ? 00:00:01 sz Agent_10001_log.59.6.tgz

oneapm 72381 1 0 40493 2040 0 2018 ? 00:00:08 top

oneapm 46637 1 0 40493 1316 1 2018 ? 00:00:48 top

 

 

[oneapm@ONEAPM-NGINX01 ~]$ ps -eF | grep nginx

oneapm 28601 26507 0 28176 980 0 15:42 pts/4 00:00:00 grep --color=auto nginx

oneapm 97712 1 0 10956 1136 1 Feb27 ? 00:00:00 nginx: master process /data/oneapm/NginxHome_new/nginx-1.1.6.1/sbin/nginx -c /data/oneapm/NginxHome_new/nginx-1.1.6.1/conf/nginx.conf

oneapm 97713 97712 2 13488 11612 2 Feb27 ? 04:08:19 nginx: worker process

oneapm 97714 97712 3 13482 11736 2 Feb27 ? 06:34:00 nginx: worker process

oneapm 97715 97712 6 13862 13192 3 Feb27 ? 11:27:09 nginx: worker process

 

[oneapm@ONEAPM-NGINX01 ~]$ ps -xfo user,ppid,pid,tid,pri,psr,%cpu,%mem,stat,cmd

USER PPID PID TID PRI PSR %CPU %MEM STAT CMD

oneapm 26497 26506 26506 19 2 0.0 0.0 S sshd: oneapm@pts/4

oneapm 26506 26507 26507 19 3 0.0 0.0 Ss \_ -bash

oneapm 26507 31409 31409 19 3 0.0 0.0 R+ \_ ps -xfo user,ppid,pid,tid,pri,psr,%cpu,%mem,stat,cmd

oneapm 21831 21837 21837 19 1 0.0 0.0 S sshd: oneapm@pts/3

oneapm 21837 21838 21838 19 3 0.0 0.0 Ss \_ -bash

oneapm 21838 21895 21895 19 0 1.6 0.0 S+ \_ htop

oneapm 1 99165 99165 19 2 2.1 9.6 Sl /data/oneapm/jdk1.8.0_65/bin/java -cp /data/oneapm/usercenter/usercenter_system:/data/oneapm/u

oneapm 1 97712 97712 19 1 0.0 0.0 Ss nginx: master process /data/oneapm/NginxHome_new/nginx-1.1.6.1/sbin/nginx -c /data/oneapm/Ngin

oneapm 97712 97713 97713 19 2 2.4 0.1 S \_ nginx: worker process

oneapm 97712 97714 97714 19 0 3.8 0.1 S \_ nginx: worker process

oneapm 97712 97715 97715 19 1 6.7 0.1 S \_ nginx: worker process

oneapm 1 63641 63641 19 2 0.0 0.0 S sz Agent_10001_log.59.6.tgz

oneapm 1 72381 72381 19 0 0.0 0.0 S top

oneapm 1 46637 46637 19 1 0.0 0.0 S top

 

 

 

四、pgrep:进程状态过滤显示命令

pgrep 选项

选项说明:

-u 指明有效用户(显示该用户下进程id)

-U 指明实际用户id(显示该用户下进程id)

-l 显示进程名字

-a 显示完整格式的进程名字

-t 指明tty终端

-P pid 显示指定pid父进程下的子进程列表

示例:

[oneapm@ONEAPM-NGINX01 ~]$ pgrep -a -P 97712

97713 nginx: worker process

97714 nginx: worker process

97715 nginx: worker process

[oneapm@ONEAPM-NGINX01 ~]$ pgrep -U oneapm -l

21837 sshd

21838 bash

21895 htop

26506 sshd

26507 bash

46637 top

63641 sz

72381 top

97712 nginx

97713 nginx

97714 nginx

97715 nginx

99165 java

 

 

五、pidof:根据进程名获取PID

pidof 进程名

示例:

[oneapm@ONEAPM-NGINX01 ~]$ pidof nginx

97715 97714 97713 97712

 

六、top:进程动态信息查询

top内置子命令:

     排序:

P   以占据CPU百分比排序

M  以占据内存百分比排序

     切换:

m 切换是否显示内存使用情况

l    切换是否显示首行信息

t     切换是否显示Task统计及显示格式

1    切换是否分别显示多颗CPU的task统计信息

     刷新时间:

s    后跟时间(单位秒),修改TOP刷新时间(默认为3s)

     结束进程:

k    后根PID,结束指定PID进程

     退出:

q  

top显示信息说明:

top - 20:14:58 up 1 day, 19:17,  2 users,  load average: 0.00, 0.01, 0.05             

#当前系统时间 系统运行时长 用户数 平均负载(1分钟,5分钟,10分钟)

 

Tasks: 374 total,   2 running, 370 sleeping,   2 stopped 0 zombie                       

#进程数 running进程数 sleeping睡眠进程数 stopped停止进程数 zombie僵死进程数

 

%Cpu0  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st             

%Cpu1  :  0.0 us,  0.4 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

%Cpu2  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

%Cpu3  :  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st      

#us用户空间程序占用百分比,sy系统空间程序占用百分比,ni为nice值占据的时间,id空闲比例,wa等待IO完成

的时间,hi硬件终段时间百分比,si软件终段时间百分比,st偷走时间比(如虚拟机)

 

KiB Mem :  3866948 total,  3137836 free,   170632 used,   558480 buff/cache 

#total物理总内存,free剩余内存,used占用内存,buff/cache缓存内存

 

KiB Swap:  5242876 total,  5242876 free,        0 used.  3436820 avail Mem      

#swap total交换空间总内存,swap free交换空间剩余内存,swap used交换空间占用内存,acail Mem物理可用空间

进程号   属主  优先级 nice值  虚拟内存集  常驻内存集  共享内存 准太  cpu占比  内存占比  运行时长  启动该进程的命令

   PID        USER      PR       NI         VIRT                       RES            SHR             S       %CPU       %MEM          TIME+      COMMAND                                                                             

 31705     root      20         0        146276                    2276           1428            R       1.0            0.1                0:00.11       top                                                                                 

     1          root      20         0        91976                     7316           2628            S        0.0           0.2                 0:17.11      systemd                                                                             

     2          root      20         0            0                               0              0                  S        0.0            0.0                 0:00.27      kthreadd                                                                            

     3          root      20         0            0                               0              0                  S        0.0            0.0                 0:00.78      ksoftirqd/0 

 

 

七、htop

htop子命令:

排序:

P   以占据CPU百分比排序

M  以占据内存百分比排序

进程跟踪:

s # 跟踪显示选定进程的系统调用

l # 跟踪显示选定进程打开的文件列表

进程绑定CPU

a # 将选定进程绑定至某指定CPU

退出

q

F系列按键

F1 # 使用帮助   

F2 # 设置   

F3 # 查找 

F4 # 过滤 

F5 # 树状显示父子进程 

F6 # 排序 

F7 # -nice值 

F8 # +nice值   

F9 # kill进程  

F10 # 退出

 

八、kill命令:进程控制命令,通过向进程发送控制信号控制进程状态

kill -l # 显示kill的信号列表

常用信号:

1) SIGHUP # 通知进程重读配置文件,而不用重启进程

2) SIGINT # 终止正在运行的进程,相当于Ctrl + C

9) SIGKILL # 杀死正在运行的进程(立即终止进程)

15) SIGTERM # 优雅终止正在运行的进程(完成目前的读写操作后终止)

18) SIGCONT # 继续停止了的进程

19) SIGSTOP # 停止进程

 

kill -[信号名|信号代码] pid # 对指定pid进程发送信号,并执行信号代表的操作

示例:

kill -9 3655 # 立即终止指定pid的进程

kill -1 3655 # 再不重启进程的情况下重读配置文件

 

killall -[信号名|信号代码] 进程名 # 对同一进程名的进程发送信号并执行

示例:

killall -9 nginx

 

killall -HUP 进程名字 # 再不重启进程的情况下重读配置文件

 

 

九、nice、renice进程优先级的调整

nice值:-20--19

优先级=nice+120,结果数值越小越优先

若程序启动时进程的nice值为0,优先级为120

 

以指定nice值启动进程:nice -n nice值 进程脚本

示例:

[root@localhost ~]# nice -n -20 /data/nginxHome/sbin/nginx

 

修改进程的nice值:renice -n nice值 PID

 

查看进程的nice值:ps axo pid,comm,ni

 

 

十、fuser进程查看

fuser -v -m /data/ # 查看指定文件占用的进程

fuser -v -n tcp 80 # 参考指定的端口占用的进程

 

十一、作业(多组进程)管理

作业:为实现同一个项目的多组进程

       前台作业:运行时占据了终端的命令行窗口的作业

       后台作业:运行时后台运行,不占用终端的作业

 

作业前后台切换:可以使用vi/top等命令测试

将前台运行的作业切换到后台(仍然与终端关联)

Ctrl + Z

 

启动作业后,立即运行为后台作业(仍然与终端关联)

作业运行脚本 &

 

启动作业后,立即运行为后台,并剥离终端运行

nohup 作业运行脚本 &

 

查看目前正在运行的作业

jobs

 

将后台作业调回前台

fg %作业号

 

使后台停止状态的作业继续运行

bg %作业号

 

终止指定作业

kill %作业号

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值