Linux操作文档——进程和计划任务管理

进程和计划任务管理

文章目录

    • 进程和计划任务管理
      • 一、查看和控制进程
        • 1、查看进程
        • 2、控制进程
      • 二、计划任务管理
        • 1、at 一次性任务设置
        • 2、batch任务设置
        • 3、crontab


一、查看和控制进程

1、查看进程

1、ps命令:查看静态的进程统计信息

a:显示当前终端下的所有进程信息,包括其他用户的进程。与"x"选项结合时将显示系统中所有的进程信息。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程信息。
-e:显示系统内的所有进程信息。
-l:使用长格式显示进程信息。
-f:使用完整的格式显示进程信息。

以简单列表的形式显示出进程信息

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128244  6200 ?        Ss   15:21   0:01 /usr/lib/syste

USER:启动该进程的用户账号的名称。
PID:该进程在系统中的数字ID号,在当前系统中是唯一的。
PPID:表示对应进程的父进程的PID号
%CPU: CPU占用的百分比。
%MEM:内存占用的百分比。
VSZ:占用虚拟内存(swap空间)的大小。
RSS:占用常驻内存(物理内存)的大小。
TTY:表明该进程在哪个终端上运行。"?"表示未知或不需要终端。
STAT:显示进程当前的状态,如S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程)。对处于僵死状态的进程应该予以手动终止。
START:启动该进程的时间。
TIME:该进程占用的CPU时间。
COMMAND:启动该进程的命令的名称。

以长格式显示系统中的进程信息

[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 - 32061 ep_pol 15:21 ?        00:00:01 /us

显示当前用户会话中打开的进程

[root@localhost ~]# ps
   PID TTY          TIME CMD
 10633 pts/0    00:00:00 bash
 11964 pts/0    00:00:00 ps

过滤出包含"bash"的进程信息

[root@localhost ~]# ps aux | grep bash
root        872  0.0  0.0 115312   940 ?        S    15:21   0:00 /bin/bash /usr/sbin/ksmtuned
root       8810  0.0  0.0  72468   776 ?        Ss   15:21   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      10633  0.0  0.1 116876  3500 pts/0    Ss   15:22   0:00 bash
root      12027  0.0  0.0 112732   972 pts/0    S+   16:01   0:00 grep --color=auto bash

2、top命令:查看进程动态信息
在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒钟刷新一次,P键根据CPU占用情况对进程列表进行排序,或按M键根据内存占用情况进行排序,按N键根据启动时间进行排序,按h键可以获得top程序的在线帮助信息,按q键可以正常地退出top程序。

[root@localhost ~]# top
top - 16:02:08 up 40 min,  2 users,  load average: 0.16, 0.05, 0.06
Tasks: 208 total,   1 running, 207 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  1.0 sy,  0.0 ni, 98.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863088 total,   105732 free,   730996 used,  1026360 buff/cache
KiB Swap:  2097148 total,  2094836 free,     2312 used.   941592 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    
  2253 root      20   0  348688  59004  33972 S   2.7  3.2   0:05.66 X          

系统任务(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,可用物理空间。

3、pgrep命令:查询进程信息
查询进程名中包含"log"的进程及其PID号
Linux操作文档——进程和计划任务管理_第1张图片
查询由用户teacher在tty2终端上运行的进程及PD号
在这里插入图片描述
4、pstree命令:查看进程树
查看当前系统的进程树
Linux操作文档——进程和计划任务管理_第2张图片
列出由用户teacher打开的进程及子进程的树结构
在这里插入图片描述

2、控制进程

1、改变进程的运行方式
挂起当前的进程:当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行)
查看后台的进程:使用jobs -l命令,同时显示该进程对应的PID号
将后台的进程恢复运行:使用bg(BackGround,后台)命令,可以将后台中暂停执行(如按Ctrl+Z组合键挂起)的任务恢复运行,继续在后台执行操作;而使用fg命令(ForeGround,前台),可以将后台任务重新恢复到 前台运行。
2、终止进程执行
使用kill命令终止进程
在这里插入图片描述
强制终止vim进程
在这里插入图片描述
将所有名为vim的进程都强行终止
在这里插入图片描述
终止由用户teacher启动的进程(包括登录Shell)
在这里插入图片描述

二、计划任务管理

1、at 一次性任务设置

如果没有该服务需要提前安装并启用

[root@localhost ~]# yum -y install at
[root@localhost ~]# systemctl start atd
[root@localhost ~]# systemctl enable atd
[root@localhost ~]# systemctl status atd
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2020-05-12 15:22:13 CST; 45min ago
 Main PID: 1153 (atd)
    Tasks: 1
   CGroup: /system.slice/atd.service
           └─1153 /usr/sbin/atd -f

5月 12 15:22:13 localhost.localdomain systemd[1]: Started Job spooling tools.

生成一次性任务计划命令格式:at [option]… [TIME]

-d 作业编号:删除指定的待执行任务,相当于atrm
-l:显示待执行的任务的列表,相当于atq
-m:任务执行完成后向用户发送E-mail(默认)
-c 作业编号:显示指定作业的实际内容

TIME格式:

HH:MM 如14:30
HH:MM YYYY-MM-DD,如14:30 2015-10-07
HH:MM[am|pm] [Month] [Date],如02:30pm October 07
HH:MM[am|pm] + number [minutes|hours|days|weeks],如14:30 + 2 weeks
now + #UNIT,如now + 5minutes
noon,midnight,teatime,tomrrow

常用时间中英文对照

一月January —— Jan.
二月February —— Feb.
三月March —— Mar.
四月April —— Apr.
五月May —— May.
六月June —— Jun.
七月July —— Jul.
八月August—— Aug.
九月September —— Sept.
十月October —— Oct.
十一月November —— Nov.
十二月December—— Dec.
星期一:Monday, 英文缩写Mon。
星期二:Tuesday,英文缩写Tue。
星期三:Wednesday,英文缩写Wed。
星期四:Thursday,英文缩写Thur。
星期五:Friday,英文缩写Fri。
星期六:Saturday,英文缩写Sat。
星期日:Sunday,英文缩写Sun

在2020年6月20号晚上11点关机

[root@localhost ~]# at 23:00 2020-06-20
at> /usr/sbin/shutdown -h now              //命令路径查询为which+命令
at>               //ctrl+D保存并推出
job 1 at Sat Jun 20 23:00:00 2020

查看工作

[root@localhost ~]# at -l
1	Sat Jun 20 23:00:00 2020 a root
[root@localhost ~]# atq
1	Sat Jun 20 23:00:00 2020 a root

查看具体信息

[root@localhost ~]# at -c 1 | tail -5              //1为工作序号
}
${
     SHELL:-/bin/sh} << 'marcinDELIMITER2a7561ad'
