“Linux 进程管理”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
 
(未显示2个用户的19个中间版本)
第1行: 第1行:
 
任务04:进程管理
 
任务04:进程管理
==linux基本命令==
 
== 本章内容 ==
 
  
什么是进程
+
思考:如何查询指定名字的进程?
  
进程管理
+
如何杀死指定名字的进程?
 
 
系统监视工具
 
 
 
计划任务
 
 
 
 
 
== 程序与进程的关系 ==
 
 
 
 
 
=== 程序 ===
 
 
 
保存在硬盘、光盘等介质中的可执行代码和数据
 
 
 
是静态保存的代码
 
 
 
 
 
=== 进程 ===
 
 
 
在CPU及内存中运行的程序代码
 
 
 
是动态执行的代码
 
 
 
父、子进程:每个进程可以创建一个或多个进程
 
  
 +
如何给进程设置优先级?优先级的范围是多少?
  
 
== 查看进程信息 ==
 
== 查看进程信息 ==
第36行: 第12行:
  
 
用途:查看静态的进程统计信息
 
用途:查看静态的进程统计信息
 
格式:ps aux
 
 
ps -elf
 
  
 
常用命令选项
 
常用命令选项
第49行: 第21行:
 
  -l:使用长格式显示进程信息
 
  -l:使用长格式显示进程信息
 
  -f:使用完整的格式显示进程信息</nowiki>
 
  -f:使用完整的格式显示进程信息</nowiki>
 +
 +
====查看当前用户在当前控制台上启动的进程====
 +
 +
[root@localhost memcached-1.4.29]# ps
 +
 +
<nowiki>PID TTY          TIME CMD
 +
9280 pts/1    00:00:00 bash
 +
10151 pts/1    00:00:00 ps</nowiki>
 +
 +
*PID:表示进程号,系统根据这个编号处理相应的进程。
 +
*TTY:表示登陆的终端号。
 +
*TIME:表示该进程消耗的cpu时间。
 +
*CMD:表示正在执行的命令或进程。
 +
 +
查看当前控制台上进程的详细信息:
 +
 +
[root@localhost memcached-1.4.29]# ps -l
 +
 +
<nowiki>F S  UID  PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
 +
4 S    0  9280  9273  0  80  0 - 27090 wait  pts/1    00:00:00 bash
 +
4 R    0 10156  9280  0  80  0 - 26494 -      pts/1    00:00:00 ps</nowiki>
 +
 +
*F:该进程状态的标记。
 +
*S:进程状态代码。
 +
*UID:进程执行者的ad号。
 +
*PPID:父进程的标识符。
 +
*PRI:进程执行的动态优先级。
 +
*NI:进程执行的静态优先级。
 +
*SZ:进程占用内存空间的大小,以kb为单位。
 +
 +
====静态显示每位用户的所有进程====
 +
(ps aux 或 ps -ef):
  
 
[root@localhost ~]# ps aux
 
[root@localhost ~]# ps aux
第58行: 第62行:
 
root      4  0.0  0.0      0      0 ?        S<  Apr02    0:00  [khelper]</nowiki>
 
root      4  0.0  0.0      0      0 ?        S<  Apr02    0:00  [khelper]</nowiki>
  
 +
USER:该进程是由哪个用户产生的。
 +
 +
PID:进程的 ID。
 +
 +
%CPU:该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
 +
 +
%MEM:该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
 +
 +
VSZ:该进程占用虚拟内存的大小,单位为 KB。
 +
 +
RSS:该进程占用实际物理内存的大小,单位为 KB。
 +
 +
TTY:该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
 +
 +
STAT:进程状态。常见的状态有以下几种:
 +
 +
    -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
 +
    -R:该进程正在运行。
 +
    -S:该进程处于睡眠状态,可被唤醒。
 +
    -T:停止状态,可能是在后台暂停或进程处于除错状态。
 +
    -W:内存交互状态(从 2.6 内核开始无效)。
 +
    -X:死掉的进程(应该不会出现)。
 +
    -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
 +
    -<:高优先级(以下状态在 BSD 格式中出现)。
 +
    -N:低优先级。
 +
    -L:被锁入内存。
 +
    -s:包含子进程。
 +
    -l:多线程(小写 L)。
 +
    -+:位于后台。
 +
 +
START:该进程的启动时间。
 +
 +
TIME:该进程占用 CPU 的运算时间,注意不是系统时间。
 +
 +
