当前位置:首页>Linux>1.20 Linux定时计划任务与日志管理

1.20 Linux定时计划任务与日志管理

  • 2026-09-02 19:40:24
1.20 Linux定时计划任务与日志管理

服务:放入后台,脱离终端运行

1 定时计划任务

1.1 at

at 突发性一次计划

crontab 周期性循环计划

at设置前的准备:

检查at服务是否启动开启,是否开机自启动

## 安装at[root@localhost ~]# rpm -qa |grep ^at[root@localhost ~]# yum -y install at## 启动atd$ systemctl  start  atd    #启动atd服务$ systemctl  state   atd    #检查atd服务状态
[root@localhost ~]# systemctl state atdUnknown operation 'state'.[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 二 2022-09-20 19:29:39 CST; 1min 47s ago Main PID: 18716 (atd)   CGroup: /system.slice/atd.service           └─18716 /usr/sbin/atd -f9月 20 19:29:39 localhost.localdomain systemd[1]: Started Job spooling tools.
## systemctl   is-enabled  atd   #是否开机运行[root@localhost ~]# systemctl is-enabled atdenabled## systemctl   disable  服务   #服务停用开机自启动## systemctl   enable  服务   #服务启用开机自启动## 启动、自启动atd[root@localhost ~]# systemctl enable atd --now
at定时任务设置
## at   时间   #交互式设置定时任务[root@localhost ~]# at now+2minat>
## at   时间  <  a.txt   #(重定向设置)在某个时间设置定时任务为a.txt文件内容的命令[root@localhost ~]# lsanaconda-ks.cfg  yq.txt[root@localhost ~]# at now+1min < yq.txtjob 8 at Tue Sep 20 20:00:00 2022[root@localhost ~]# lsanaconda-ks.cfg  yq.txt[root@localhost ~]# date2022年 09月 20日 星期二 20:00:02 CST[root@localhost ~]# lsanaconda-ks.cfg  yq  yq.txt

常见的at时间设置

[root@localhost ~]# at 20:00 2023-10-1   #设置定时任务在2023年10月2日at> <EOT>job 11 at Sun Oct  1 20:00:00 2023[root@localhost ~]# at now+1min     #设置定时任务在现在的1分钟以后at> <EOT>job 12 at Tue Sep 20 20:13:00 2022[root@localhost ~]# at 17:00 tomorrow   #设置定时任务在明天的17点at> <EOT>job 13 at Wed Sep 21 17:00:00 2022[root@localhost ~]# at 6:00 pm +3 days   #设置定时任务在三天后的下午6点at> <EOT>job 14 at Fri Sep 23 18:00:00 2022
at定时任务查看

at -l #查看所有at设置的定时任务

[root@localhost ~]# at -l10 Tue Sep 20 20:15:00 2022 a root

atq #查看所有at设置的定时任务

[root@localhost ~]# atq10 Tue Sep 20 20:15:00 2022 a root

注:只能查看未执行的定时任务,已经完成的不会显示

## at  -c   数字  #查看指定条数的定时任务(普通用户)[root@localhost ~]# at -c 10#!/bin/sh# atrun uid=0 gid=0# mail root 0umask 22XDG_SESSION_ID=24; export XDG_SESSION_IDHOSTNAME=localhost.localdomain; export HOSTNAMESELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTEDSHELL=/bin/bash; export SHELLHISTSIZE=1000; export HISTSIZESSH_CLIENT=192.168.18.1\ 3074\ 22; export SSH_CLIENTSELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGESSH_TTY=/dev/pts/1; export SSH_TTYUSER=root; export USERLS_COLORS=rs=0:di=01\;34:ln=0...MAIL=/var/spool/mail/root; export MAILPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATHPWD=/root; export PWDLANG=zh_CN.UTF-8; export LANGSELINUX_LEVEL_REQUESTED=; export SELINUX_LEVEL_REQUESTEDHISTCONTROL=ignoredups; export HISTCONTROLSHLVL=1; export SHLVLHOME=/root; export HOMELOGNAME=root; export LOGNAMESSH_CONNECTION=192.168.18.1\ 3074\ 192.168.18.134\ 22; export SSH_CONNECTIONLESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPENXDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIRcd /root || {  echo 'Execution directory inaccessible' >&2  exit 1}${SHELL:-/bin/sh} << 'marcinDELIMITER6d749ca8'init 6                    #设置的定时任务marcinDELIMITER6d749ca8
## ls  /var/spool/at/   #以文件形式查看定时任务(root用户)[root@localhost ~]# ls /var/spool/ata0000a01a7183f  spool
at删除
  atrm  数字      #普通用户删除定时任务  rm  -rf  /var/spool/at/文件名  #root用户删除定时任务

