Linux —— 进程和计划性任务管理 —— 了解一下

前言

程序是保存在外部存储介质(如硬盘、光盘)中的可执行机器代码和数据的静态集合,而进程是在CPU及内存中处于动态执行状态的计算机程序。在Linux系统中,每个程序启动后可以创建一个或多个进程,一个进程包含一个或多个线程,线程是执行操作的最小单元。那如何查看进程,下面将进行介绍

查看进程

ps 命令 —— 查看静态的程序统计信息

  • ps 命令是Linux系统中最为常用的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照
语法:
ps [选项]  注意:有一些选项时不带“-”前缀的(添加“-”前缀后含义可能会有出入)
a : 显示当前终端下的所有进程信息,包括其他用户的进程、与“x”选项结合时将显示系统中所有的进程信息
u  使用以用户为主的格式输出进程信息
x  显示当前用户在所有终端下的进程信息
-e 显示系统内的所有进程信息
-l 使用长(Long)格式显示进程信息
-f 使用完整的(Full)格式显示进程信息

1、常用命令 ps aux 将以简单列表的形式显示出进程信息:
[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.9  0.1 193700  6836 ?        Ss   09:40   0:02 /usr/lib/syste
root          2  0.0  0.0      0     0 ?        S    09:40   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    09:40   0:00 [ksoftirqd/0]
root          4  0.0  0.0      0     0 ?        S    09:40   0:00 [kworker/0:0]

其中各字段的含义:
USER: 启动该进程的用户账号信息
PID: 该进程在系统中的数字ID号,在当前系统中是唯一的
%CPUCPU占用的百分比
%MEN:内存占用的百分比
VSZ:占用虚拟内存(SWAP)的大小
RSS:占用常驻内存(物理内存)的大小
TTY: 表明该进程在哪个终端上运行。“?”表示未知或者不需要终端
SATA: 显示了进程当前的状态,如S(休眠),R(运行),Z(僵死),<(高优先级),N(低优先级),s(父进程),+(前台进程),l(多线性进程),D(不可休眠进程)对处于僵死状态的进程应该予以手动终止
START: 启动该进程的时间
TIME: 该进程占用CPU时间
COMMAND: 启动该进程的命令的名称


2、以长格式显示系统进程信息:
[root@localhost ~]# 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 - 48425 ep_pol 09:40 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
1 S root          2      0  0  80   0 -     0 kthrea 09:40 ?        00:00:00 [kthreadd]
1 S root          3      2  0  80   0 -     0 smpboo 09:40 ?        00:00:00 [ksoftirqd/0]


3、ps命令不带选项,将只显示当前用户会话打开的进程
[root@localhost ~]# ps
   PID TTY          TIME CMD
 13578 pts/0    00:00:00 bash
 13889 pts/0    00:00:00 ps


4、查询指定进程的信息,可以结合 “|” 管道和 grep 命令进行过滤,以下示例为过滤 bash 进程
[root@localhost ~]# ps aux | grep bash
root        793  0.0  0.0 115256   924 ?        S    09:40   0:00 /bin/bash /usr/sbin/ksmtuned
root      12918  0.0  0.0  51332   588 ?        Ss   09:44   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root      13578  0.0  0.0 116692  3284 pts/0    Ss   09:44   0:00 bash
root      13946  0.0  0.0 112680   984 pts/0    S+   09:56   0:00 grep --color=auto bash

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

  • top 命令 查看动态的进程排名信息,将会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次
[root@localhost ~]# top

top - 10:15:57 up 35 min,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 192 total,   2 running, 190 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.7 us,  1.3 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3865308 total,  2220096 free,   811108 used,   834104 buff/cache
KiB Swap:  5242876 total,  5242876 free,        0 used.  2754108 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                            
 12960 root      20   0 2103820 258500  51920 S  16.0  6.7   0:23.80 gnome-shell                                                                                                        
 12543 root      20   0  333028  41500  10204 S   5.0  1.1   0:07.02 X                                                                                                                  
 13565 root      20   0  739992  26984  16676 S   2.0  0.7   0:02.57 gnome-terminal-                                                                                                    
     9 root      20   0       0      0      0 R   0.3  0.0   0:00.43 rcu_sched                                                                                                          
   730 root      20   0    6472    652    540 S   0.3  0.0   0:00.42 rngd             

(应用场景:安全架构的服务器常时间不操作会掉线,可以使用top命令查看命令更新服务器的信息,这样就不会掉线了)

pgrep 命令 —— 查询进程信息

  • pgrep 命令 用来查询特定进程信息的专用工具;可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性查询特定进程的PID号
1、通过pgrep命令可以指定进程的一部分名称进行查询,结合“-l"选项可以同时输出对应的进程名
[root@localhost ~]# pgrep -l "ker"
4 kworker/0:0
5 kworker/0:0H
15 kworker/1:0H
19 kworker/2:0
20 kworker/2:0H


2、结合“-U”选项查询特定用户的进程、“-t”选项查询在特定终端运行的进程
tty=0  远程终端登录
tty=1  本地终端登录
[root@localhost ~]# pgrep -l -U lisi tty 1		'//查询在1终端的lisi 用户的进程'
27483 bash
27584 vim

pstree 命令 —— 查看进程树

  • pstree 命令可以输出 Linux 系统中各进程的树形结构,更加直观的判断出各进程之间的相互关系(父进程、子进程)
pstree -aup
其中:
-a :列出完整的命令信息
-u :列出对应的用户名
-p :列出对应的PID号

pstree 命令默认情况下只显示各进程的名称
(缺少该命令可以用 :yum -y install psmisc  命令进行安装)

控制进程

启动进程

  • 手动启动
    • 前台启动 :用户输入命令,直接执行程序
    • 进程在前台运行时,用户必须等到该进程执行结束并退出后才能继续输入其他命令。运行耗时较长的操作可进入后台运行,进程在后台运行时,用户可以继续在当前终端输入其他命令,无需等待该进程结束。
    • 后台启动 :在命令行尾加入 “&” 符号
例如:当cp命令从光盘中制作镜像时,由于需要复制的数据较多,耗时较长,因此可结合 “&” 符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作
cp /dev/cdrom mycd.iso &
  • 调度启动进程
    • 进程的调度启动可以通过at、crontab 命令进行设置
    • at :一次性计划任务
    • crontab :周期性计划任务

改变进程的运行方式

  • 按 Ctrl + Z 挂起当前的进程(调入后台并暂停执行)

    • 当执行程序正在执行且执行缓慢时,可以利用 Ctrl + Z 组合键将该进程挂起到后台暂停执行。
  • jobs 查看后台进程;结合 “-l” 选项同时显示出该进程对应的PID号

  • 将后台的进程恢复运行

    • bg 命令,可以将后台中挂起的任务恢复运行,继续在前台执行操作。
    • fg 命令,可以将后台任务重新恢复到前台运行

终止进程执行

  • kill 命令终止进程
1、通过 kill 命令终止进程,需要使用进程的PID号
kill PID2、若发送了终止命令,却没有终止时,可以结合 “-9” 选项强行终止进程
kill -9 PID
  • killall 命令终止进程
killall 终止命令,可以同时终止多个相同名称的进程;“-9”选项依旧是强制终止
killall 进程名
killall -9 进程名
  • pkill 命令终止进程
可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程
与 pgrep 命令的选项基本类型,“-U”为指定用户、“-t”为指定终端
pkill -9 -U “dagege”         ####强行终止dagege用户的进程

计划任务管理

at 命令, 一次性计划任务

  • at 命令是设置临时计划性任务
  • date:查看当前时间。设置任务,时间不可在当前时间之前.
  • 命令输入完成后按 Ctrl + D组合键提交任务即可
语法:
at [HH:MM] [YYYY-MM-DD]

示例:
date             ###查看下当下的时间
at [13:10] [2020-11-5]                ###设置一次性计划任务
at> pgrep -U root | wc -l > /tmp/ps.root            ###在2020115号下午1点,过滤出root用户进程再统计行数导入 /tmp/ps.root 文件中
at><EOF> 任务设置完毕后按 Ctrl + D 组合键提交任务

验证:等过了时间在 cat /tmp/ps.root 文件中查看

atq 命令,查看待执行任务的列表

  • 对于已经设置但还未执行(未到时间点)的计划任务,可以通过 atp 命令进行查询。但已执行过的 at 任务将不会再出现在列表中。

atrm 命令,删除指定编号的 at任务

  • atrm命令用来删除指定编号的at任务,编号可以通过atq查看。
  • 删除后的at任务不会出现在atq显示结果中。
  • 但已经执行过的任务无法删除

crontab 周期性计划任务

  • 使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻重复性系统管理任务的操作。软件包cronie 提供crontab工具,系统服务crond和配置文件 /etc/crontab。开启系统服务crond 是启动周期性任务的前提条件
crontab命令
按照预先设置的时间周期(分钟、小时、天)重复执行用户指定的命令操作
属于周期性计划任务

crontab 任务配置的格式:
* * * * * run_command(也可是绝对路径)
(分 、时 、日 、月、周  执行命令)

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

示例:
0 17 * * 1-5         ###周一到周五每天17:00
30 8 * * 1,3,5        ###每周一、三、五的8300 8-18/2 * * *            ###8点到18点之间每2个小时
0 * */3 * *            ###每3*/40 * * * *          ###每40分钟

crontab 的配置文件和目录

  • 全局配置文件,位于文件:/etc/crontab
  • 系统默认文件,位于目录:/etc/cron.*
  • 用户自定义文件,位于文件:/var/spod/cron/用户

crontab 命令管理用户的计划任务

编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]

———————————————————————————————————
到此结束,感谢浏览~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值