(一)概念及分类
1、进程:在自身的虚拟空间运行的一个独立的程序,从操作系统的角度来看,所有在系统上运行的东西都可以称为一个进程。但是进程和程序是有区别的,进程虽然有程序产生,但它并不是程序。
2、分类
(1)系统进程
可以执行内存资源分配和进程切换管理工作,并且该进程的运行不受用户的干预(包括root用户)。
(2)用户进程
执行用户程序、应用程序或内核之外的系统程序而产生的进程(可以由用户控制关闭)。
交互进程——由一个Shell中断启动的进程,在执行过程中需要与用户建立交互操作。(可在前后台运行)
批处理进程——是一个进程集合,负责按顺序启动其他进程。
守护进程——一直运行的一种程序,在Linux启动时启动,在系统关闭时终止。(httpd、crond进程等)
3、属性
(1)进程的几种状态
可运行状态、可中断的等待状态、不中断的等待状态、僵死状态、暂停状态
(2)进程之间的关系
init进程的后代(PID=1,所有进程都是它的后代)——>父进程——>子进程。
(二)进程的监控与管理
1、利用ps命令监控系统进程
例子:ps -ef | grep httpd
UID ——用户的ID标识号
PID ——进程的标识号
PPID ——父进程ID
STIME ——进程的启动时间
TTY ——进程所属的终端控制台
TIME ——进程启动后累计使用的CPU总时间
CMD ——正在执行的命令
%CPU ——进程占用的CPU百分比
%MEM ——进程占用内存的百分比
RSS ——进程的实际内存
VSZ ——进程虚拟大小
STAT ——进程的状态
R ——正在运行的进程
S ——休眠状态的进程
Z ——僵死进程
N ——优先级较低的进程
< ——优先级高的进程
s ——父进程
+ ——位于后台的进程
START——启动进程的时间
2、利用pstree监控系统进程
使用格式:pstree [-acnpu] [<PID>/<user>]
-a——显示启动每个进程对应的完整指令
-c——显示的进程中包含子进程和父进程
-n——根据PID排序输出
-p——显示进程PID
-u——显示进程对应的用户名称
PID——进程识别号
user——系统用户名
3、利用top监控系统进程
相比于ps,top能动态、实时的显示进程的状态。
4、lsof监控系统进程与程序
lsof——list opened files 列举出系统中已经被打开的文件,根据文件找到对应的进程信息。
lsof 123.c——显示使用123.c文件的进程
lsof -g gid ——显示指定的进程组打开的文件情况
lsof 123 ——显示123进程现在打开的文件
lsof -p gid ——通过进程号显示程序打开的所有文件及程序
lsof -i ——通过监听指定的协议、端口、主机等信息,显示符合条件的进程信息(可运用其进行一些检测及监控)
(三)任务调度进程crond
crond 是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程。
系统任务调度——系统周期性所要执行的工作。
配置文件
SHELL=/bin/bash //指定系统所要使用的SHELL
PATH=/sbin:/bin:/usr:sbin:/usr/bin //指定了系统执行进程的路径
MAILTO=root //日志将通过邮件发送给root用户
HOME=/ //配置环境变量
#run-parts
01****root run-parts /etc/cron.hourly
02****root run-parts /etc/cron.daiy
22****root run-parts /etc/cron.weekly
42****root run-parts /etc/cron.monthly
用户任务调度——用户定期要执行的工作。
crontab工具的使用
1、crontab工具的使用格式
crontab [-u user] [file]
crontab [-u user] [-e | -l |-r | -i ]
-u user——设定用户
file——命令文件的名字(通过crontab文件载入)
-e——编辑某个用户的crontab文件内容
-l——显示某个用户的crontab文件内容
-r——删除crontab文件
-i——在删除文件时需确认
2、crontab文件的含义
minute hour day month week command
command表示需要执行的命令,之前的表示时间,即多长时间后开始执行。
(*)——代表所有可能的值,若week为*,则表示在满足其他条件后每周都执行其操作(进程)
(,)——逗号隔开的值指定一个范围。“1,2,5,7,8,9”
(-)——“2-6”表示“2,3,4,5,6”
(/)——“0-23、2”表示每2小时执行一次
举例:0 */3*** /user/local/apache2/apachectl restart ——表示每隔3小时重启Apache服务一次
(四)kill终止进程
kill [ 信号类型 ] 进程PID
kill -l ——查看所有进程类型
kill -9 进程PID——强制结束进程
killall 终止一个组进程
killall [信号类型] 进程名称