1.2 crontab

检查crond服务
[root@localhost ~]# systemctl status crond● crond.service - Command Scheduler   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)   Active: active (running) since 二 2022-09-20 18:37:10 CST; 1h 42min ago Main PID: 6121 (crond)   CGroup: /system.slice/crond.service           └─6121 /usr/sbin/crond -n9月 20 18:37:10 localhost.localdomain systemd[1]: Started Command Scheduler.9月 20 18:37:10 localhost.localdomain crond[6121]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 8% if used.)9月 20 18:37:11 localhost.localdomain crond[6121]: (CRON) INFO (running with inotify support
设置crontab
crontab  [选项] -e   #设置 -l   #查看 -u   #指定用户 -r   #删除
[root@localhost ~]# crontab -e */1 * * * * date | xargs >>  /root/yq.txt   #每分钟将本地时间追加式写入yq.txt[root@localhost ~]# date && cat yq.txt    #检查2022年 09月 20日 星期二 20:44:39 CST2022年 09月 20日 星期二 20:38:07 CST2022年 09月 20日 星期二 20:38:54 CST2022年 09月 20日 星期二 20:38:59 CST[root@localhost ~]# date && cat yq.txt2022年 09月 20日 星期二 20:45:29 CST2022年 09月 20日 星期二 20:38:07 CST2022年 09月 20日 星期二 20:38:54 CST2022年 09月 20日 星期二 20:38:59 CST2022年 09月 20日 星期二 20:45:01 CST
排查定时任务
## 普通用户:   crontab   -l[root@localhost ~]# crontab -l*/1 * * * * date | xargs >>  /root/yq.txt
## root用户:   crontab  -u  用户名  -l[root@localhost ~]# crontab -u yq1 -l*/1 * * * * mail -s "hello" root@192.168.18.134 < /etc/fstab
## ll  /var/spool/cron[root@localhost ~]# ll /var/spool/cron总用量 8-rw-------. 1 root root 42 9月  20 20:44 root-rw-------. 1 yq1  yq1  61 9月  20 20:49 yq1
crontab -e 语法
     分  时  日  月  周  命令   *  #任意     取值范围内数字   /  #每     时间间隔频率   -  #数字-数字     连续数字    ,    #数字,数字       离散数字常见写法:0 21 * * *      #每天21点45 4 1,10,22 * *       #每月1、10、22日的4点45分45  4 1-10 * *         #每月1到10日的4点45分3,15 8-11 */2 * *          #每隔两天,上午的8点到11点每个小时的第3和第15分钟0 23-7/1 * * *        #每天23点到7点。每隔一小时15 21 * * 1-5         #每周一到周五,每天的21点15分
#系统级别的定时任务[root@localhost ~]# ll /etc/crontab-rw-r--r--. 1 root root 451 6月  10 2014 /etc/crontab#系统任务调度的配置文件

at、cron黑白名单

白名单优先级更高

黑名单默认为空,其他都允许,加入则拒绝执行

白名单默认为空,其他都拒绝,加入则允许执行

/etc/at.deny    #at黑名单/etc/cron.deny    #cron黑名单/etc/at.allow    #at白名单/etc/cron.allow    #cron白名单

最新文章

随机文章