RHCSA之系统进程学习.17949520

发布时间 2024-01-08 17:34:28作者: 代码你敲我不敲

什么是进程

在linux系统中,触发任何一个事件时,系统都会讲他定义成为一个进程。并且回给予这个进城一个ID,称为PID,同时根据出发这个进程的用户与相关属性关系,会给予这个进程一个一组有效的权限设置。

进程与程序

进程的产生

一般来说,执行一个程序或命令就可以触发一个事件而获取一个PID。

任务管理

了解任务管理

这个任务管理(jio control)是用在bash环境下的,也就是当我们登录系统获取bash shell之后,在单一终端下同时执行多个任务的操作管理。

什么是任务管理

执行任务管理操作中,其实每个任务都是目前bash的子进程,即彼此之间是有相关性的,我们无法用任务管理的方式有tty1的环境去管理tty2的bash。

假设我们只有一个终端,因此出现提示符让你操作的环境就成为前台(foreground),至于其他任务可以放在后台(background)去暂停或运行。注意,放入后台的任务想要运行时,他必须不能和用户交互。

总结

总之,要执行bash的任务管理必须要注意到的限制是:
    1.这些任务所触发的进程必须来自于你的shell的子进程(只管理自己的bash)
    2.前台:可以控制与执行米杠零的这个环境称为前台的服务(foreground)
    3.后台:可以自动执行的任务,你无法使用[ctrl+c]终止它,可以使用bg,fg调用该任务
    4.后台中执行的进程不能等待terminal或shell的输入(input),否则会一直等待。

job control的管理

bash只能够管理自己的任务而不能管理其他bash的任务,所以即使使用者为root也不能够将别的bash下的job拿过来执行。

后台的状态

在后台的任务状态可以分为`暂停(stop)`和`运行(running)`

实际执行job控制的命令

  1. &
    意义:将任务丢到后台执行,并返回到当前终端
    用法:输入一个命令,在该命令的最后面加入一个&(bash会给这个命令一个任务号码job number,就是[1])

    放入后台

     [root@localhost test]# tar -zpcf lnmp.tarrr  lnmp &
     [1] 2272      #[1]是job number 2272是pid
     [root@localhost test]# ls
     lnmp  lnmp.tarrr  lnmp.zip
     [1]+  Done    #Done表示完成         tar -zpcf lnmp.tarrr  lnmp
    

    放入后台后仍会输出信息,但前台操作正常

     [root@localhost test]# unzip lnmp.zip &
     [1] 2320
     [root@localhost test]# Archive:  lnmp.zip
     creating: lnmp/
     creating: lnmp/lnmp/
     inflating: lnmp/lnmp/alsa-lib-1.1.8-1.el7.x86_64.rpm  
     inflating: lnmp/lnmp/apr-1.4.8-5.el7.x86_64.rpm  
     inflating: lnmp/lnmp/apr-util-1.5.2-6.el7.x86_64.rpm  
     inflating: lnmp/lnmp/libxcb-1.13-1.el7.x86_64.rpm  
     [root@localhost test]#    #可以发现这个操作放入后台仍会输出信息,但此时我们正常前台操作不会受影响
     inflating: lnmp/lnmp/libXcomposite-0.4.4-4.1.el7.x86_64.rpm  
     [1]+  Done                    unzip lnmp.zip
    

    放入后台,不输出信息到前台

    [root@localhost test]# unzip lnmp.zip > tar.txt &  #我们可以使用重定向符号将输出的信息放入文件中,从而不在前台输出
     [2] 2336
     [root@localhost test]# ls
     lnmp  lnmp.tarrr  lnmp.zip  tar.txt
     [2]-  Done                    unzip lnmp.zip > tar.txt
    
  2. crtl+z
    意义:将目前的任务丢到后台中暂停
    用法:直接按住ctrl+z

    [root@localhost test]# vim tar.txt 
    [2]+  Stopped                 vim tar.txt
    
  3. jobs
    意义:查看目前的的后台任务状态
    选项:

    选项 解释
    -l 列出job number,命令串,和pid
    -r 仅列出正在后台run的任务
    -s 仅列出在后台当中暂停(stop)的任务

    用法:

    查看当前后台任务状态
    [root@localhost test]# jobs 
    [1]-  Stopped                 unzip lnmp.zip > tar.txt
    [2]+  Stopped                 vim tar.txt
    
    查看当前后台任务状态,列出job number,命令串,和pid
    [root@localhost test]# jobs -l
    [1]-  2330 Stopped (tty input)     unzip lnmp.zip > tar.txt
    [2]+  2352 Stopped                 vim tar.txt
    
    查看当前后台任务状态,仅列出正在后台run的任务
    [root@localhost test]# jobs -r
    [3]   Done                    unzip lnmp.zip > tar.txt
    
    查看当前后台任务状态,仅列出在后台当中暂停(stop)的任务
    [root@localhost test]# jobs -s
    [1]-  Stopped                 unzip lnmp.zip > tar.txt
    [2]+  Stopped                 vim tar.txt
    
  4. fg

  5. bg

  6. kill

管理进程

ps 查看静态进程

[root@localhost ~]# ps
    PID TTY          TIME CMD
   2109 pts/0    00:00:00 bash
   2132 pts/0    00:00:00 ps

解释;
1.PID 进程ID号
2.TTY 得到终端的方式
pts 表示伪终端(远程ssh连接,图形化登录)
tty(1-6) 表示终端设备,tty2表示有桌面图形化的环境
?表示没有终端,是内核进程
3.TIME 表示进程的持续时间 如果是00:00(一种可能,刚刚发起;另一种可能,持续的在进行)
4.CMD 运行的命令
扩展:

[root@localhost test]# w #查看当前系统有多少个用户在登陆
 17:12:34 up  1:09,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty2      16:03    1:09m  0.02s  0.02s /usr/libexec/gnome-session-binary
root     pts/0     16:03    0.00s  0.71s  0.01s w

ps默认只能查看当前终端

如果想要查看所有终端上的进程,则使用-a选项

选项

选项 解释
-a 查看所有终端执行的进程
-x 查看不属于终端的进程
-u 查看用户
-o 指定选项
-e 查看所有进程
-f 查看用户PID PPID C(CPU资源占用) stime command
--sort 按照指定顺序排序[ps -aux --sort=(-[加这个减号代表按照从高到低排序])%cpu](默认是从低到高)

eg:ps -ao user,%cpu,%men,command

[root@localhost ~]# ps -aux|head  -n 5
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.3 171628 15876 ?        Ss   19:52   0:01 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
root           2  0.0  0.0      0     0 ?        S    19:52   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   19:52   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<   19:52   0:00 [rcu_par_gp]
[root@localhost ~]# 
解释
USER 用户
PID PID
%CPU 占用的cpu的百分比
%MEM 占用的内存的百分比
VSZ 这个进程所占用的虚拟内存
RSS 这个进程所占用的实际内存
TTY 获取终端的方式
STAT 状态(s 休眠)
START 进程开启的时间
TIME 占用cpu的时间
COMMAND 进程执行的命令

top

top命令的交互模式(可以上下键移动)

参数 解释
1 查看每个逻辑cpu的资源信息
M 按照占用内存的百分比进行排序
m 查看内存进度条模式的百分比
P 按照cpu的百分比进行排序
c 显示命令的名称
T 根据占用时间进行排序
K 杀死pid(顶栏下一行)