COMMAND:产生此进程的命令名。
 +
 +
参考:https://blog.51cto.com/u_15127651/4293512
 +
 +
====查找指定用户的进程====
 +
[root@ecs-c6f9 ~]# ps -u root
 +
 +
    <nowiki>PID TTY          TIME CMD
 +
      1 ?        00:00:01 systemd
 +
      2 ?        00:00:00 kthreadd
 +
      3 ?        00:00:00 rcu_gp
 +
      4 ?        00:00:00 rcu_par_gp
 +
      6 ?        00:00:00 kworker/0:0H-events_highpri
 +
      8 ?        00:00:00 kworker/u4:0-events_unbound
 +
      9 ?        00:00:00 mm_percpu_wq
 +
    10 ?        00:00:00 ksoftirqd/0</nowiki>
 +
 +
====查找指定进程====
 +
注意,虽然-aux参数可以提供最详尽的信息,但是有时并不是很容易找出所需的信息,因此,系统管理员常常配合grep命令的使用,以缩小查看范围。
 +
 +
ps aux | grep 进程关键字
 +
 +
<nowiki>[fly@localhost memcached-1.4.29]$ ps aux |grep fly
 +
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
 +
root    10171  0.0  0.0 161352  1860 pts/1    S    06:32  0:00 su fly
 +
fly      10173  0.0  0.0 108360  1796 pts/1    S    06:32  0:00 bash
 +
fly      10187  0.0  0.0 108084  1100 pts/1    R+  06:33  0:00 ps -aux
 +
fly      10188  0.0  0.0 103264  848 pts/1    S+  06:33  0:00 grep fly</nowiki>
  
 
=== top命令 ===
 
=== top命令 ===
  
用途:查看动态的进程排名信息
+
用途:动态显示所有进程,并显示排名
 +
 
 +
这个命令与ps命令很相似,都是用来显示目前系统正在执行的进程,但是与ps命令最大的不同是,它在执行后会于指定的时间间隔来更新显示的信息,因此它可以动态的监督系统性能。
  
 
[root@localhost ~]# top
 
[root@localhost ~]# top
第75行: 第143行:
 
     2 root      34  19    0    0    0 S  0.0  0.0  0:00.07 ksoftirqd/0</nowiki>
 
     2 root      34  19    0    0    0 S  0.0  0.0  0:00.07 ksoftirqd/0</nowiki>
  
 
+
*按P键根据CPU占用情况对进程列表进行排序
 
+
*按M键根据内存占用情况进行排序
 +
*按N键根据启动时间进行排序
 +
*按h键可以获得top程序的在线帮助信息
 +
*按q键可以正常退出top程序
 +
*按k结束进程(9:强制结束进程)
 +
*按r修改优先级(NI)
 +
*使用空格键可以强制更新进程状态显示
  
 
=== pgrep命令 ===
 
=== pgrep命令 ===
第94行: 第168行:
 
2541 klogd
 
2541 klogd
 
3221 login
 
3221 login
[root@localhost ~]# pgrep -l -U teacher -t tty1
+
[root@maxin ~]# pgrep -l -U root -t tty1
27483 bash
+
2315 Xorg
27584 vim</nowiki>
+
</nowiki>
  
  
第118行: 第192行:
 
   │  └─{auditd},2517
 
   │  └─{auditd},2517
 
   ├─automount,2842</nowiki>
 
   ├─automount,2842</nowiki>
 
 
== 进程的不同启动方式 ==
 
 
 
=== 手工启动 ===
 
 
前台启动:用户输入命令,直接执行程序
 
 
后台启动:在命令行尾加入“&”符号
 
 
<nowiki>[root@localhost ~]# cp /dev/cdrom mycd.iso &
 
[1] 28454</nowiki>
 
 
后台任务序号为1,PID号为28454
 
 
 
=== 调度启动 ===
 
 
使用at命令,设置在某个特定的时间,执行一次任务
 
 
使用crontab命令,设置按固定的周期(如每天、每周等)重复执行预先计划好的任务
 
 
 
 
== 进程的前后台调度 ==
 
 
 
=== Ctrl+Z 组合键 ===
 
 
将当前进程挂起,即调入后台并停止执行
 
 
 
=== jobs命令 ===
 
 
查看处于后台的任务列表
 
 
 
