进程和计划任务管理

本文详细介绍了Linux系统中如何查看和管理进程,包括使用ps、top、pgrep和pstree等命令,以及进程的启动、调度和终止。此外,还深入探讨了一次性任务的at工具和周期性任务的crontab设置,帮助读者更好地理解和操作Linux服务器。
摘要由CSDN通过智能技术生成

目录

前言

一、查看进程

1、程序和进程的关系

1.1  程序

1.2  进程

2、查看进程信息

2.1  ps命令

2.2  top命令

2.3  pgrep命令

2.4  pstree命令 

二、控制进程

1、进程的启动方式

1.1  手工启动

1.2  自动启动

2、进程的前后台调度

3、将后台的进程恢复运行

4、终止进程

4.1  Ctrl+C组合键

4.2  kill、killall命令

4.3  pkill命令

三、计划任务管理

1、at一次性任务设置

1.1  一条计划任务

1.2  一次性任务创建步骤

1.3  查看和删除

2、周期性任务设置

2.1  crontab命令

2.2   管理contab计划任务

2.3  crontab任务配置格式

2.4  时间数值的特殊表示方法

总结


前言

       在linux中,为了更好的了解和使服务器有序运行,管理员需要对进程和计划任务做相应的操作,以便能够更好的完成维护任务,本文就介绍了怎么管理和使用。

一、查看进程

1、程序和进程的关系

1.1  程序

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

1.2  进程

在CPU及内存中运行的程序代码
动态执行的代码
父、子进程--每个程序可以创建一个或多个进程

2、查看进程信息

2.1  ps命令

方法一:ps aux

