Linux 进程管理

一、进程概念

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

二、查看进程

1.PS        查看当前终端上运行的进程

[root@ztq ~]#ps 
[root@ztq ~]#ps aux
    选项:
        a    表示显示所有用户的进程,包括其他用户的守护进程。
              如果不使用 -a 选项,ps 命令默认只显示当前用户的进程。
        u    表示以用户为主要排序标准显示进程。
              使用 u 选项后,ps 命令会显示进程的详细信息,
              包括用户、进程ID(PID)、CPU使用率、内存占用等。
        x    表示显示没有控制终端的进程,即守护进程或后台运行的进程。
        f    显示进程之间的父子关系(使用pstree查看更详细的父子关系)
     

USER  PID  %CPU  %MEM     VSZ   RSS  TTY  STAT START  TIME  COMMAND
root    1   0.0   0.1  193972  7036  ?    Ss   09:34  0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root    2   0.0   0.0       0     0  ?    S    09:34  0:00  [kthreadd]
  
    user    用户,进程拥有者
    pid     进程id号  process identify
            1号进程    所有进程的父进程
            名称    systemd centos7之后的1号进程
                    initd  centos7之前的1号进程        
    CPU     cpu占用百分比
    MEM     mem占用百分比
    VSZ     系统分配给进程虚拟内存 进程运行时跟内核申请的内存
    RSS     进程占用的真实内存
    TTY     进程运行时占用的终端  进程在哪个终端运行
            查看tty的方法:
            #tty
                ? 表示这个进程开启的时候没有占用终端
    STAT    进程状态
            S    休眠状态
            R    运行状态
            T    暂停状态
            Z    zombie 僵死状态  (垃圾进程,看见直接杀死)
    START   进程的启动时间
    TIME    进程占用cpu的总时间
    COMMAND 进程名称
​


按指定字符排序:
    # ps aux --sort %cpu     //按cpu进行排序
    # ps aux --sort -%cpu    //-%cpu 反向排序
    # ps aux --sort -%mem    //-%mem 反向排序


显示指定字段:
    # ps  axo user,%cpu,command  --sort  -%cpu
​

[root@ztq ~]# ps -elf
    选项:
        -e  显示所有进程    //常用
        -l  长格式显示
        -f  完整格式

# ps -e
PID  TTY  TIME  CMD

# ps -el
F  S  UID  PID  PPID  C  PRI  NI  ADDR  SZ  WCHAN  TTY  TIME  CMD

# ps -elf
F  S  UID  PID  PPID  C  PRI  NI  ADDR  SZ  WCHAN  STIME  TTY  TIME  CMD   

 pstree进程树

查看进程树
    [root@ztq ~]# pstree
    -a 显示参数
    -p 显示pid
    -u 显示用户名  只针对普通用户开启的进程

2.top        实时查看进程状态

[root@ztq ~]# top
top - 19:12:17 up  9:38,  2 users,  load average: 0.02, 0.03, 0.05
Tasks: 230 total,   1 running, 229 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  1.2 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4026120 total,  2098988 free,   917780 used,  1009352 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  2814412 avail Mem 

2063 root      20   0 3047612 154764  26384 S  6.7 15.5   1:56.51 gnome-shell 
38508 root      20   0  162100   2188   1528 R  6.7  0.2   0:00.01 top   

load average: 0.02,0.04,0.05
从1分钟,5分钟,15分钟之前开始到现在等待cpu处理的队列平均长度

%Cpu(s):  
 0.2 us    user    用户态的进程所占用的cpu的使用率  <70%
 1.2 sy    system  内核态的进程所占用的cpu的使用率  <30%
 0.0 ni    nice    修改过nice值的进程所占用的cpu使用率
98.7 id    idle    cpu空闲率
 0.0 wa    wait    cpu空转率
 0.0 hi    hardware interrupt    硬件中断
 0.0 si    software interrupt    软件中断
 0.0 st    stolen steal    被虚拟化程序偷走的cpu使用率

buff/cache 缓存:
    buffer    缓冲区    写缓存
    cache     缓冲      读缓存    
    清理缓存
    # echo 3 > /proc/sys/vm/drop_caches
    