=== fg命令 ===
 
 
将处于后台的进程恢复到前台运行,需指定任务序号
 
 
<nowiki>[root@localhost ~]# jobs
 
[1]-  Stopped                cp /dev/cdrom mycd.iso
 
[2]+  Stopped                top
 
[root@localhost ~]# fg 1</nowiki>
 
 
  
 
== 终止进程的运行 ==
 
== 终止进程的运行 ==
第180行: 第207行:
 
-9 选项用于强制终止
 
-9 选项用于强制终止
  
  <nowiki>[root@localhost ~]# pgrep -l "portmap"
+
  <nowiki>[root@ecs-c6f9 ~]# ps aux| grep "123"
2869 portmap
+
root        1813  0.0  0.1 25652  5472 pts/0    T    14:14  0:00 vi 123.txt
[root@localhost ~]# kill -9  2869
+
root       1816  0.0  0.0  12136 1088 pts/0    R+  14:16  0:00 grep --color=auto 123
[root@localhost ~]# killall -9 vim
+
[root@ecs-c6f9 ~]# kill -9 1813
[1]-  已杀死              /usr/bin/vim file1
 
[2]-  已杀死              /usr/bin/vim file2
 
 
</nowiki>
 
</nowiki>
  
 +
=== pkill命令 ===
 +
 +
Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。
 +
 +
kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。
  
=== pkill命令 ===
+
语法
用途:根据特定条件终止相应的进程
+
 
 +
  pkill [选项]  name
 +
 
 +
参数说明:
 +
 
 +
<nowiki>name : 进程名
 +
选项包含如下几个参数:
 +
-U:根据进程所属的用户名终止相应进程
 +
-o 仅向找到的最小(起始)进程号发送信号 -n 仅向找到的最大(结束)进程号发送信号
 +
-P 指定父进程号发送信号
 +
-g 指定进程组
 +
-t 指定开启进程的终端</nowiki>
 +
 
 +
实例
  
常用命令选项:
+
pkill -9  php-fpm          //结束所有的 php-fpm 进程
  
<nowiki>-U:根据进程所属的用户名终止相应进程
 
-t:根据进程所在的终端终止相应进程</nowiki>
 
  
 
  <nowiki>[root@localhost ~]# w | grep -v "root"
 
  <nowiki>[root@localhost ~]# w | grep -v "root"
第209行: 第250行:
  
  
 +
== 进程的前后台调度 ==
  
 +
=== jobs命令 ===
  
== 桌面环境下监视系统 ==
+
jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。
 
通过系统监视器可以实现对CPU、硬盘、内存和交换分区的实时监视
 
  
 +
<nowiki>[root@localhost memcached-1.4.29]# find / -name password123 &
 +
[root@localhost memcached-1.4.29]# jobs -l
 +
[2]+ 10295 Done                    find / -name password123</nowiki>
  
  
== 计划任务管理 —— at ==
 
  
 +
=== Ctrl+Z 组合键 ===
  
=== at命令 ===
+
将当前进程挂起
  
在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
+
[root@localhost memcached-1.4.29]# vi 123.txt
  
服务脚本名称:/etc/init.d/atd
+
[1]+  Stopped                vi 123.txt
  
设置格式:at  [HH:MM]  [yyyy-mm-dd]
+
===bg命令===
 +
这个命令可以将挂起的前台作业切换到后台运行。
  
  <nowiki>[root@localhost ~]# service atd start
+
  <nowiki>[root@localhost memcached-1.4.29]# bg 1
启动 atd:                                              [确定]
+
[1]+ vi 123.txt &</nowiki>
[root@localhost ~]# at 23:45  #按Ctrl+D键提交任务
 
at> shutdown -h now
 
at> <EOT>
 
job 1 at 2009-09-14 23:45
 
[root@localhost ~]# atq
 
1      2009-09-14 23:45 a root
 
</nowiki>
 
  
 +
===fg命令===
 +
这个命令可以把后台作业调入前台运行。
  
 +
我们可以把刚才做要好唯一的作业切换到前台,继续执行。
  
== 计划任务管理 —— crontab ==
+
[root@localhost ~]# fg 1</nowiki>
 
 
  
=== crontab命令 ===
+
==设置进程的优先级==
 +
