栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

九、进程和计划任务管理

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

九、进程和计划任务管理

九、进程和计划任务管理 程序和进程的关系

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

​ 静态保存的代码

进程:在CPU级内存中运行的程序代码,动态、有生命周期及运行状态

​ 动态执行的代码

​ 父、子进程—每个程序可以创建一个或多个进程

线程:三种状态①、就绪:在创建线程后存在等待cpu过来的执行时间称为就绪状态

②、运行:当cpu过来执行时就会转变为运行状态,而当cpu去执行别的线程时就会变回就绪状态

③、阻塞:线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。

查看进程信息ps ps命令 方法一、常用的选项组合:ps -aux #将以简单列表的形式显示出进程信息

常用的参数

-a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息。

-u:使用以用户为主的格式输出进程信息

-x:显示当前用户所有终端下的进程信息

显示输出信息中,个字段含义描述:

USER:启动该进程的用户账号的名称

PID:该进程在系统中的数字ID号,在当前系统中是唯一的

%CPU:CPU占用的百分比

%MEM:内存占用的百分比

VSZ:该进程使用的虚拟内存量

RSS:该进程占用的物理内存量

TTY:表明该进程在哪个终端上运行,不是从终端启动的进程则显示为?

pts是远程登录终端ctrl+ALT F1-F6 tty1 图像界面 2和6字符界面 ?系统本身执行的进程

D[aemon]:守护进程

R[uning]:正在运行

S[leep]:睡眠状态

Z[ombie]:僵尸状态

T:调试、程序执行一般停止

优先级:

<:高优先级

N:低优先级

+:前台进程

l:该进程是多线程的

s:进程是控制进程

D:系统守护进程

L:进程有页面锁定在内存中

START:启动该进程的时间

TIME:该进程占用的CPU时间

COMMAND:启动该进程的命令的名称

方法二、 ps -elf #将以长格式系统中的进程信息

-e:显示系统内的所有进程信息

-l:使用长格式显示进程信息

-f:使用完整的格式显示进程信息

各列的解释:

F:内核分配给进程的系统标记

S:进程的状态

UID:启动这些进程的用户

PID:进程的进程ID

PPID:父进程的进程号

C:进程生命周期中的CPU利用率

PRI:进程的优先级

NI:谦让度值用来参与决定优先级

ADDR:进程的内存地址

SZ:假如进程被换出,所需交换空间的大致大小

WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名

STIME:进程启动时的系统时间

TTY:进程启动时的终端设备

TIME:运行进程需要的累计CPU的时间

CMD:进程的启动命令

僵尸进程:

一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将称为一个僵尸进程。

常见的状态有以下几种:

-D:不可被唤醒的睡眠状态

-R:该进程正在运行

-S:该进程处于睡眠状态,可被唤醒

-T:停止状态,可能在后台暂停或进程处于除错状态

-W:内存交互状态

-X:死掉的进程

-Z:僵尸进程

-<:高优先级

-N:低优先级

-L:被锁入内存

-s:包含子进程

-l:多线程

-+:位于后台

-C:进程占用CPU的百分比

top命令 #查看进程动态信息

上述输出信息中,开头的部分显示了系统任务(Tasks)、CPU占用、内存占用(Mem)、交换空间(Swap)等汇总信息,汇总信息下方依次显示当前进程的排名情况。相关信息的含义表述如下。
uptime
13:22:30 当前时间
up 20days 系统运行时间 ,说明此服务器连续运行 20 天了
2 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。 三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。
系统任务(Tasks)信息:total,总进程数;running,正在运行的进程数;sleeping, 休眠的进程数;stopped,中止的进程数;zombie,僵死无响应的进程数。
CPU 占用信息:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O 等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。要了解空闲的 CPU 百分比,主要看%id 部分。
内存占用(Mem)信息:total,总内存空间;free,空闲内存;used,已用内存;buff/cache,物理内存和交换内存的缓冲区总和。

交换空间(Swap)占用:total,总交换空间;free,空闲交换空间;used,已用交换空间;avail Mem,可用物理空间。