swap分区  交换分区  是磁盘分区
  作用:当内存不够时,会有一部分进程把占用的内存的空间交换到硬盘交换分区


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

pid      进程id
user     进程所属用户
PR       priority  优先级    
NI       nice值  它可以间接修改进程优先级    
VIRT     虚拟内存    
RES      物理内存
SHR      share  共享内存    
S        进程状态    
%CPU     cpu使用率
%MEM     内存使用率
TIME     占用的CPU时间片
COMMAND  进程名称
h|? 帮助

    M 按内存排序
    P 按cpu排序
    1
        
    > 往下翻页
    < 往上翻页
    k 输入pid杀死进程
    h 打印帮助
    q 退出

3.lsof

应用范围有限,只能查看带端口的进程

[root@ztq ~]# lsof -i:80
    查看端口为80的进程

4.pidof / pgrep

查看进程的PID

    [root@ztq ~]# pidof bash
    7951 811

    [root@ztq ~]# pgrep bash
    7951


进程pid文件
  [root@ztq ~]#cd /var/run    
  [root@ztq ~]# cat /var/run/httpd/httpd.pid 
  12265

5.w        查看用户

[root@ztq ~]# w
     16:51:43 up  8:30,  7 users,  load average: 0.11, 0.27, 0.30
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   
    PCPU WHAT
    root     :0       :0               08:22   ?xdm?  29:39   0.23s 
    gdm-session-
    root     pts/0    :0               14:13    1:43   0.30s  0.30s bash
    root     pts/1    :0               11:19    5:19   0.62s  0.62s bash
    root     pts/2    :0               14:13    1:39m  0.06s  0.01s less
    root     pts/3    :0               14:54    7.00s  0.06s  0.01s w
    root     pts/4    :0               16:25   25:51   0.06s  0.06s bash
    root     pts/5    :0               16:40    7:11   0.24s  0.24s bash

6.who        查看用户

[root@ztq ~]# who
    root     :0           2017-11-27 08:22 (:0)
    root     pts/0        2017-11-27 14:13 (:0)
    root     pts/1        2017-11-27 11:19 (:0)
    root     pts/2        2017-11-27 14:13 (:0)
    root     pts/3        2017-11-27 14:54 (:0)
    root     pts/4        2017-11-27 16:25 (:0)
    root     pts/5        2017-11-27 16:40 (:0)

 7.users        查看用户

[root@ztq ~]# users
root root

 8.uptime

[root@ztq ~]# uptime
 10:48:27 up 0 min,  2 users,  load average: 0.52, 0.15, 0.05
 当前时间   运行时间  用户连接数   平均负载

三、进程状态/生命周期

[root@ztq ~]# man ps
     R running
     S sleep
     T stop  
     Z zombie(僵死,僵尸)
    
        D    Uninterruptible sleep (usually IO)
        R    Running or runnable (on run queue)
        S    Interruptible sleep (waiting for an event to complete)
        T    Stopped, either by a job control signal or because it is
        being traced.
        W    paging (not valid since the 2.6.xx kernel)
        X    dead (should never be seen)
        Z    Defunct ("zombie") process, terminated but not reaped by
        its parent.
        <    high-priority (not nice to other users)
        N    low-priority (nice to other users)
        L    has pages locked into memory (for real-time and
                custom IO)
        s    is a session leader
        l    is multi-threaded (using CLONE_THREAD, like NPTL
                pthreads do)
        +    is in the foreground process group

四、控制进程

[root@ztq ~]# kill  -L   //查看kill选项
                    -l    同理
[root@ztq ~]# kill  信号(signal)  pid
    -TERM  -15    //默认信号,不写信号选项的时候默认是它
    -KILL  -9     //强制杀死
    -CONT  -18    //激活进程
    -STOP  -19    //挂起进程
    -HUP   -1     //重新加载进程或者重新加载配置文件


pkill
    -9  进程名称    连终端本身一起杀掉
    -t  终端        只杀死在终端上运行的进程
    -u  用户名称    终止其所有进程的用户名   


killall  信号  进程名称

  • 16
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑黢黢的煤球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值