在linux中,每个进程在执行时都会被赋予使用cpu的优先等级。优先等级越高,系统提供较多的cpu使用时间,需要较短的执行时间,反之则需要较长的执行时间,因此如有特殊的需求,可以使用nice和renice命令来自行设置进程执行的优先级。
  
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
+
一般进程执行时的优先等级范围为-20 ~19 ,其中-20等级最高,而19的等级最低。
  
[root@localhost ~]# cat /etc/crontab
+
===nice命令===
 +
格式:nice [-优先级数值] 命令
  
<nowiki>SHELL=/bin/bash
+
功能:用指定的优先级来启动指定进程。
PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
MAILTO=root
 
HOME=/
 
# run-parts
 
01 * * * * root run-parts /etc/cron.hourly
 
02 4 * * * root run-parts /etc/cron.daily
 
22 4 * * 0 root run-parts /etc/cron.weekly
 
42 4 1 * * root run-parts /etc/cron.monthly
 
</nowiki>
 
  
 +
以下通过六个不同优先等级的命令来说明nice命令的使用方法。
  
=== 管理cron计划任务 ===
+
没有使用nice命令,优先级为0;使用nice命令,优先级默认为10;使用nice命令,指定范围在-20~19之间,根据实际值,最大不超过-20~19
  
编辑计划任务:crontab -[-u  用户名]
+
  <nowiki>[root@localhost memcached-1.4.29]# vi &
 +
[1] 10336
 +
#以优先等级0在后台执行vi程序
  
查看计划任务:crontab  -l  [-u  用户名]
 
  
删除计划任务:crontab  -r  [-u  用户名]
 
  
root用户可以管理指定用户的计划任务
+
[root@localhost memcached-1.4.29]# nice vi &
 +
[2] 10337
 +
#以优先等级10在后台执行vi程序
  
普通用户只能管理自己的计划任务
 
  
  
 +
[1]+  Stopped                vi
 +
[root@localhost memcached-1.4.29]# nice -50 vi &
 +
[3] 10338
 +
[2]+  Stopped                nice vi
 +
#以优先等级19在后台执行vi程序
  
=== crontab任务的配置格式 ===
 
  
[[文件:linux5-2.png]]
+
[root@localhost memcached-1.4.29]# nice -18 vi &
+
[4] 10340
时间数值的特殊表示方法
 
  
  <nowiki>
+
[3]+ Stopped                nice -50 vi
*   表示该范围内的任意时间
+
#以优先等级18在后台执行程序
,    表示间隔的多个不连续时间点
 
-   表示一个连续的时间范围
 
/   指定间隔的时间频率</nowiki>
 
  
 +
[root@localhost memcached-1.4.29]# nice --18 vi &
 +
[5] 10342
  
应用示例
+
[4]+  Stopped                nice -18 vi
 +
#以优先等级-18在后台执行程序
  
<nowiki>
+
[root@localhost memcached-1.4.29]# nice --50 vi &
0  17  *  *  1-5 周一到周五每天17:00
+
[6] 10343
30  8  *  *  1,3,5 每周一、三、五的8点30分
 
0  8-18/2  *  *  * 8点到18点之间每隔2小时
 
0  *  */3  *  * 每隔3天</nowiki>
 
  
 +
[5]+  Stopped                nice --18 vi
 +
#以优先等级-20在后台执行vi程序
  
=== crontab应用示例 ===
+
[root@localhost memcached-1.4.29]# ps -l
 +
F S  UID  PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
 +
4 S    0  9280  9273  0  80  0 - 27090 wait  pts/1    00:00:00 bash
 +
0 T    0 10336  9280  0  80  0 - 29282 signal pts/1    00:00:00 vi
 +
0 T    0 10337  9280  0  90  10 - 29282 signal pts/1    00:00:00 vi
 +
0 T    0 10338  9280  0  99  19 - 29282 signal pts/1    00:00:00 vi
 +
0 T    0 10340  9280  0  98  18 - 29282 signal pts/1    00:00:00 vi
 +
4 T    0 10342  9280  0  62 -18 - 29282 signal pts/1    00:00:00 vi
 +
4 T    0 10343  9280  0  60 -20 - 29282 signal pts/1    00:00:00 vi
 +
4 R    0 10344  9280  0  80  0 - 26494 -      pts/1    00:00:00 ps
 +
</nowiki>
  
示例1(root用户):
+
===renice命令===
 +
格式:renice 优先级数值 参数
  
<nowiki>每天早上7:50自动开启sshd服务,22点50时关闭
+
renice -15 2564
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
 
