Linux进程管理和计划任务

目录

一、查看进程

1. 程序

2. 进程

2.1 概述

2.2 进程的特征

2.3 进程使用内存的问题 

2.4 进程的状态

2.5 进程的优先级os

2.6 进程的分类

2.7 进程与线程

二、进程查看

1. ps

1.1 概述

1.2 常用选项

1.3 字段说明

1.4 父子关系与排序

1.5 自定义显示字段

2. top

2.1 概述

2.2 进程的性能(上半部分)

2.3 进程的状态(下半部分)

2.4 top常用内部指令

2.5 top使用技巧

3. pgrep

4. pstree

5. lsof

6. vmstat

7. free

8. iostat

9. iotop/iftop

10. uptime

11. mpstat

12. dstat

13. webadin

14. 服务器五大性能   

三、进程管理

1. 手动启动

1.1 将命令放入后台执行

1.2 查看后台任务列表

1.3 调出后台任务

1.4 继续任务

1.5 并行执行任务 

2. 结束进程

2.1 kill

2.2 killall

2.3 pkill

四、计划任务

1. at

1.1 概述示例

 1.2 黑白名单

2. crontab

2.1 概述选项

2.2 项目含义

2.3 示例

2.4 删除计划任务 

2.5 注意事项 


一、查看进程

1. 程序

程序是特定任务的一串代码,是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。用于描述进程要完成的功能,是控制进程执行的指令集。

2. 进程

2.1 概述

进程是运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位,进程是有生命周期的。centos6及之前由init串行启动管理进程;从centos7以后为systemd并行启动管理进程。进程都由其父进程创建,fork(),centos最初的父进程是systemd(pid=1)。

