【学神-RHEL7】1-10-RHEL7进程管理

本节所讲内容:

       Linux进程管理

       screen 实战后台实时执行命令备份命令

 

进程管理:

pstree

ps

top

nice 修改进程优先级

kill

前台后台进程切换

free  查看内存

screen

 

程序与进程:

程序是静态的(文件),进程是动态的(运行的程序)。

 

进程和线程:

一个程序至少有一个进程,一个进程至少有一个线程.
进程之间内存是独立

线程之前内存共享   ,高并发好一些 。   安全性差一些。 

 

查看进程树

显示进程号 -p

[root@localhost ~]# pstree -p  | more

systemd(1)-+-ModemManager(1013)-+-{ModemManager}(1046)

           |                    `-{ModemManager}(1072)

           |-NetworkManager(1002)-+-{NetworkManager}(1074)

           |                      |-{NetworkManager}(1076)

 

 

显示目录树形结构

[root@localhost ~]# yum -y install tree

[root@localhost ~]# tree /boot/ | more

/boot/

├── config-3.10.0-229.el7.x86_64

├── grub2

│   ├── device.map

│   ├── fonts

│   │   └── unicode.pf2

│   ├── grub.cfg

 

 

列出目前所有的正在内存当中的进程

ps  -aux

 

[root@localhost ~]# ps -aux

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.1  0.1  57172  4276 ?        Ss   20:21   0:02 /usr/lib/systemd/systemd

root          2  0.0  0.0      0     0 ?        S    20:21   0:00 [kthreadd]

root          3  0.0  0.0      0     0 ?        S    20:21   0:00 [ksoftirqd/0]

root          5  0.0  0.0      0     0 ?        S<   20:21   0:00 [kworker/0:0H]

root          7  0.0  0.0      0     0 ?        S    20:21   0:00 [migration/0]

root          8  0.0  0.0      0     0 ?        S    20:21   0:00 [rcu_bh]

 

USER:运行此进程的用户名

PID :该 process 的号码。

%CPU:该 process 使用掉的 CPU 资源百分比;

%MEM:该 process 所占用的物理内存百分比;

VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

RSS :该 process 占用的固定的内存量 (Kbytes)

TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

 

STAT:该程序目前的状态,Linux进程有5种基本状态:

:(正在运行或在运行队列中等待) 

:该程序目前正在睡眠当中 ,但可被某些讯号 (signal) 唤醒。

:该程序目前暂停了

例: vim a.txt   按下: ctrl+z 

[root@localhost ~]# ps -aux | grep vim

root       2634  0.2  0.1 151396  5104 pts/0    T    20:59   0:00 vim a.txt

root       2644  0.0  0.0 112640   956 pts/0    S+   20:59   0:00 grep --color=auto vim

 

ctrl-c 是发送 SIGINT 信号,终止一个进程

ctrl-z 是发送 SIGSTOP信号,挂起一个进程

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

D:  不可中断状态.

高优先级的  

  N  低优先级的

  s  包含子进程

  l  多线程

  +   前台程序

 

START:该 process 被触发启动的时间;

TIME :该 process 实际使用 CPU 运作的时间。

COMMAND:该程序的实际指令

 

了解:

ps -ef

ps -aux 是用BSD的格式来显示进程。

ps -ef 是用标准的格式显示进程。

 

top  动态查看进程

统计信息区前五行是系统整体的统计信息。

1.     第一行是任务队列信息

同 uptime  命令的执行结果:

[root@localhost ~]# uptime

 21:13:25 up 52 min,  4 users,  load average: 0.06, 0.03, 0.05

 

其内容如下:

21:13:25

当前时间

up 52 min

系统运行时间,格式为时:分

4 users,

当前登录用户数

load average: 0.06, 0.03, 0.05

系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

 

一般来说,每个CPU内核当前活动进程数不大于3,则系统运行表现良好!当然这里说的是每个cpu内核,也就是如果你的主机是四核cpu的话,那么只要uptime最后输出的一串字符数值小于4*3=12即表示系统负载不是很严重.

 

2. 第二、三行为进程和CPU的信息

当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total

进程总数

1 running

正在运行的进程数

28 sleeping

睡眠的进程数

1 stopped

停止的进程数

0 zombie

僵尸进程数

Cpu(s):

0.3% us

系统用户进程使用CPU百分比。 不包括调高优先级的进程。 CPU%是由每个核的CPU占用律之和算出来的。如果你是4核CPU,核1,CPU使用率为100%,核2,CPU使用率为100%。 则会出会CPU 高于100%的现象,最终为200%

1.0% sy

内核中的进程占用CPU百分比

0.0% ni

用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id

空闲CPU百分比

 

 

第四五行为内存信息。内容如下:

Mem: 191272k total

物理内存总量

 

173656k used

使用的物理内存总量

17616k free

空闲内存总量

22052k buff/cache

用作内核缓存的内存量。

和free �Ck 一个意思

wKiom1ZhqjHyRLRdAABGnJ201Ac404.png

Swap: 192772k total

交换区总量

0k used

使用的交换区总量

192772k free

空闲交换区总量

3123008 avail Mem

总的可利用内存是多少

 

 

二.  进程信息

列名

含义

PID

进程id

USER

进程所有者的用户名

NI

进程优先级。 nice值。负值表示高优先级,正值表示低优先级

RES

实际使用内存大小。

S

进程状态。
            D=不可中断的睡眠状态
            R=运行
            S=睡眠
            T=跟踪/停止
            Z=僵尸进程

%CPU

上次更新到现在的CPU时间占用百分比

%MEM

进程使用的物理内存百分比

TIME+

进程使用的CPU时间总计,单位1/100秒

COMMAND

命令名/命令行

 

 

top快捷键:

默认3s刷新一次

空格 :立即刷新。

q退出

M按内存排序

P按CPU排序

<>  翻页

 

控制(关闭)进程:

kill  给进程发送信号(停止进程)

常用信号:

1  HUP   重新加载配置文件。类似重启。

2  INT   和ctrl+c一样   一般用于通知前台进程组终止进程

9  KILL  强行中断

19 STOP  和ctrl+z一样

 

任务:百度一下常见的信号

 

例:

语法:kill -9 pid

 

[root@localhost ~]# ps -aux | grep top

root       1987  0.0  0.5 908168 22496 ?        Sl   20:24   0:00 nautilus --no-default-window --force-desktop

root      34972  0.4  0.0 130288  2164 pts/0    S+   21:49   0:00 top

[root@localhost ~]# kill -9 34972

 

killall 通过程序的名字,直接杀死所有进程

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# systemctl start httpd

[root@localhost ~]# ps -aux | grep httpd

root      35037  0.0  0.1 209000  4772 ?        Ss   21:51   0:00 /usr/sbin/httpd -DFOREGROUND

apache    35038  0.0  0.0 211084  2952 ?        S    21:51   0:00 /usr/sbin/httpd -DFOREGROUND

apache    35039  0.0  0.0 211084  2952 ?        S    21:51   0:00 /usr/sbin/httpd -DFOREGROUND

apache    35040  0.0  0.0 211084  2952 ?        S    21:51   0:00 /usr/sbin/httpd -DFOREGROUND

apache    35041  0.0  0.0 211084  2952 ?        S    21:51   0:00 /usr/sbin/httpd -DFOREGROUND

apache    35042  0.0  0.0 211084  2952 ?        S    21:51   0:00 /usr/sbin/httpd -DFOREGROUND

root      35055  0.0  0.0 112640   960 pts/0    S+   21:53   0:00 grep --color=auto httpd

[root@localhost ~]# killall httpd

 

[root@localhost ~]# systemctl status httpd

httpd.service - The Apache HTTP Server

   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled)

   Active: failed (Result: exit-code) since Fri 2015-12-04 21:53:27 CST; 29s ago

 

或者:

[root@xuegod63 ~]#pkill httpd

 

扩展

vim a.txt  #出现以下情况

E325: ATTENTION

Found a swap file by the name ".a.txt.swp"

          owned by: root   dated: Fri Dec  4 20:59:24 2015

 

解决思路:

1)查看一下有没有对应的进程,有的话杀死

[root@localhost ~]# ps -axu | grep vim

[root@localhost ~]# kill -9 2702

 

2)如果还不能解决,

[root@localhost ~]# rm -rf .a.txt.swp

 

优先级控制:

nice值  -20 ~ 19  越小优先级越高 普通用户0-19

nice

作用:以什么优先级运行进程 。默认优先级是0

语法: nice  -n 优先级数字

[root@localhost ~]# nice -n -5 vim a.txt

[root@localhost ~]# ps -aux | grep vim

root      35209  0.0  0.1 151396  5124 pts/2    S<+  22:04   0:00 vim a.txt

 

[root@localhost ~]# top -p 35209

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

 35209 root      15  -5  151396   5124   2528 S   0.0  0.1   0:00.03 vim       

 

renice  #修改正在运行的进程的优先级

[root@localhost ~]# renice -n 5 35281

35281 (process ID) old priority 0, new priority 5

 

 

了解:

前后台进程切换:

任务:nohup后台指令如何创建

jobs  列出所有后台进程

[root@localhost ~]# vim a.txt &

[2] 35335

 

fg  后台程序改成前台

用法: fg 后期进程序列号

例:

[root@localhost ~]# fg 1

 

free 查看系统内存量

-m按照MB显示

[root@localhost ~]# free -m

              total        used        free      shared  buff/cache   available

Mem:           3939         572        2644           9         721        3047

Swap:          2047           0        2047

 

buffers  #缓存从磁盘读出的内容

cached  #缓存需要写入磁盘的内容

 

运行:

[root@localhost ~]# find /   #在另一个终端查看buffers 增加速度

[root@localhost ~]# dd if=/dev/zero of=/a.txt count=10 bs=100M #在另一个终端查看cache增加速度

 

清空缓存

[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches

[root@localhost ~]# free -m

              total        used        free      shared  buff/cache   available

Mem:           3939         519        3251           9         168        3226

Swap:          2047           0        2047

 

 

screen 实战后台实时执行命令备份命令。

 

1.      安装screen软件包

[root@localhost ~]# rpm -ivh /mnt/Packages/screen-4.1.0-0.19.20120314git3c2946.el7.x86_64.rpm

[root@localhost ~]# yum -y install screen

2.  直接在命令行键入screen命令

   [root@xuegod63 ~]# screen

3.  [root@xuegod63 ~]# vim 1.sh

  命令模式按ctrl+a+d,出现[detached] 即可,再关闭pst

4.  重新打开一个pst窗口执行

[root@xuegod63 ~]# screen -ls

There is a screen on:

        3107pxs-0.xuegod63     (Detached)

1 Socket in /var/run/screen/S-root.

 

5.  [root@xuegod63 ~]# screen -r 2330  #就可以继续进行原来的进程

 

6.  如果你想终止screen则直接把你当前使用的终端关掉就可以了,或者exit

 

学习过程中如果问题,请留言。更多内容请加:
学神IT-linux讲师-RM老师QQ:2805537762
学神IT-戚老师QQ:3341251313
学神IT-旭斌QQ:372469347
学神IT教育RHEL7交流群:468845589

你可能感兴趣的:(进程管理)