每周六的7:30时,重新启动httpd服务
 
每周一、三、五的17:30时,打包备份/etc/httpd目录</nowiki>
 
  
示例2(jerry用户):
+
renice -6 -g student
  
每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件
+
== 桌面环境下监视系统 ==
 
+
 
+
通过系统监视器可以实现对CPU、硬盘、内存和交换分区的实时监视
示例3:
 
 
 
root用户查看自己的计划任务列表
 
 
 
查看并删除jerry用户设置的计划任务
 
 
 
<nowiki>[root@localhost root]# crontab -l -u jerry
 
55 23 * * 7  /bin/cp /etc/passwd /home/jerry/pwd.txt
 
[root@localhost root]# crontab -r -u jerry
 
[root@localhost root]# crontab -l -u jerry
 
no crontab for jerry
 
[root@localhost root]#
 
</nowiki>
 
 
 
==实验:管理进程并设置计划任务 ==
 
  
  
=== 需求描述 ===
 
  
*管理系统中的进程
 
**确认vsftpd、sshd服务的启动状态,并关闭vsftpd服务
 
**启动bluetooth服务,然后使用kill命令终止其运行
 
**查找系统中CPU占用率超过80的进程,并强行终止该进程
 
**练习各种进程管理命令的使用
 
*设置计划运行的系统管理任务
 
**每周一早上7:50自动清空FTP服务器公共目录“/var/ftp/pub”
 
**每天晚上10:30分自动执行任务,保存磁盘使用情况信息
 
*查看所设置的计划任务列表
 
  
 
返回 [[Linux基础]]
 
返回 [[Linux基础]]

2022年5月30日 (一) 14:00的最新版本

任务04:进程管理

思考:如何查询指定名字的进程?

如何杀死指定名字的进程?

如何给进程设置优先级?优先级的范围是多少?

查看进程信息

ps命令

用途:查看静态的进程统计信息

常用命令选项

a:显示当前终端下的所有进程信息
 u:使用以用户为主的格式输出进程信息
 x:显示当前用户在所有终端下的进程信息 
 -e:显示系统内的所有进程信息
 -l:使用长格式显示进程信息
 -f:使用完整的格式显示进程信息

查看当前用户在当前控制台上启动的进程

[root@localhost memcached-1.4.29]# ps

PID TTY          TIME CMD
 9280 pts/1    00:00:00 bash
10151 pts/1    00:00:00 ps
  • PID:表示进程号,系统根据这个编号处理相应的进程。
  • TTY:表示登陆的终端号。
  • TIME:表示该进程消耗的cpu时间。
  • CMD:表示正在执行的命令或进程。

查看当前控制台上进程的详细信息:

[root@localhost memcached-1.4.29]# ps -l

F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  9280  9273  0  80   0 - 27090 wait   pts/1    00:00:00 bash
4 R     0 10156  9280  0  80   0 - 26494 -      pts/1    00:00:00 ps
  • F:该进程状态的标记。
  • S:进程状态代码。
  • UID:进程执行者的ad号。
  • PPID:父进程的标识符。
  • PRI:进程执行的动态优先级。
  • NI:进程执行的静态优先级。
  • SZ:进程占用内存空间的大小,以kb为单位。

静态显示每位用户的所有进程

(ps aux 或 ps -ef):

[root@localhost ~]# ps aux

USER  PID %CPU %MEM VSZ RSS TTY STAT START TIME  COMMAND
root       1  0.0  0.3     2648   604 ?        S    Apr02     0:13   init [3]
root       2  0.0  0.0       0       0 ?        SN   Apr02    0:00   [ksoftirqd/0]
root       3  0.0  0.0       0       0 ?        S<   Apr02    0:19   [events/0]
root       4  0.0  0.0       0       0 ?        S<   Apr02    0:00   [khelper]

USER:该进程是由哪个用户产生的。

PID:进程的 ID。

%CPU:该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。

%MEM:该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。

VSZ:该进程占用虚拟内存的大小,单位为 KB。

RSS:该进程占用实际物理内存的大小,单位为 KB。

TTY:该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。

STAT:进程状态。常见的状态有以下几种:

   -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
   -R:该进程正在运行。
   -S:该进程处于睡眠状态,可被唤醒。
   -T:停止状态,可能是在后台暂停或进程处于除错状态。
   -W:内存交互状态(从 2.6 内核开始无效)。
   -X:死掉的进程(应该不会出现)。
   -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
   -<:高优先级(以下状态在 BSD 格式中出现)。
   -N:低优先级。
   -L:被锁入内存。
   -s:包含子进程。
   -l:多线程(小写 L)。
   -+:位于后台。