[root@localhost ~]# bash
[root@localhost ~]# pstree -p | grep bash
           |-sshd(1190)-+-sshd(1262)---bash(2095)---bash(3282)-+-grep(3408)
           |            `-sshd(3362)---bash(3372)

bash(2095)和bash(3282)为父子关系,bash(2095)和bash(3372)为兄弟关系。

2.2 进程的特征

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
  • 并发性:任何进程都可以同其他进程一起并发执行;
  • 独立性:进程是系统进行资源分配和调度的一个独立单位;
  • 结构性:进程由程序、数据和进程控制块三部分组成。

2.3 进程使用内存的问题 

内存不足:OOM

OOM 即 Out Of Memory,“内存用完了”,在情况在java程序中比较常见。系统会选一个进程将之杀死,在日志messages中看到相关的提示。

2.4 进程的状态

  • 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
  • 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
  • 执行状态:进程处于就绪状态被调度后,进程进入执行状态
  • 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
  • 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

2.5 进程的优先级os

系统中的两种优先级:在top中显示的优先级有两个,PR值和nice值    

Nice Level优先级,Nice即NI;PR系统内置的优先级,不能控制;PR=NI+20。启动进程时,通常会继承父进程的nice级别,默认为0。

NI:实际nice值                  
PR(+-20):将nice级别显示为映射到更大优先级别队列,-20映射到0,+19映射到39  

特性: 

nice值越大:表示优先级越低,例如 +19               
nice值越小:表示优先级越高,例如 -20 

优先级查看与管理:

[root@localhost ~]# ps axo pid,comm,ni    #显示pid,进程名,nice值

[root@localhost ~]# sleep 8000 &          #sleep命令可以用来将目前动作延迟一段时间,&后台运行
[1] 2675
[root@localhost ~]# ps axo pid,command,nice  | grep  sleep
  2675 sleep 8000                    0
  2683 sleep 60                      0    #系统自带计时器
  2685 grep --color=auto sleep       0    #搜索程序本身
[root@localhost ~]# renice -n -20 2675    #renice重置现有优先级
2675 (进程 ID) 旧优先级为 0,新优先级为 -20    
[root@localhost ~]# ps axo pid,command,nice  | grep  sleep
  2675 sleep 8000                  -20
  2694 sleep 60                      0
  2697 grep --color=auto sleep       0

[root@localhost ~]# nice -n -10 sleep 6000 &  #启动指定nice级别的进程
[2] 2826
[root@localhost ~]# ps axo pid,command,nice  | grep  sleep
  2675 sleep 8000                  -20
  2824 sleep 60                      0
  2826 sleep 6000                  -10        #nice值为-10
  2828 grep --color=auto sleep       0

2.6 进程的分类

  • 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
  • 前台进程:跟终端相关,通过终端启动的进程

2.7 进程与线程

线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。

Q:如何确认一个程序是单线程还是多线程? 

查看改程序的详细状态

[root@localhost ~]# cat /proc/该程序的pid/status

[root@localhost ~]# grep -i threads /proc/该程序的pid/status

[root@localhost ~]# prtstat 该程序的pid

二、进程查看

1. ps

1.1 概述

ps命令可以静态查看进程当前状态,默认显示当前终端中的进程。

1.2 常用选项

  • a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
  • u:使用以用户为主的格式输出进程信息。
  • x:显示当前用户在所有终端下的进程信息,不以终端机来区分。
  • -e:显示系统内的所有进程信息。
  • -l:使用长(Long)格式显示进程信息。
  • -f:使用完整的(Full)格式显示进程信
  • k|--sort 属性 对属性排序,属性前加 - 表示倒序 ps aux k -%cpu
  • o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

1.3 字段说明

[root@localhost ~]# ps aux | head -n3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128384  6976 ?        Ss   12:19   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    12:19   0:00 [kthreadd]
  • USER:运行进程的用户
  • PID:进程ID,程序的名字  PPID:父系程序的名字
  • %CPU:CPU占用率
  • %MEM:内存占用率
  • VSZ:占用虚拟内存
  • RSS:占用实际内存
  • TTY:进程运行的终端——?没有终端;pts某一个终端
  • STAT:进程状态man ps(/STATE)
  • START:进程启动的时间
  • TIME:进程启动时间
  • COMMAND:进程文件,进程名

ps aux #如果看到STAT为Z,表示为僵尸态。Q:如何过滤僵尸进程?

[root@localhost ~]# ps aux | grep -v grep | grep Z
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

1.4 父子关系与排序

[root@localhost ~]# ps -ef | head -n 3                     
#显示列C表示cpu利用率,查看进程父子关系PID(自己的身份证号)PPID(父系)
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 15:11 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 15:11 ?        00:00:00 [kthreadd]
[root@localhost ~]# ps  aux  --sort %cpu | head -n 3       
#升序查看cpu利用率,或者ps aux k %cpu | head -n 3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128384  7112 ?        Ss   15:11   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    15:11   0:00 [kthreadd]
[root@localhost ~]# ps  aux  --sort -%cpu | head -n 3      
#降序查看cpu利用率,或者ps aux k -%cpu | head -n 3
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        721  0.2  0.2 295564  5300 ?        Ssl  15:11   0:26 /usr/bin/vmtoolsd
root        415  0.1  0.0      0     0 ?        S    15:11   0:14 [xfsaild/dm-0]

1.5 自定义显示字段

[root@localhost ~]# ps axo user,pid,ppid,%mem,command | head -3  
#自定义显示用户名,pid,父pid,内存占用率,进程名前三行信息
USER        PID   PPID %MEM COMMAND
root          1      0  0.3 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0.0 [kthreadd]

2. top

2.1 概述

top命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

[root@localhost ~]# top | head 
top - 19:52:14 up  4:40,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 172 total,   1 running, 171 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1863028 total,   928920 free,   530992 used,   403116 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1155968 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                           
  5728 root      20   0  162100   2224   1536 R   6.2  0.1   0:00.01 top                                               
     1 root      20   0  128384   7112   4220 S   0.0  0.4   0:04.13 systemd                                           
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.05 kthreadd 

2.2 进程的性能(上半部分)

第一行:程序名-系统时间,运行时间,登录用户数,CPU负载1分钟5分钟15分钟(cpu负载三个时间点的平均值)

第二行:任务总进程数172,运行数1,睡眠数171,停止数0,僵死数0

第三行:cpu使用占比,us用户 ,sy系统,ni优先级,id空闲,wa等待处理所耗时间,hi硬件耗时,si软件耗时,st虚拟机

第四行:物理内存K,total总共, free空闲,userd使用,buff写缓存、cache读缓存硬盘内容,缓存多了会造成卡顿

缓冲(buffer)和缓存(cache)的区别:

  • 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取

  • 缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能

第五行:虚拟内存(交换分区),当内存不够时,将硬盘空间当作内存使用

2.3 进程的状态(下半部分)

PID,USER,%CPU,%MEM同上“1.3”,介绍见前部分

VIRT:virtual memory usage 虚拟内存

RES:resident memory usage 常驻内存

SHR:shared memory 共享内存;除了自身进程的共享内存,也包括其他进程的共享内存

2.4 top常用内部指令

  • h|?帮助
  • M按内存的使用排序
  • P按CPU使用排序
  • N以PID的大小排序
  • < 向前
  • > 向后
  • z彩色,Z设置彩色

2.5 top使用技巧

top:回车,立刻刷新。按z彩色显示,按F,通过光标设置

top -d 1:每1秒刷新

top -d 1 -p pid:查看指定进程的动态信息

top -d 1 -p pid1,pid2:查看多个指定进程的动态信息

Q:cpu利用率高如何排查?

使用top或者ps aux命令查看进程,另外w和vmstat命令也可以查看

3. pgrep

查看指定的进程

  • -U 指定用户
  • -l: 显示进程名
  • -a: 显示完整格式的进程名
  • -P pid: 显示指定进程的子进程
[root@localhost ~]# pgrep -l "log"  #显示进程名
413 xfs-log/dm-0
630 xfs-log/sda1
730 abrt-watch-log
737 abrt-watch-log
754 systemd-logind
1195 rsyslogd
   
[root@localhost ~]# pidof bash     #根据进程名找pid号
4884 812                           #pid4884

Q:当前系统root用户一共运行了多少进程 ?

[root@localhost ~]# pgrep -U root | wc -l
129

4. pstree

以树形结构列出进程信息

  • -a 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
  • -p 显示PID
  • -T 不显示线程thread,默认显示线程
  • -u 显示用户切换
  • -H pid 高亮显示指定进程及其前辈进程
[root@localhost ~]# pstree -p 1 | head -n1              #查看进程号为1的进程
systemd(1)-+-ModemManager(717)-+-{ModemManager}(733)
[root@localhost ~]# pstree root | head -n5              #查看用户lisi的进程
systemd-+-ModemManager---2*[{ModemManager}]
        |-NetworkManager---2*[{NetworkManager}]
        |-VGAuthService
        |-2*[abrt-watch-log]
        |-abrtd

5. lsof

lsof命令,“list opened files”的缩写,直译过来就是列举系统中已经被打开的文件。通过lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

选项功能
-c 字符串只列出以字符串开头的进程打开的文件
+d 目录名列出某个目录中所有被进程调用的文件
-u 用户名只列出某个用户的进程打开的文件
-p pid列出某个 PID 进程打开的文件
-i 端口号有哪些程序占用端口号
[root@localhost ~]# lsof | head -n5   #查询系统中所有进程调用的文件
COMMAND    PID  TID           USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd      1                root  cwd       DIR              253,0       248         64 /
systemd      1                root  rtd       DIR              253,0       248         64 /
systemd      1                root  txt       REG              253,0   1632776   34040407 /usr/lib/systemd/systemd
systemd      1                root  mem       REG              253,0     20064     153450 /usr/lib64/libuuid.so.1.3.0

6. vmstat

vmstat命令,是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。

[root@localhost ~]# vmstat [-a] [刷新延时 刷新次数]
[root@localhost ~]# vmstat -a 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 835504 295456 389152    0    0    27     4   49   78  0  1 99  0  0
 0  0      0 835512 295456 389224    0    0     0     1   73  112  0  0 100  0  0
 0  0      0 835512 295456 389224    0    0     0     0   57   93  0  0 100  0  0

字段含义: 

procs进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙; -b:不可被唤醒的进程数量,数量越大,系统越繁忙。

memory内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为 KB。-cache:缓存的内存容量,单位为 KB。

swap交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB; -so:从内存中交换到磁盘中数据的数量,单位为 KB。这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。

io磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块; -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。

system系统信息字段: -in:每秒被中断的进程次数; -cs:每秒进行的事件切换次数;这两个数越大,代表系统与接口设备的通信越繁忙。

cpu信息字段: -us:非内核进程消耗 CPU 运算时间的百分比;-sy:内核进程消耗CPU运算时间的百分比;-id:空闲 CPU 的百分比;-wa:等待I/O所消耗的CPU 百分比;-st:被虚拟机所盗用的CPU百分比。

7. free

查看进程占用,内存的详细信息

free  -h   #人性化显示
free  -m   #以m为单位查看

Q:内存占用过多怎么办? 

[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        481M        986M         12M        351M        1.2G
Swap:          4.0G          0B        4.0G
[root@localhost ~]# echo 3 > /proc/sys/vm/drop_caches     #清除缓存
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        465M        1.2G         12M        134M        1.2G
Swap:          4.0G          0B        4.0G

不过这个方法只能临时缓解,最根本的还是增加硬件配置。 

8. iostat

iostat 可以提供更丰富的IO性能状态数据,此工具由sysstat包提供。

常用选项:

  • -c 只显示CPU行
  • -d 显示设备〈磁盘)使用状态
  • -k 以千字节为为单位显示输出
  • -t 在输出中包括时间戳
  • -x 在输出中包括扩展的磁盘指标

9. iotop/iftop

监视磁盘I/O;网络宽带。两个命令均要下载安装;如果iftop无法yum安装,需要安装epel源:yum install -y epel-release.noarch

[root@localhost ~]# yum install -y epel-release.noarch
[root@localhost ~]# yum install -y iftop
[root@localhost ~]# iftop -ni ens33                     #网络流量

10. uptime

系统运行了多长时间

[root@localhost ~]# uptime
 14:22:15 up 35 min,  1 user,  load average: 0.02, 0.02, 0.05
 #当前时间   运行时间  登录用户          

11. mpstat

显示CPU相关统计

[root@localhost ~]# mpstat
Linux 3.10.0-1160.el7.x86_64 (localhost.localdomain) 	2024年01月04日 	_x86_64_	(2 CPU)

14时23分41秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
14时23分41秒  all    1.39    0.00    0.96    0.06    0.00    0.02    0.00    0.00    0.00   97.58
#当前时间          用户空间 ni优先级 系统内核                         盗取时间
系统空闲
[root@localhost ~]# mpstat  1  3
#1秒 一次 看3次

12. dstat

系统资源统计,需要安装

[root@localhost ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  1   1  97   0   0   0| 216k  280k|   0     0 |   0     0 | 182   265 
  2  37  52   9   0   1|1408k  832k|  60B  818B|   0     0 |4676  5283 
  2  37  51  10   0   1|1284k    0 |  60B  354B|   0     0 |4644  5300 
  2  38  50   9   0   1|1184k    0 |  60B  346B|   0     0 |4562  5051 ^C

13. webadin

基于web界面的系统管理工具,可以通过浏览器远程管理linux;安装包获取:

链接:https://pan.baidu.com/s/1RFfkLKlLHeTSUK9wD3EKOw 
提取码:vu8r 

yum install webmin-2.100-1.noarch.rpm -y
rpm -q webmin
systemctl start webmin
systemctl status webmin

https://虚拟机ip:10000/
root  
自己系统的密码

 

14. 服务器五大性能   

资源命令
cputop,w
内存top,free
硬盘剩余df
硬盘读写性能iostat
网络带宽iftop

三、进程管理

1. 手动启动

  • 前台启动:通过终端启动,且启动后一直占据终端
  • 后台启动:可通过终端启动,但启动后即转入后台运行(释放终端),后台执行可以并行执行

1.1 将命令放入后台执行

[root@localhost ~]# sleep 8000 &    #&表示放入后台
[1] 2156

1.2 查看后台任务列表

[root@localhost ~]# jobs
[1]+  运行中               sleep 8000 &

1.3 调出后台任务

[root@localhost ~]# fg 1
sleep 8000
^Z                                        #ctrl z
[1]+  已停止               sleep 8000

1.4 继续任务

[root@localhost ~]# bg 1
[1]+ sleep 8000 &

1.5 并行执行任务 

案例:查看192.168.190段哪些设备在线

[root@localhost ~]# vim ping.sh

#!/bin/bash
#name=ping

for i in {1..254}
do
{
ping -c1 -w2 192.168.190.${i} &> /dev/null && echo "192.168.190."$i" up" >> /data/up || echo "192.168.190."$i" down" >> /data/down
} &
done
#for循环,变量i取值1到254.向192.168.1.1~254各ping一个包,超时两秒,不论命令是否正确输出到垃圾箱;如果ping通将内容追加/data/up文件中;如果ping不通将内容追加/data/down文件中;整个过程后台运行。

2. 结束进程

2.1 kill

kill从字面来看,就是用来杀死进程的命令,但事实上,kill命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

kill [信号] PID 
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。
信号编号信号名含义
0EXIT程序退出时收到该信息
1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化
2INT表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号
3QUIT退出
9KILL杀死进程,即强制结束进程
11SEGV段错误
15TERM正常结束进程,是 kill 命令的默认信号

注:可以使用 kill -l 命令查看所有信号及其编号 

2.2 killall

killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。

killall [选项] [信号] 进程名
  • -i:交互式,询问是否要杀死某个进程;
  • -I:忽略进程名的大小写;  

2.3 pkill

当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程。不过plkill针对单个对象,killall可针对多个对象。该命令的基本格式如下:

 pkill [-t 终端号] 进程名
  • -u uid: effective user,生效者,根据进程所在的终端终止相应进程
  • -U uid: real user,真正发起运行命令者,根据进程所属的用户名终止相应进程
  • -t terminal: 与指定终端相关的进程
  • -l: 显示进程名(pgrep可用)
  • -a: 显示完整格式的进程名(pgrep可用)
  • -P pid: 显示指定进程的子进程
[root@localhost ~]# w                #查询本机已经登录的用户
 16:52:50 up  1:51,  2 users,  load average: 0.01, 0.13, 0.12
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.190.1    15:02    2.00s  0.76s  0.02s w
root     pts/1    192.168.190.1    16:52    3.00s  0.06s  0.06s -bash
[root@localhost ~]# pkill -9 -t pts/1
[root@localhost ~]# w                #强制杀死从pts/1虚拟终端登陆的进程
 16:53:19 up  1:51,  1 user,  load average: 0.01, 0.11, 0.11
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.190.1    15:02    7.00s  0.76s  0.01s w

四、计划任务

1. at

1.1 概述示例

一次性的计划任务

at [选项] [时间]
[root@localhost ~]# date
2024年 01月 04日 星期四 16:18:44 CST
[root@localhost ~]# at 16:20             #创建计划      
at> touch /data/a<EOT>                   #计划内容,ctrl d提交
job 2 at Thu Jan  4 16:20:00 2024
[root@localhost ~]# atq                  #查看任务列表
2	Thu Jan  4 16:20:00 2024 a root
[root@localhost ~]# date
2024年 01月 04日 星期四 16:20:10 CST
[root@localhost ~]# ls /data
a
[root@localhost ~]# atrm  任务序列号      #删除任务

 1.2 黑白名单

  • 如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用 at 命令的)。
  • 如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。
  • 如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。

2. crontab

2.1 概述选项

周期性的计划任务

crontab -e
#进入 crontab 编辑界面。会打开Vim编辑你的任务
* * * * * 执行的任务,命令需要写绝对路径
如果不想写绝对路径需要在开头加上:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
选项功能
-u user用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。
-e编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
-i在删除用户的 crontab 文件时,给确认提示。

2.2 项目含义

[root@localhost ~]# cat /etc/crontab   #查看crontab配置文件
项目含义范围
第一个"*"一小时当中的第几分钟(minute)0~59
第二个"*"一天当中的第几小时(hour)0~23
第三个"*"一个月当中的第几天(day)1~31
第四个"*"一年当中的第几个月(month)1~12
第五个"*"一周当中的星期几(week)0~7(0和7都代表星期日)

2.3 示例

每月的1号15号30号—— * *   1,15,30  *  *

中午12点-16点每隔两小时 —— *  12-16/2  *  *  *

每半小时执行一次—— 30  *   *  *  *

特殊符号含义
*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号)代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线)代表每隔多久执行一次。比如"*/10命令",代表每隔 10 分钟就执行一次命令。

2.4 删除计划任务 

crontab -e 进入编辑器删除内容,类似于vim编辑器,编辑保存退出

crontab -r 删除计划任务

2.5 注意事项 

  • 5个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,存在矛盾
  • */30 * * * * /usr/bin/touch /data/   `date +\%F`,这里存在语法错误,%前面需要加转义符
  • 43
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值