top命令全屏操作界面快捷键:默认3s刷新一次,按s修改刷新时间按空格:立即刷新

P:按CPU排序

M:按内存排序

T:按时间排序

p:进程IP,查看某个进程状态

N键根据启动时间进行排序

数字键1:显示每个内核的CPU使用率

h:top程序帮助信息

q:正常退出top

pgrep命令查询进程信息

常用参数:

-l:同时输出对应的进程名以及PID

-U:查询特定用户的进程

-t:查询在特定终端运行的进程

ptree命令以树形结构列出进程信息

ptree命令默认情况下只显示各进程的名称

-p:可以同时列出对应的PID号

-u:列出对应的用户名

-a:列出完整的命令信息

jobs命令查看处于后台的任务列表

-l:可以同时显示该进程对应的PID号

将后台的进程恢复运行:

bg命令,可以将后台中暂停执行(如按Ctrl+Z组合键挂起)的任务恢复运行,继续在后台执行操作;

fg命令,可以将后台任务重新恢复到前台运行

kill命令终止进程

通过kill命令终止进程时,需要使用进程的PID号作为参数。无特定选项时,kill命令将给该进程发送终止信号并正常退出运行,若该进程已经无法响应终止信号,则可以结合“-9”选项强行终止进程。

[root@localhost ~]# pgrep -l "sshd"	//查询目标进程的PID 号
5822 sshd
[root@localhost ~]# kill 5822	//终止指定PID 的进程
[root@localhost ~]# pgrep -l "sshd"	//确认进程已终止(查询时无结果)
[root@localhost ~]# vim testfile  &	//打开vim 程序并挂起作为测试
[1]+   Stopped	vim testfile
[root@localhost ~]# jobs –l	//查询目标进程的PID 号
[1]+   7095 Stopped	vim testfile

[root@localhost ~]# kill 7095		//尝试正常结束进程[root@localhost ~]# jobs -l			//但发现vim 进程并未退出[1]+   7095 Stopped	vim tmpfile
[root@localhost ~]# kill -9 7095		//强制终止目标进程[root@localhost ~]# jobs -l		//成功终止vim 进程[1]+ 2993  已 杀死	vim tmpfile
killall命令终止进程

使用killall命令可以通过进程名称来终止进程,当需要结束系统中多个相同名称的进程时,使用killall命令将更加方便,效率更高。

[root@localhost ~]# vim testfile1 &	 //挂起第 1 个 vim 测试进程
[1]+   Stopped	vim testfile1
[root@localhost ~]# vim testfile2 &	//挂起第 2 个 vim 测试进程
[2]+   Stopped	vim testfile2
[root@localhost ~]# jobs -l		//确认待终止的进程信息[1]-   7144 Stopped	vim testfile1
[2]+   7153 Stopped	vim testfile2
[root@localhost ~]# killall -9 vim	//通过进程名终止多个进程
[root@localhost ~]# jobs -l
[1]-   7144 Killed	vim testfile1
[2]+   7153 Killed	vim testfile2
pkill命令终止进程

使用pkill命令可以根据进程的名称,运行该进程的用户、进程所在的终端等多种属性终止特定的进程。

例如,若要终止由用户 hmj 启动的进程(包括登录 Shell),可以执行以下操作。
su - hmj
vim tst.txt &
[root@localhost ~]# pgrep –l -U "hmj"	//确认目标进程相关信息3773 bash
[root@localhost ~]# pkill -9 -U "hmj"	//强行终止用户hackli 的进程
[root@localhost ~]# pgrep -l -U "hmj"	//确认目标进程已被终止

计划任务管理at

一次性计划任务,在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划的系统管理任务。