START:该进程的启动时间。

TIME:该进程占用 CPU 的运算时间,注意不是系统时间。

COMMAND:产生此进程的命令名。

参考:https://blog.51cto.com/u_15127651/4293512

查找指定用户的进程

[root@ecs-c6f9 ~]# ps -u root

   PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      6 ?        00:00:00 kworker/0:0H-events_highpri
      8 ?        00:00:00 kworker/u4:0-events_unbound
      9 ?        00:00:00 mm_percpu_wq
     10 ?        00:00:00 ksoftirqd/0

查找指定进程

注意,虽然-aux参数可以提供最详尽的信息,但是有时并不是很容易找出所需的信息,因此,系统管理员常常配合grep命令的使用,以缩小查看范围。

ps aux | grep 进程关键字
[fly@localhost memcached-1.4.29]$ ps aux |grep fly
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root     10171  0.0  0.0 161352  1860 pts/1    S    06:32   0:00 su fly
fly      10173  0.0  0.0 108360  1796 pts/1    S    06:32   0:00 bash
fly      10187  0.0  0.0 108084  1100 pts/1    R+   06:33   0:00 ps -aux
fly      10188  0.0  0.0 103264   848 pts/1    S+   06:33   0:00 grep fly

top命令

用途:动态显示所有进程,并显示排名

这个命令与ps命令很相似,都是用来显示目前系统正在执行的进程,但是与ps命令最大的不同是,它在执行后会于指定的时间间隔来更新显示的信息,因此它可以动态的监督系统性能。

[root@localhost ~]# top

top - 06:08:48 up 4 days,  6:57,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  60 total,   1 running,  59 sleeping,   0 stopped,   0 zombie
Cpu(s): 0.3% us,  0.7% sy, 0.0% ni, 97.4% id,  0.4% wa,  0.1% hi, 1.1% si
Mem:    191228k total,   171424k used,    19804k free,    19436k buffers
Swap:   265064k total,     1284k used,   263780k free,   120480k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM  TIME+  COMMAND
 6779 root      16   0  2536  832  668 R  3.8  0.4   0:00.04 top
    1 root      16   0  2648  604  520 S  0.0  0.3   0:13.54 init
    2 root      34   19     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0
  • 按P键根据CPU占用情况对进程列表进行排序
  • 按M键根据内存占用情况进行排序
  • 按N键根据启动时间进行排序
  • 按h键可以获得top程序的在线帮助信息
  • 按q键可以正常退出top程序
  • 按k结束进程(9:强制结束进程)
  • 按r修改优先级(NI)
  • 使用空格键可以强制更新进程状态显示

pgrep命令

用途:根据特定条件查询进程PID信息

常用命令选项:

-l:列出进程的名称
 -U:根据进程所属的用户名进行查找
 -t:根据进程所在的终端进行查找
[root@localhost ~]# pgrep "init"
1
[root@localhost ~]# pgrep -l "log"
2538 syslogd
2541 klogd
3221 login
[root@maxin ~]#  pgrep -l -U root -t tty1
2315 Xorg


pstree命令

用途:以树型结构显示各进程间的关系

常用命令选项:

-p:列出进程的PID号
 -u:列出进程对应的用户名
 -a:列出进程对应的完整命令

[root@localhost ~]# pstree -aup

init,1
  ├─acpid,2866
  ├─atd,3060
  ├─auditd,2516
  │   ├─python,2518 /sbin/audispd
  │   └─{auditd},2517
  ├─automount,2842

终止进程的运行

Ctrl+C组合键

中断正在执行的命令


kill、killall命令

kill用于终止指定PID号的进程

killall用于终止指定名称的所有进程

-9 选项用于强制终止

[root@ecs-c6f9 ~]# ps aux| grep "123"
root        1813  0.0  0.1  25652  5472 pts/0    T    14:14   0:00 vi 123.txt
root        1816  0.0  0.0  12136  1088 pts/0    R+   14:16   0:00 grep --color=auto 123
[root@ecs-c6f9 ~]# kill -9 1813

pkill命令

Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。

kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。

语法

 pkill [选项]  name

参数说明:

