计算机网络/计算机科学与应用/系统/运维/开发

Linux进程

1、进程概念

   进程使用数字标记,每个进程标记号码称为PID,系统第一个进程时systemd PID 1


2、进程三种状态

    执行 Running : 当警察已获得处理,其程序正在处理机上执行

    就绪:当进程已分配到除cpu以外所有必要的资源

        阻塞:正在执行的进程由于等待某个事件发生而无法执行时


3、进程间的基本转换

    执行-阻塞

    阻塞-就绪

    执行-就绪

    就绪-执行

4、三种进程类型

    交互进程

    批处理进程

    监控进程


5、查看进程状态

    ps 命令 查看静态的进程统计信息

    格式: ps  选项

    选项:

        a 显示当前终端下的所有进程信息

        e 在命令后显示环境变量

        u 显示用户名和启动信息

        x 显示当前用户在所有终端下的进程信息

        e 显示所有进程

        f 完全显示 增加用户名 ppid 进程起始时间

6、实例:查看所有进程

[root@VM-4-2-centos Python-3.8.3]# ps -ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:41 /usr/lib/systemd/systemd --switched-root --system --deserializ
    2 ?        S      0:02 [kthreadd]
    4 ?        S<     0:00 [kworker/0:0H]
    6 ?        S      0:02 [ksoftirqd/0]
    7 ?        S      0:01 [migration/0]
    8 ?        S      0:00 [rcu_bh]
    9 ?        S      0:48 [rcu_sched]
   10 ?        S<     0:00 [lru-add-drain]
   11 ?        S      0:00 [watchdog/0]
   12 ?        S      0:00 [watchdog/1]


[root@VM-4-2-centos Python-3.8.3]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  43588  3956 ?        Ss   Jul20   0:41 /usr/lib/systemd/systemd
root         2  0.0  0.0      0     0 ?        S    Jul20   0:02 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   Jul20   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    Jul20   0:02 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    Jul20   0:01 [migration/0]
root         8  0.0  0.0      0     0 ?        S    Jul20   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        S    Jul20   0:48 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<   Jul20   0:00 [lru-add-drain]
root        11  0.0  0.0      0     0 ?        S    Jul20   0:00 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    Jul20   0:00 [watchdog/1]

含义:

USER  进程属主

PID 进程唯一标识

%CPU 占用cpu时间与总时间的百分比

%MEM 占用内存与总内存的百分比

VSZ  占用虚拟内存空间

RSS 占用内存空间

TTY 终端 ?标识未知或不需要终端

STAT 代表进程状态

    R 正在运行

    S 睡眠状态

    T 已停止运行或者侦测

    Z 已停止运行但仍在使用系统资源 僵尸进程


top命令  查看进程动态信息

每10s刷新一次

[root@VM-4-2-centos Python-3.8.3]# top
top - 16:20:13 up 5 days, 19 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  94 total,   1 running,  93 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3782696 total,  1314020 free,   252544 used,  2216132 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  3253556 avail Mem 
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND             
 1816 root      20   0  753844  15148   3296 S   0.7  0.4  42:11.57 barad_agent         
 2527 root      20   0 1005204  81788  17784 S   0.3  2.2  44:25.19 YDService           
15033 root      20   0  161972   2196   1560 R   0.3  0.1   0:00.01 top                 
    1 root      20   0   43588   3956   2600 S   0.0  0.1   0:41.52 systemd             
    2 root      20   0       0      0      0 S   0.0  0.0   0:02.70 kthreadd            
    4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H        
    6 root      20   0       0      0      0 S   0.0  0.0   0:02.94 ksoftirqd/0         
    7 root      rt   0       0      0      0 S   0.0  0.0   0:01.50 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:48.31 rcu_sched


PID 进程id

USER 属主

PR 进程调度优先级

NI 进程nice值 值越小 优先级越高

VIRT 进程使用的虚拟内存量

RES 进程占用的物理内存量

SHR 共享内存大小

S 进程状态

 %cpu 占用cpu百分比

 %mem 占用内存百分比

 TIME+ 运行时间

 COMMAND 启动命令


进程控制

 1、启动进程

 调度启动和手动启动

 调度启动是指在 事先设置好在某个时间要运行的程序,预设时间后,由系统自动启动

 手动启动在命令行下输入要执行的程序 分为前台启动和后台启动


 后台启动,在命令后加上 & 符号

 # command &


 2、改变进程运行方式 

    ctrl+z  挂起进程


 jobs 命令 查看在后台进行的进程任务

 #jobs -l

 fg命令将挂起的进程放回前台执行

 bg命令将挂起的进程放回后台继续执行


3、终止进程

查看可用进程信号

kill -l

[root@VM-4-2-centos Python-3.8.3]# kill -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

常用信号说明:

    SIGHUP 1重读配置文件

    SIGINT 2从键盘上发出Ctrl+C组合键终止信号

    SIGKILL 9结束接收信号的进程

    SIGTERM 15正常终止信号

可发送信号命令:

    kill 通过制定进程的pid为进程发送信号

    killall 通过制定进程的名称为进程发送信号

    pkill 通过模式匹配为指定的进程发送信号


实例:杀死指定pid的进程  -9 强制杀死

    kill -9 2978


    通过进程名终止所有进程

    pkill  httpd

    killall httpd


    通过模式匹配终止Bob用户的所有进程

    pkill -u Bob


一般在系统运行期间发生了如下情况,就需要将进程杀死:

    进程占用了过多的CPU时间

    进程锁住了一个终端,使其他前台进程无法运行

    进程运行时间过长,但没有产生预期效果或无法正常退出

    进程产生了过多到屏幕或磁盘文件的输出


Linux 进程监控

若无人替你披荆斩棘,那就独自前行栉风沐雨。

评论

^