例如,以下操作先通过 date 命令确认当前的系统时间,并设置在 2017 年 5 月 7 日的10:35 自动执行
以下任务:统计该时间点系统中由 root 用户运行的进程的数量,并将该数值保存到/tmp/ps.root 文件中。
at  [HH:MM]  [yyyy-mm-dd]
任务设置完毕后按Ctrl+D 组合键提交
例1
[root@kgc /]# date
2021年 08月 16日 星期一 16:20:58 +00
[root@kgc /]# at 16:23 2021-08-16
at> pgrep -U root | wc -l > /tmp/ps.root //任务设置完毕后按Ctrl+D 组合键提交
at> 
job 1 at Mon Aug 16 16:23:00 2021
[root@localhost ~]# cat /tmp/ps.root	//等过了计划时间后验证命令结果202
例2
以下操作将设置一条计划任务,在当天的 21:30 自动关闭当前系统。
[root@localhost ~]# at 21:30
at> shutdown -h now 
at> 
对于已经设置但还未执行(未到时间点)的计划任务,可以通过 atq 命令进行查询。但已执行过的 at 任务将不会再出现在列表中。具体操作如下:
[root@localhost ~]# atq
2 Sun May 7 21:30:00 2017 a root
若要删除指定编号的 at 任务,可以使用 atrm 命令。删除后的 at 任务将不会被执行, 并且不会显示在 atq 命令的显示结果中,但已经执行过的任务无法删除。具体操作如下:
[root@localhost ~]# atrm 2	//删除第 2 条 at 计划任务
[root@localhost ~]# atq	//确认第 2 条任务已被删除
crontab周期性任务设置

crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来设置

1、/etc/crontab----系统任务配置文件

/etc/crontab文件中设置的是维护Linux操作系统所需的任务,Linux操作系统及相关程序在安装时可自动设置,不建议用户手动修改此文件。

例如,该文件中包括设置 Shell 环境、可执行路径等变量的操作,以及每小时、每天、每周、每月需要执行的任务目录。执行如下的“cat /etc/crontab
”命令可以查看/etc/crontab 文件的具体内容
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash	                      //设置执行计划任务的Shell 环境
PATH=/sbin:/bin:/usr/sbin:/usr/bin	   //定义可执行命令及程序的路径
MAILTO=root	                        //将任务输出信息发送到指定用户的邮箱

根据/etc/crontab 配置文件中的设定,crond 将按照不同的周期重复执行相应目录中的任务脚本文件。

2、/var/spool/cron/------用户cron任务的配置文件存放目录

由用户自行设置的cron计划任务将保存到目录/var/spool/中,文件名与用户名相同。

例如,通过如下操作可以得知,root 用户的 cron 计划任务保存在配置文件/var/spool/cron/root 中。
[root@localhost ~]# ls -l /var/spool/cron2 * * * #每隔两个小时执行

执行周期配置说明
分钟从0到59之间的整数
小时从0到23之间的整数
日期从1到31之间的整数
月份从1到12之间的整数
星期从0到7之间的整数,0或7代表星期日

* :匹配范围内任意时间

, :分隔多个不连续的时间

- :指定连续时间范围

/n :指定时间频率,每n

查看用户的计划任务列表
crontab 命令结合“-l”选项可以查看当前用户的计划任务列表,对于 root 用户来说,
还可以结合“-u”选项查看其他用户的计划任务,具体操作如下:

[root@localhost ~]# crontab –l	//查看用户root 自己的计划任务
50 7 * * * /usr/bin/systemctl start sshd.service
50 22 * * * /usr/bin/systemctl stop sshd.servic 
0 0 */5 * * /usr/bin/rm -rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl httpd restart
30 17 * * 1,3,5 /usr/bin/tar jcf httpdconf.tar.bz2 /etc/httpd/
[root@localhost ~]# crontab -l -u jerry	//查看用户jerry 的计划任务
55 23 * * 7 /usr/bin/cp /etc/passwd /home/jerry/pwd.txt 
[root@localhost ~]# ls -l /var/spool/cron/jerry
-rw-------. 1 root root 57 May 7 11:10 /var/spool/cron/jerry
删除用户的计划任务列表
当只需要删除某一条计划任务时,可以通过“crontab -e”命令进行编辑;而若要清
空某个用户的所有计划任务,可以执行“crontab -r”命令。
[jerry@localhost ~]$ crontab -r	 //用户jerry 清空自己设置的计划任务
[jerry@localhost ~]$ crontab -l
no crontab for jerry
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/964811.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号