/usr/sbin/shutdown -h now

marcinDELIMITER2a7561ad

删除工作

[root@localhost ~]# at -d 1
[root@localhost ~]# atrm 1

压缩日志,并加上时间参数

[root@localhost ~]# date
2020年 05月 12日 星期二 16:22:22 CST
[root@localhost ~]# date +%F
2020-05-12
[root@localhost ~]# date "+%Y-%m-%d %H:%M:%S"
2020-05-12 16:22:48
[root@localhost ~]# tar -zcP -f log_$(date +%F).tar.gz /var/log/messages

在7月1号晚上,10点运行此脚本

[root@localhost ~]# at 22:00 2020-07-01
at> /usr/bin/bash /root/logbak.sh
at> 
job 2 at Wed Jul  1 22:00:00 2020

为安全起见,我们通常需要编辑/etc/at.allow(白名单)或/etc/at.deny(黑名单)以允许或拒绝某些特定用户制定任务计划,这两个文件对at和batch命令都适用,这两个文件保留一个即可。

2、batch任务设置

其所生成的任务计划是在系统空闲(CPU的工作负载小于0.8)时执行的,故batch命令后不能指定时间
查看CPU负载

[root@localhost ~]# uptime
 16:29:43 up  1:08,  2 users,  load average: 0.00, 0.01, 0.05

batch也是利用 at 来进行指令的下达,但是当CPU工作负载大时不会立即执行

[root@localhost ~]# batch
at> /usr/bin/echo Hello batch > /tmp/test.txt
at> 
job 3 at Tue May 12 16:32:00 2020

3、crontab

1、用户周期性任务
系统通常自带cron服务程序和crontab命令,若没有,可使用如下命令安装:

[root@localhost ~]# yum -y install vixie-cron             //cron服务程序包
[root@localhost ~]# yum -y install crontabs             //crontab程序包

与at一样,我们也可以设置白名单(/etc/cron.allow)或黑名单(/etc/cron.deny)来限制使用crontab的用户,这两个文件保留一个即可。
使用crontab命令管理用户的计划任务:crontab [-u username] [-elr]

-e:编辑计划任务列表。
-u:指定所管理的计划任务属于哪个用户,默认是针对当前用户(自己),一般只有用户有权限使用此选项(用于编辑、删除其他用户的计划任务)。
-I:列表显示计划任务。
-r:删除计划任务列表。

编辑用户的计划任务列表

[root@localhost ~]# crontab -e

crontab计划任务的配置格式

分钟 小时 日期 月份 星期 执行的命令
0〜59 0〜23 1〜31 1〜12 0〜7 命令或脚本

减号可以表示一个连续的时间范围,如"1-4"表示整数1、2、3、4。
逗号",":可以表示一个间隔的不连续范围,如"3, 4, 6, 8"。
斜杠符号"/":可以用来指定间隔频率,如在日期字段中的"*/3"表示每隔3天。
“ * ” 表示任何时刻都接受的意思,所有时间段位上不能同时为“ * ”

[root@localhost ~]# crontab -e
59 23 30 06 * echo "LOVE U 3000+" > /root/lover.txt             //6月30号的23:59,写一封内容为“LOVE U 3000+”的信,写在了/home/’user‘/lover.txt中

查看任务

[root@localhost ~]# crontab -l
59 23 30 06 * echo "LOVE U 3000+" > /root/lover.txt

每1分钟需要执行一次打印当前时间的脚本test.sh,并追加在/tmp/time.txt文件中,

[root@localhost ~]#  date "+%Y-%m-%d %H:%M:%S"
2020-05-12 17:56:01
[root@localhost ~]# vim time.sh
#!/bin/bash
echo `date "+%Y-%m-%d %H:%M:%S"` >> /tmp/time.txt
[root@localhost ~]#  crontab -e
*/1 * * * * /usr/bin/bash /root/time.sh
crontab: installing new crontab

查看其他用户的计划任务

[root@localhost ~]# crontab -l -u root

删除任务

[root@localhost ~]# crontab -r             //注意:这个命令会将所有的crontab数据内容都删掉,一般只需用crontab -e编辑即可
[root@localhost ~]# crontab -l
no crontab for root

2、系统周期性任务计划
编辑完 /etc/crontab 并储存后,cron 的设置就会自动执行(只限使用root用户操作)

[root@localhost ~]# vim /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

你可能感兴趣的:(linux,linux,运维,centos)