十一、进程管理

一、基本介绍

  • 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。

  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器

  • 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行[sshd , crond]。

  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

(1)、显示系统执行的进程

# 显示所有的进程
ps -aux
# 显示当前终端的所有进程信息
ps -a
# 以用户的格式显示进程信息
ps -u
# 显示后台进程运行的参数
ps -x

# 查看sshd进程
ps -aux | grep sshd 

(2)、ps详解

# 比如我看看有没有sshd服务
ps –aux|grep xxx ,

  指令说明

    • System V展示风格

    • USER:用户名称

    • PID:进程号

    • %CPU:进程占用CPU的百分比

    • %MEM:进程占用物理内存的百分比

    • VSZ:进程占用的虚拟内存大小(单位:KB)

    • RSS:进程占用的物理内存大小(单位:KB)

    • TTY:终端名称,缩写 .
    • STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等

    • STARTED:进程的启动时间

    • TIME:CPU时间,即进程使用CPU的总时间

    • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

 以全格式显示当前所有的进程,查看进程的父进程

ps -ef

  • -e 是显示所有的进程,-f全格式
  • UID:用户ID
  • PID:进程ID
  • PPID:父进程ID
  • C:CPU用于计算执行优秀级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低,数值越小,表明进程是I/O密集型运算,执行优先级会提高。
  • STIME:进程启动的时间
  • TTY:完整的终端名称
  • TIME:CPU时间
  • CMD:启动进程所用的命令参数和时间。

二、终止进程kill和killall

(1)、介绍

  若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。

(2)、基本语法

# 通过进程号杀死进程 -9 强制终止
kill  [选项] 进程号     

# 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
killall 进程名称 

(3)、常用选项

  -9 :表示强迫进程立即停止

  案例1: 终止远程登录服务sshd, 在适当时候再次重启sshd服务

  案例2: 终止多个gedit 编辑器

killall gedit

  案例3:强制杀掉一个终端 对于 bash

kill -9 对应的bash的进程号

三、查看进程树pstree

(1)、基本语法:

# 可以更加直观的来看进程信息
pstree [选项] 

(2)、常用选项:

  • -p :显示进程的PID

  • -u :显示进程的所属用户

(3)、应用实例:

案例1:请用树状的形式显示进程的pid

pstree -p

案例2:请用树状的形式进程的用户id

pstree –u
pstree -pu

四、服务(service)管理

(1)、service管理指令

  服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。

service管理指令:

service 服务名 [start | stop | restart | reload | status]

  在CentOS7.0后 不再使用service ,而是 systemctl

使用案例:

   查看当前防火墙的状况,关闭防火墙和重启防火墙

service iptables status

   关闭或者启用防火墙后,立即生效。[telnet 测试 某个端口即可]

service iptables stop 
service iptables start

  这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig指令。

(2)、查看服务名

  方式一:

[root@s2 ~]# setup

  通过tab键调整光标

 方式二:

[root@s2 ~]# ll /etc/init.d/
total 44
-rw-r--r--. 1 root root 13948 Sep 16  2015 functions
-rwxr-xr-x. 1 root root 10576 Jun 22 16:36 mysqld
-rwxr-xr-x. 1 root root  2989 Sep 16  2015 netconsole
-rwxr-xr-x. 1 root root  6630 Sep 16  2015 network
-rw-r--r--. 1 root root  1160 Nov 20  2015 README

(3)、chkconfig指令

  chkconfig指令:通过chkconfig命令可以给每个服务的各个运行级别设置自启动/关闭

  • 基本语法
#查看服务
chkconfig --list|grep xxx

chkconfig 服务名 --list

# 可以指定某个服务,某个运行级别,开启或关闭
chkconfig --level 5 服务名称 on/off

# 不管是哪个级别都关闭
chkconfig 服务名 on/off
  • 应用案例
# 案例一:请显示当前系统所有服务的各个运行级别的运行状态
chkconfig --list

# 案例二:请查看sshd服务的运行状态
service sshd status

# 案例三:将sshd服务在运行级别5下设置为不自动启动,
chkconfig --level 5 sshd off

# 案例四:当运营级别为5时,关闭防护墙
chkconfig --level 5 iptables off

# 案例五:在所有运行级别下,关闭防火墙
chkconfig iptables off

  注意事项:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效。

五、动态监控进程

  top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程(默认每3秒变化一次)

# 基本语法
top [选项]

 

选项 功能
-d 秒数 指定top命令每个几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
-i 使用top不显示任何闲置或者僵死的进程
-p 通过指定监控进程id来仅仅监控某一个进程的状态

 

   交互操作说明

操作 功能
P 以CPU使用率排序,默认就是P
M 以内存的使用率排序
N 以PID排序
q 退出top
# 案例一:监视特定用户
top:输入此指令,按回车键,查看执行的进程
u:然后输入"u"回车,再输入用户名称,即可

# 案例二:终止指定的进程
top:输入此指令,按回车键,查看执行的进程
k:然后输入"k",在输入要结束的进程ID号

# 案例三:指定系统状态更新时间(每隔10秒钟自动更新,默认是3秒)
top -d 10

五、top指令详解

  查看多核CPU命令

# 方式一
mpstat -P ALL  

# 方式二
sar -P ALL 

 

  top命令解释

行号 解释
第一行
  • 17:10:16 — 当前系统时间
  • 1:55 — 系统已经运行了1小时55分钟(在这期间没有重启过)
  • 2 users — 当前有2个用户登录系统
  • load average: 0.00, 0.01,0.05 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
    load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行
  • Tasks — 任务(进程),系统现在共有415个进程,其中处于运行中的有1个,414个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
  • 0.0% us — 用户空间占用CPU的百分比。
  • 0.1% sy — 内核空间占用CPU的百分比。
  • 0.0% ni — 改变过优先级的进程占用CPU的百分比
  • 99.8% id — 空闲CPU百分比
  • 0.0% wa — IO等待占用CPU的百分比
  • 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
  • 0.1% si — 软中断(Software Interrupts)占用CPU的百分比
第四行:内存状态
  • 1868688k total — 物理内存总量
  • 935044k   used — 使用中的内存总量
  • 486580k   free — 空闲内存总量
  • 447064k   buffers — 缓存的内存量 (79M)
第五行:swap交换分区
  • 4194300k    total — 交换区总量
  • 4194300k      used — 使用的交换区总量
  • 0k                 ree — 空闲交换区总量
  • 1176168k      cached — 缓冲的交换区总量
第六行
  • 空行
第七行:各进程(任务)的状态监控
  • PID — 进程id
  • USER — 进程所有者
  • PR — 进程优先级
  • NI — nice值。负值表示高优先级,正值表示低优先级
  • VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
  • RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
  • SHR — 共享内存大小,单位kb
  • S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  • %CPU — 上次更新到现在的CPU时间占用百分比
  • %MEM — 进程使用的物理内存百分比
  • TIME+ — 进程使用的CPU时间总计,单位1/100秒
  • COMMAND — 进程名称(命令名/命令行)

参考博客:https://www.cnblogs.com/edgedance/p/7044753.html

七、监控网络状态

  查看系统网络情况netstat

# 基本语法
netstat [选项]

  选项说明

  • -an 按一定顺序排列输出

  • -p 显示哪个进程在调用

  应用案例

#请查看服务名为 sshd 的服务的信息。
Netstat –anp | grep sshd
#如果我们希望查看当前系统有哪些端口在监听
netstat  -tlnp  
posted @ 2020-12-18 17:40  jingdy  阅读(106)  评论(0编辑  收藏  举报