Linux 进程管理

来自CloudWiki
119.162.11.169讨论2018年6月30日 (六) 05:53的版本 (创建页面,内容为“任务04:进程管理 == 本章内容 == 什么是进程 进程管理 系统监视工具 计划任务 == 程序与进程的关系 == === 程序 === 保…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

任务04:进程管理

本章内容

什么是进程

进程管理

系统监视工具

计划任务


程序与进程的关系

程序

保存在硬盘、光盘等介质中的可执行代码和数据

是静态保存的代码


进程

在CPU及内存中运行的程序代码

是动态执行的代码

父、子进程:每个进程可以创建一个或多个进程


查看进程信息

ps命令

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

格式:ps aux

ps -elf

常用命令选项

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

[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]


top命令

用途:查看动态的进程排名信息

[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



pgrep命令

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

常用命令选项:

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


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


进程的不同启动方式

手工启动

前台启动:用户输入命令,直接执行程序

后台启动:在命令行尾加入“&”符号

[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 28454

后台任务序号为1,PID号为28454


调度启动

使用at命令,设置在某个特定的时间,执行一次任务

使用crontab命令,设置按固定的周期(如每天、每周等)重复执行预先计划好的任务


进程的前后台调度

Ctrl+Z 组合键

将当前进程挂起,即调入后台并停止执行


jobs命令

查看处于后台的任务列表


fg命令

将处于后台的进程恢复到前台运行,需指定任务序号

[root@localhost ~]# jobs
[1]-   Stopped                 cp /dev/cdrom mycd.iso 
[2]+  Stopped                 top
[root@localhost ~]# fg 1


终止进程的运行

Ctrl+C组合键

中断正在执行的命令


kill、killall命令

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

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

-9 选项用于强制终止

[root@localhost ~]# pgrep -l "portmap"
2869  portmap
[root@localhost ~]# kill  -9  2869
[root@localhost ~]# killall -9 vim
[1]-  已杀死               /usr/bin/vim file1
[2]-  已杀死               /usr/bin/vim file2


pkill命令

用途:根据特定条件终止相应的进程

常用命令选项:

-U:根据进程所属的用户名终止相应进程
 -t:根据进程所在的终端终止相应进程
[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



桌面环境下监视系统

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


计划任务管理 —— at

at命令

在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务

服务脚本名称:/etc/init.d/atd

设置格式:at [HH:MM] [yyyy-mm-dd]

[root@localhost ~]# service atd start
启动 atd:                                               [确定]
[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


计划任务管理 —— crontab

crontab命令

按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务

[root@localhost ~]# cat /etc/crontab

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


管理cron计划任务

编辑计划任务:crontab -e [-u 用户名]

查看计划任务:crontab -l [-u 用户名]

删除计划任务:crontab -r [-u 用户名]

root用户可以管理指定用户的计划任务

普通用户只能管理自己的计划任务


crontab任务的配置格式

Linux5-2.png

时间数值的特殊表示方法

*	   表示该范围内的任意时间
,    表示间隔的多个不连续时间点
-	   表示一个连续的时间范围
/	   指定间隔的时间频率


应用示例

0  17  *  *  1-5		周一到周五每天17:00 
30  8  *  *  1,3,5	每周一、三、五的8点30分
0  8-18/2  *  *  *	8点到18点之间每隔2小时
0  *  */3  *  *		每隔3天


crontab应用示例

示例1(root用户):

每天早上7:50自动开启sshd服务,22点50时关闭
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
每周六的7:30时,重新启动httpd服务
每周一、三、五的17:30时,打包备份/etc/httpd目录

示例2(jerry用户):

每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件


示例3:

root用户查看自己的计划任务列表

查看并删除jerry用户设置的计划任务

[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]#

实验:管理进程并设置计划任务

需求描述

  • 管理系统中的进程
    • 确认vsftpd、sshd服务的启动状态,并关闭vsftpd服务
    • 启动bluetooth服务,然后使用kill命令终止其运行
    • 查找系统中CPU占用率超过80的进程,并强行终止该进程
    • 练习各种进程管理命令的使用
  • 设置计划运行的系统管理任务
    • 每周一早上7:50自动清空FTP服务器公共目录“/var/ftp/pub”
    • 每天晚上10:30分自动执行任务,保存磁盘使用情况信息
  • 查看所设置的计划任务列表

返回 Linux基础