自学内容网 自学内容网

Linux - 例行性工作

一、例行性工作

at — 一次性的任务计划

广播

[root@server ~]# wall #后加需要广播的消息,表示向所有会话广播该信息。
例如:
[root@server ~]# wall hello
                                                                               
来自 root@server (pts/0) (Fri Jan 19 14:24:30 2024) 的广播消息:       
                                                                               
hello

计时任务

#[root@server ~]# at now + 时间#表示从现在开始,多少时间后执行任务。
例如:
[root@server ~]# at now + 1minutes
warning: commands will be executed using /bin/sh
at Fri Jan 19 14:23:00 2024
at> wall hello
at> <EOT>#按ctrl+d结束任务编译。
job 3 at Fri Jan 19 14:23:00 2024
                                                                               
来自 root@server (somewhere) (Fri Jan 19 14:23:00 2024) 的广播消息:   
                                                                               
hello

#注意:任务计时从开始配置任务时开始,任务配置的时间也算在内。

查询任务

[root@server ~]# atq
[root@server ~]# at -l
#两个命令效果相同,都是用于查询当前还未执行的任务。
例如:
[root@server ~]# atq
2Tue Jan  9 13:53:00 2024 a root
[root@server ~]# at -l
2Tue Jan  9 13:53:00 2024 a root

删除任务

[root@server ~]# at -r #后跟需要删除的任务编号。
等同于:
[root@server ~]# atrm #后跟需要删除的任务编号。
例如:
[root@server ~]# at -l
5Tue Jan  9 14:03:00 2024 a root
4Tue Jan  9 13:58:00 2024 a root
[root@server ~]# atrm 4
[root@server ~]# at -l
5Tue Jan  9 14:03:00 2024 a root

#任务执行完成后将自动删除任务。

其他参数

  • -m:当任务完成之后,即使没有标准输出,将给用户发送邮件。
  • -l:atq的别名,可列出目前系统上面的所有该用户的at调度。
  • -d:atrm的别名,可以取消一个在at调度中的工作。
  • -v:使用较明显的时间格式,列出at调度中的任务列表。
  • -c:可以列出后面接的该项工作的实际命令内容(脚本)。
  • -f:从文件中读取作作业。

时间格式

  • ​ HH:MM:在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明天执行。(即寻找最近的一次)
  • ​ HH:MM YYYY-MM-DD:强制规定在某年某月的某一天的特殊时刻进行该工作。 (MMDDYY)
  • ​ now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks。

任务脚本文件

[root@server ~]# ll /var/spool/at/
#该文件中储存了每一次任务的脚本文件。
#删除任务也可以直接找到并删除需要删除任务的对应脚本文件。

配置文件

[root@server ~]# vim /etc/at.deny
#该文件记录的是拒绝添加任务的用户名单,如果默认不存在,可以自己创建。(每行记录一个用户名)
[root@server ~]# vim /etc/at.allow 
#该文件记录的是允许添加任务的用户名单,如果默认不存在,可以自己创建。(每行记录一个用户名)
#如果两个文件都有同一个用户,允许文件优先生效。

cron — 周期性的任务计划

查看命令文件位置

[root@server ~]# which #后加命令
例如:
[root@server ~]# which wall
/usr/bin/wall

任务编辑

[root@server ~]# crontab -e
#-e表示进入编辑,类似于vim文本编辑的格式。
#时间格式是以(分    时      日      月      周命令的解释器任务)进行定义。
例如:
[root@server ~]# crontab -e
#内容
09      15      *       *       *       /usr/bin/wall   hello
#*表示任意,上面这条即表示每月每周每天的15点09分时广播hello这条信息。
crontab: installing new crontab
来自 root@server (somewhere) (Tue Jan  9 15:09:01 2024) 的广播消息:   
                                                                               
hello
#如果命令就在默认解释器下能匹配到,就可以不用写解释器而直接写命令。

用户身份

[root@server ~]# crontab  -u 用户名 -e
#-u表示指定身份创建任务。
#默认情况下创建任务是以当前用户身份。

查询任务

[root@server ~]# crontab -u 用户名 -l
#查询时也可以指定身份查询。
#默认是查看当前身份任务。

删除任务

[root@server ~]# crontab  -u 用户名 -e
#编辑删除对应任务行。
[root@server ~]# crontab -u 用户名 -r
#删除指定用户的所有任务。

特殊符号

特殊字符含义
*代表任何时刻
,代表分隔时段
- 0-59代表一段时间范围
/数字指定时间的间隔频率,例如每 3 分钟进行一次,*/3

配置文件

[root@server ~]# vim /etc/cron.deny
#该文件记录的是拒绝添加任务的用户名单,如果默认不存在,可以自己创建。(每行记录一个用户名)
[root@server ~]# vim /etc/cron.allow 
#该文件记录的是允许添加任务的用户名单,如果默认不存在,可以自己创建。(每行记录一个用户名)
#如果两个文件都有同一个用户,允许文件优先生效。

周期性任务脚本路径

[root@server ~]# ll /var/spool/cron
#该文件中储存了每一个周期任务的脚本文件。
#删除任务也可以直接找到并删除需要删除任务的对应脚本文件。

日志文件

[root@server ~]# ll /var/spool/cron
#可以用来判断任务是否执行成功。

系统级别编辑周期性任务

[root@server ~]# 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

#可以直接在该文件中直接进行编译命令,格式同原来的编译格式。

原文地址:https://blog.csdn.net/m0_74939395/article/details/143001057

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!