常用选项说明
a显示当前终端下的所有进程信息,包括其他用户的进程。
u表示列出进程的用户
x显示所有终端的进程
实例:[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.1  0.1 193832  7104 ?        Ss   15:14   0:05 /us
root          2  0.0  0.0      0     0 ?        S    15:14   0:00 [kt
root          3  0.0  0.0      0     0 ?        S    15:14   0:00 [ks
root          5  0.0  0.0      0     0 ?        S<   15:14   0:00 [kw
root          6  0.0  0.0      0     0 ?        S    15:14   0:00 [kw
root          7  0.0  0.0      0     0 ?        S    15:14   0:00 [mi
root          8  0.0  0.0      0     0 ?        S    15:14   0:00 [rc
root          9  0.0  0.0      0     0 ?        S    15:14   0:00 [rc
root         10  0.0  0.0      0     0 ?        S    15:14   0:00 [wa
root         11  0.0  0.0      0     0 ?        S    15:14   0:00 [wa
root         12  0.0  0.0      0     0 ?        S    15:14   0:00 [mi
root         13  0.0  0.0      0     0 ?        S    15:14   0:00 [ks
root         15  0.0  0.0      0     0 ?        S<   15:14   0:00 [kw
root         16  0.0  0.0      0     0 ?        S    15:14   0:00 [wa
root         17  0.0  0.0      0     0 ?        S    15:14   0:00 [mi
root         18  0.0  0.0      0     0 ?        S    15:14   0:00 [ks
root         19  0.0  0.0      0     0 ?        S    15:14   0:00 [kw
root         20  0.0  0.0      0     0 ?        S<   15:14   0:00 [kw
root         21  0.0  0.0      0     0 ?        S    15:14   0:00 [wa
root         42  0.0  0.0      0     0 ?        S    15:14   0:00 [mi
root       4333  0.0  0.0      0     0 ?        S    16:24   0:00 [kw
root       4374  0.0  0.0 107904   608 ?        S    16:29   0:00 sle
root       4375  0.0  0.0 151064  1812 pts/0    R+   16:29   0:00 ps 

主要信息说明
USER进程的用户
PID进程的ID
%CPU进程占用的CPU百分比
%MEM占用内存的百分比
VSZ该进程使用的虚拟内存量(KB)
RSS该进程占用的物理内存量(KB)
TTY启动进程的终端名,不是从终端启动的进程则显示为?
STAT该进程的状态
COMMAND进程的启动命令
START启动该进程的时间
TIME该进程占用的 CPU 时间

常见进程状态: 

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

TTY终端:CentOS 7系统中,tty1表示图形界面,tty2-tty6表示文字界面,可用Ctrl+Alt+F1-F6进行切换。pts说明是用远程工具连接的,比如xshell,后面的数字代表登录的时间顺序,数字越小证明登录的越早。
僵尸进程--一个进程结束了,但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init来接管它,成为它的父进程,子进程退出后init会回收其占用的相关资源。但是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。

方法二:

ps -elf

常用选项说明
-e显示系统内的所有进程信息
-1使用长格式显示进程信息
-f使用完整的进程显示进程信息
-a显示所有进程pid
-T查看线程信息
[root@c7-1 ~]#ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 47751 ep_pol 10:53 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root          2      0  0  80   0 -     0 kthrea 10:53 ?        00:00:00 [kthreadd]
1 S root          4      2  0  60 -20 -     0 worker 10:53 ?        00:00:00 [kworker/0:0H]
1 S root          5      2  0  80   0 -     0 worker 10:53 ?        00:00:01 [kworker/u256:0]
1 S root          6      2  0  80   0 -     0 smpboo 10:53 ?        00:00:00 [ksoftirqd/0]

 各列的解释:

F:内核分配给进程的系统标记。
S:进程的状态。
UID:启动这些进程的用户。
PID: 进程的进程ID.
PPID:父进程的进程号(如果该进程是由另一“个进程启动的)
C:进程生命周期中的CPU利用率。
PRI:进程的优先级(越大的数字代表越低的优先级)。
NI: 谦让度值用来参与决定优先级。
ADDR:进程的内存地址。
SZ:假如进程被换出,所需交换空间的大致大小。
WCHAN:若该进程在睡眠,则显示睡眠中的系统函数名。
STIME:进程启动时的系统时间。
TTY:进程启动时的终端设备。   pts/0255代表虚拟终端,一般是远程连接的终端;tty1,tty7 代表本地控制台终端
TIME:运行进程需要的累计CPU时间。
CMD:进程的启动命令。

2.2  top命令

top 命令用于查看进程动态信息

参数

参数含义
d改变显示的更新速度
c显示整个命令行而不只是显示命令名
p通过指定 PID 来监控某个进程的状态
S累积模式,会将己完成或消失的子行程的 CPU time 累积起来
s安全模式,将交互式指令取消, 避免潜在的危机
i不显示任何闲置或者僵死进程
n更新的次数,完成后将会退出 top

实例:

#显示进程信息
top
#显示完整命令
top -c
#以批处理模式显示程序信息
top -b
#以累积模式显示程序信息
top -S
#设置信息更新次数,更新两次后终止更新显示
top -n 2
#设置信息更新时间,更新周期为3秒
top -d 3
#显示指定的进程信息
top -p PID

2.3  pgrep命令

 查询进程PID信息:

-l:  选项可同时输出对应的进程名以及PID
-U:选项查询特定用户的进程
-t:选项查询在特定终端运行的进程

实例:

根据特定条件查找进程的PID信息
[root@localhost ~]# pgrep -l "log"
476 xfs-log/dm-0
722 xfs-log/sda1
741 xfs-log/dm-2

2.4  pstree命令 

以树形结构列出进程信息:

-p:选项使用时可以同时列出对应的PID号
-u:选项可以列出对应的用户名
-a:选项可以列出完整的命令信息


例:pstree -aup
[root@localhost ~]# pstree -aup
systemd,1 --switched-root --system --deserialize 21
  ├─ModemManager,823
  │   ├─{ModemManager},845
  │   └─{ModemManager},853
  ├─NetworkManager,898 --no-daemon
  │   ├─{NetworkManager},906
  │   └─{NetworkManager},910
  ├─VGAuthService,821 -s
  ├─abrt-watch-log,812 -F BUG: WARNING: at WARNING: CPU:INFO: possible recursi
  ├─abrt-watch-log,815 -F Backtrace /var/log/Xorg.0.log --/usr/bin/abrt-dump-x
  ├─abrtd,810 -d -s
  ├─accounts-daemon,856
  │   ├─{accounts-daemon},864
  │   └─{accounts-daemon},866
  ├─alsactl,811 -s -n 19 -c -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf--initf
  ├─anacron,9397 -s
  ├─at-spi-bus-laun,1989
  │   ├─dbus-daemon,1994 ...
  │   │   └─{dbus-daemon},1995
  │   ├─{at-spi-bus-laun},1990
  │   ├─{at-spi-bus-laun},1991
  │   └─{at-spi-bus-laun},1993
  ├─at-spi2-registr,1997 --use-gnome-session
  │   ├─{at-spi2-registr},2000
  │   └─{at-spi2-registr}
————————————————

二、控制进程

1、进程的启动方式

1.1  手工启动

前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号,执行成功会显示任务序号以及PID号

1.2  自动启动

at一次性启动、crontab周期性启动

2、进程的前后台调度

Ctrl+Z组合键将当前进程挂起

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

3、将后台的进程恢复运行

使用 bg(BackGround,后台)命令,可以将后台中暂停执行(如按 Ctrl+Z 组合键挂起)的任务恢复运行,继续在后台执行操作;
使用 fg 命令(ForeGround,前台),可以将后台任务重新恢复到前台运行。

4、终止进程

4.1  Ctrl+C组合键

中断正在执行的命令

4.2  kill、killall命令

kill:用于终止指定PID号的进程
killall:用于终止指定名称相关的所有进程
-9:用于强制终止

实例:

[root@localhost ~]# pgrep -l "sshd"	//查询目标进程的PID 号
5822 sshd
[root@localhost ~]# kill 5822	//终止指定PID 的进程
[root@localhost ~]# pgrep -l "sshd"	//确认进程已终止(查询时无结果

4.3  pkill命令

根据特定条件终止相应进程
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
-9:强制终止

实例:

[root@localhost ~]# pgrep –l -U "hmj"	//确认目标进程相关信息3773 bash
[root@localhost ~]# pkill -9 -U "hmj"	//强行终止用户hackli 的进程
[root@localhost ~]# pgrep -l -U "hmj"	//确认目标进程已被终止

三、计划任务管理

1、at一次性任务设置

1.1  一条计划任务

root@localhost A]# at 10.32        at+需要计划任务的时间 回车确定
at> mkdir zhangsan<EOT>               计划10.32创建zhangsan目录        
job 1 at Wed Aug 25 10:32:00 2021
[root@localhost A]# 
 
等到时间就会自动完成任务

1.2  一次性任务创建步骤

第一步:at [HH:MM] [yyyy-mm-dd]
第二步:输入指定命令
第三步:Ctrl+D提交任务
注:若不设定年月日将默认为当天启动

实例:

[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> <EOT><EOT>
job 1 at Mon Aug 16 16:23:00 2021

[root@localhost ~]# cat /tmp/ps.root	//等过了计划时间后验证命令结果202

1.3  查看和删除

atq:查看未执行的任务列表及任务序号

atrm:删除指定未执行任务

实例:

[root@localhost ~]# atrm 2	//删除第 2 条 at 计划任务
[root@localhost ~]# atq	//确认第 2 条任务已被删除

2、周期性任务设置

2.1  crontab命令

主要设置文件:
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/ron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名 

2.2   管理contab计划任务

选项

-e:编辑计划任务列表。
-u:指定所管理的计划任务属于哪个用户。
-l:列表显示计划任务。
-r:删除计划任务列表。

实例:

crontab -u 用户名 #指定XX用户的cron服务
crontab -l #列出当前用户下的cron的详细内容
crontab -r #删除所有用户的cron内容,普通用户执行,只删除自己的cron内容
crontab -e #编辑cron服务

2.3  crontab任务配置格式

配置格式为:时间周期设置 任务内容设置
时间设置格式:分 时 日 月 周
任务内容设置:命令或者脚本文件

分钟    取值为 0~59 的任意整数

小时    取值为 0~23 的任意整数

日期    取值为 1~31 的任意整数

月份    取值为 1~12 的任意整数

星期    取值为 0~7 的任意整数,0 或 7 代表星期日

2.4  时间数值的特殊表示方法

*:表示该范围内的任意时间

 -:   表示一个连续的时间范围

 ,:   表示间隔的多个不连续时间点

 /:   指定间隔的时间频率

实例:

0 17 * * 1-5     表示每周一到周五每天17点整
30 8 * * 1,3,5   表示每周一、三、五的8点30分
0 8-18/2 * * *   表示每天8点到18点之间的每两个小时
0 * */3 * *      表示每3天的每个整点

总结

       通过对本文的学习,让我们知道了,什么是进程,怎样去查看和控制进程以及掌握crontab计划任务管理。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值