name : 进程名
 选项包含如下几个参数:
-U:根据进程所属的用户名终止相应进程
-o 仅向找到的最小(起始)进程号发送信号 -n 仅向找到的最大(结束)进程号发送信号
-P 指定父进程号发送信号
-g 指定进程组
-t 指定开启进程的终端

实例

pkill -9  php-fpm          //结束所有的 php-fpm 进程


[root@localhost ~]# w | grep -v "root"
14:10:10 up  6:08,  4 users,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
teacher  tty1     -                14:04    5:34   0.16s  0.16s -bash
hackli   pts/1    173.17.17.174    14:05    4:32   0.17s  0.17s -bash 
[root@localhost ~]# pkill -9 -t pts/1
[root@localhost ~]# w | grep -v "root"
 14:12:22 up  6:10,  3 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
teacher  tty1     -                14:04    7:46   0.16s  0.16s -bash


进程的前后台调度

jobs命令

jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。

[root@localhost memcached-1.4.29]# find / -name password123 &
[root@localhost memcached-1.4.29]# jobs -l
[2]+ 10295 Done                    find / -name password123


Ctrl+Z 组合键

将当前进程挂起

[root@localhost memcached-1.4.29]# vi 123.txt

[1]+ Stopped vi 123.txt

bg命令

这个命令可以将挂起的前台作业切换到后台运行。

[root@localhost memcached-1.4.29]# bg 1
[1]+ vi 123.txt &

fg命令

这个命令可以把后台作业调入前台运行。

我们可以把刚才做要好唯一的作业切换到前台,继续执行。

[root@localhost ~]# fg 1</nowiki>

设置进程的优先级

在linux中,每个进程在执行时都会被赋予使用cpu的优先等级。优先等级越高,系统提供较多的cpu使用时间,需要较短的执行时间,反之则需要较长的执行时间,因此如有特殊的需求,可以使用nice和renice命令来自行设置进程执行的优先级。

一般进程执行时的优先等级范围为-20 ~19 ,其中-20等级最高,而19的等级最低。

nice命令

格式:nice [-优先级数值] 命令

功能:用指定的优先级来启动指定进程。

以下通过六个不同优先等级的命令来说明nice命令的使用方法。

没有使用nice命令,优先级为0;使用nice命令,优先级默认为10;使用nice命令,指定范围在-20~19之间,根据实际值,最大不超过-20~19

[root@localhost memcached-1.4.29]# vi &
[1] 10336
#以优先等级0在后台执行vi程序



[root@localhost memcached-1.4.29]# nice vi &
[2] 10337
#以优先等级10在后台执行vi程序



[1]+  Stopped                 vi
[root@localhost memcached-1.4.29]# nice -50 vi &
[3] 10338
[2]+  Stopped                 nice vi
#以优先等级19在后台执行vi程序


[root@localhost memcached-1.4.29]# nice -18 vi &
[4] 10340

[3]+  Stopped                 nice -50 vi
#以优先等级18在后台执行程序

[root@localhost memcached-1.4.29]# nice --18 vi &
[5] 10342

[4]+  Stopped                 nice -18 vi
#以优先等级-18在后台执行程序

[root@localhost memcached-1.4.29]# nice --50 vi &
[6] 10343

[5]+  Stopped                 nice --18 vi
#以优先等级-20在后台执行vi程序

[root@localhost memcached-1.4.29]# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  9280  9273  0  80   0 - 27090 wait   pts/1    00:00:00 bash
0 T     0 10336  9280  0  80   0 - 29282 signal pts/1    00:00:00 vi
0 T     0 10337  9280  0  90  10 - 29282 signal pts/1    00:00:00 vi
0 T     0 10338  9280  0  99  19 - 29282 signal pts/1    00:00:00 vi
0 T     0 10340  9280  0  98  18 - 29282 signal pts/1    00:00:00 vi
4 T     0 10342  9280  0  62 -18 - 29282 signal pts/1    00:00:00 vi
4 T     0 10343  9280  0  60 -20 - 29282 signal pts/1    00:00:00 vi
4 R     0 10344  9280  0  80   0 - 26494 -      pts/1    00:00:00 ps

renice命令

格式:renice 优先级数值 参数

renice -15 2564

renice -6 -g student

桌面环境下监视系统

通过系统监视器可以实现对CPU、硬盘、内存和交换分区的实时监视



返回 Linux基础