进程管理

一、进程的概念与分类

进程的的基本定义是:在自身的虚拟地址空间运行的一个独立的程序,从操作系统的角度来看,所有在系统上运行的东西,都可以称为一个进程。

进程的分类:

系统进程:可以执行内存资源分配和进程切换等管理工作;而且,该进程的运行不受用户的干预,即使是root用户也不能干预系统进程的运行。

 用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,此类进程可以在用户的控制下运行或关闭。

交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。

批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。

守护进程:守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止。例如httpd进程,一直处于运行状态,等待用户的访问。还有经常用的crond进程,这个进程类似与windows的计划任务,可以周期性的执行用户设定的某些任务。

二、进程的监控与管理

在linux系统中,进程ID(用PID表示)是区分不同进程的唯一标识,它们的大小是有限制的,最大ID为32768,用UID和GID分别表示启动这个进程的用户和用户组。所有的进程都是PID为1的init进程(centos7.x版本是systemd进程)的后代。内核在系统启动的最后阶段启动init进程,因而,这个进程是linux下所有进程的父进程,用PPID表示父进程。

1、lsof命令

作用:列出当前系统打开文件的工具

格式:lsof 选项 进程pid

选项:-c 后跟进程名显示进程现在打开的文件

-p 后跟pid通过进程号显示程序打开的所有文件及相关进程

-i 后跟端口号通过监听指定的协议、端口、主机等信息,显示符合条件的进程信息。

-g 后跟pid显示进程的进程情况

2、ps命令

作用:查看系统中的进程状态

格式:ps 选项

选项:

-a

显示所有进程(包括其他用户的进程)

-u

用户以及其他详细信息

-x

显示没有控制终端的进程

在Linux系统中,有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示。

R(运行):进程正在运行或在运行队列中等待。

S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该   状态。

D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。

Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。

T(停止):进程收到停止信号后停止运行。

常用选项组合:

aux:列出目前所有的正在内存当中的程序

3、pgrep命令

作用:通过程序的名字来查询进程pid的工具,它通过检查程序在系统中活动的进程,输出进程属性匹配命令行上指定条件的进程的ID

格式:pgrep 进程名

4、killall命令

作用:关闭进程

格式:killall 选项 进程名称

选项:-9 :表示强制结束进程

-2 :表示结束进程,但是并不是强制性的

-15 :表示正常结束进程

5、kill命令

作用:关闭进程

格式:kill 选项 pid

选项:-l 查看所有选项

-9 :表示强制结束进程

-2 :表示结束进程,但是并不是强制性的

-15 :表示正常结束进程

6、top命令

作用:动态地监视进程活动与系统负载等信息

格式:top

命令输出:

输出解析:第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。

第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。

第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如"97.1 id"意味着有97.1%的CPU处理器资源处于空闲。

第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。

第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量

7、crontab命令

作用:设置系统定时任务

格式:crontab 选项

开启服务:开启:systemctl start crond.service/service crond start

开机自启:systemctl enable crond.service/chkconfig crond on

选项:-u user:用来设定某个用户的crontab服务,例如,"-u ixdba"表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i:在删除用户的crontab文件时给确认提示。

操作:进入crontab编辑界面,会使用vim编辑工作。

* * * * * 执行任务:

项目

含义

范围

第一个*

一小时的第几分钟

0-59

第二个*

一天中第几小时

0-24

第三个*

一月中第几天

1-31

第四个*

一年中第几个月

1-12

第五个*

一周之中的星期几

0-7(0和7均为星期天)

特殊符号:

*

代表任意时间

代表不连续时间中的分隔符

-

代表连续的时间范围

*/n

代表每多久执行一次

使用crontab工具的注意事项:

(1)、注意环境变量问题

有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

(2)注意清理系统用户的邮件日志

可以在crontab文件中设置如下形式,忽略日志输出:

0 */3 * * * /usr/local/apache2/apachectlrestart >/dev/null 2>&1

(3)、系统级任务调度与用户级任务调度

系统级任务调度主要完成系统的一些维护操作(比如定时重启机器),用户级任务调度主要完成用户自定义的一些任务,可以将用户级任务调度放到系统级任务调度来完成(不建议这么做),但是反过来却不行。

原文地址:https://www.cnblogs.com/yxf-/p/11440098.html