linux系統定時任務及延遲任務

前言

對服務器的運維基本在凌晨進行,所以程序uan提前寫好,在凌晨執行。

延遲任務

1.延遲任務的發起

[root@rhel8_node1 ~]# at 05:13
at> rm -fr /mnt/* (執行內容)
at>[ctrl]+[d](任務發起)

查看任務隊列:at -l

[root@rhel8_node1 ~]# at -l
3	Sat Mar 28 05:17:00 2020 a root

查看任務內容:at -c 任務號

[root@rhel8_node1 ~]# at -c 3
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
LS_COLORS=rs=0:di=38\;5\;33:ln=38\;5\;51:mh=00:pi=40\;38\;5\;11:so=38\;5\;13:do=38\;5\;5:bd=48\;5\;232\;38\;5\;11:cd=48\;5\;232\;38\;5\;3:or=48\;5\;232\;38\;5\;9:mi=01\;05\;37\;41:su=48\;5\;196\;38\;5\;15:sg=48\;5\;11\;38\;5\;16:ca=48\;5\;196\;38\;5\;226:tw=48\;5\;10\;38\;5\;16:ow=48\;5\;10\;38\;5\;21:st=48\;5\;21\;38\;5\;15:ex=38\;5\;40:\*.tar=38\;5\;9:\*.tgz=38\;5\;9:\*.arc=38\;5\;9:\*.arj=38\;5\;9:\*.taz=38\;5\;9:\*.lha=38\;5\;9:\*.lz4=38\;5\;9:\*.lzh=38\;5\;9:\*.lzma=38\;5\;9:\*.tlz=38\;5\;9:\*.txz=38\;5\;9:\*.tzo=38\;5\;9:\*.t7z=38\;5\;9:\*.zip=38\;5\;9:\*.z=38\;5\;9:\*.dz=38\;5\;9:\*.gz=38\;5\;9:\*.lrz=38\;5\;9:\*.lz=38\;5\;9:\*.lzo=38\;5\;9:\*.xz=38\;5\;9:\*.zst=38\;5\;9:\*.tzst=38\;5\;9:\*.bz2=38\;5\;9:\*.bz=38\;5\;9:\*.tbz=38\;5\;9:\*.tbz2=38\;5\;9:\*.tz=38\;5\;9:\*.deb=38\;5\;9:\*.rpm=38\;5\;9:\*.jar=38\;5\;9:\*.war=38\;5\;9:\*.ear=38\;5\;9:\*.sar=38\;5\;9:\*.rar=38\;5\;9:\*.alz=38\;5\;9:\*.ace=38\;5\;9:\*.zoo=38\;5\;9:\*.cpio=38\;5\;9:\*.7z=38\;5\;9:\*.rz=38\;5\;9:\*.cab=38\;5\;9:\*.wim=38\;5\;9:\*.swm=38\;5\;9:\*.dwm=38\;5\;9:\*.esd=38\;5\;9:\*.jpg=38\;5\;13:\*.jpeg=38\;5\;13:\*.mjpg=38\;5\;13:\*.mjpeg=38\;5\;13:\*.gif=38\;5\;13:\*.bmp=38\;5\;13:\*.pbm=38\;5\;13:\*.pgm=38\;5\;13:\*.ppm=38\;5\;13:\*.tga=38\;5\;13:\*.xbm=38\;5\;13:\*.xpm=38\;5\;13:\*.tif=38\;5\;13:\*.tiff=38\;5\;13:\*.png=38\;5\;13:\*.svg=38\;5\;13:\*.svgz=38\;5\;13:\*.mng=38\;5\;13:\*.pcx=38\;5\;13:\*.mov=38\;5\;13:\*.mpg=38\;5\;13:\*.mpeg=38\;5\;13:\*.m2v=38\;5\;13:\*.mkv=38\;5\;13:\*.webm=38\;5\;13:\*.ogm=38\;5\;13:\*.mp4=38\;5\;13:\*.m4v=38\;5\;13:\*.mp4v=38\;5\;13:\*.vob=38\;5\;13:\*.qt=38\;5\;13:\*.nuv=38\;5\;13:\*.wmv=38\;5\;13:\*.asf=38\;5\;13:\*.rm=38\;5\;13:\*.rmvb=38\;5\;13:\*.flc=38\;5\;13:\*.avi=38\;5\;13:\*.fli=38\;5\;13:\*.flv=38\;5\;13:\*.gl=38\;5\;13:\*.dl=38\;5\;13:\*.xcf=38\;5\;13:\*.xwd=38\;5\;13:\*.yuv=38\;5\;13:\*.cgm=38\;5\;13:\*.emf=38\;5\;13:\*.ogv=38\;5\;13:\*.ogx=38\;5\;13:\*.aac=38\;5\;45:\*.au=38\;5\;45:\*.flac=38\;5\;45:\*.m4a=38\;5\;45:\*.mid=38\;5\;45:\*.midi=38\;5\;45:\*.mka=38\;5\;45:\*.mp3=38\;5\;45:\*.mpc=38\;5\;45:\*.ogg=38\;5\;45:\*.ra=38\;5\;45:\*.wav=38\;5\;45:\*.oga=38\;5\;45:\*.opus=38\;5\;45:\*.spx=38\;5\;45:\*.xspf=38\;5\;45:; export LS_COLORS
SSH_CONNECTION=192.168.0.10\ 33708\ 192.168.0.11\ 22; export SSH_CONNECTION
LANG=en_US.UTF-8; export LANG
HISTCONTROL=ignoredups; export HISTCONTROL
HOSTNAME=rhel8_node1.westos; export HOSTNAME
XDG_SESSION_ID=4; export XDG_SESSION_ID
USER=root; export USER
SELINUX_ROLE_REQUESTED=; export SELINUX_ROLE_REQUESTED
PWD=/root; export PWD
HOME=/root; export HOME
SSH_CLIENT=192.168.0.10\ 33708\ 22; export SSH_CLIENT
SELINUX_LEVEL_REQUESTED=; export SELINUX_LEVEL_REQUESTED
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share; export XDG_DATA_DIRS
SSH_TTY=/dev/pts/1; export SSH_TTY
MAIL=/var/spool/mail/root; export MAIL
SHELL=/bin/bash; export SHELL
XMODIFIERS=@im=none; export XMODIFIERS
SELINUX_USE_CURRENT_RANGE=; export SELINUX_USE_CURRENT_RANGE
SHLVL=1; export SHLVL
LOGNAME=root; export LOGNAME
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus; export DBUS_SESSION_BUS_ADDRESS
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
HISTSIZE=1000; export HISTSIZE
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
cd /root || {
	 echo 'Execution directory inaccessible' >&2
	 exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER75cd62c4'

rm -fr /mnt/*
marcinDELIMITER75cd6

取消任務: at -r 任務號

[root@rhel8_node1 ~]# at -r 3

2.當延遲任務有輸出,輸出會以郵件形式發送到任務發起者郵箱中

查找並安裝mail

沒有mail
[root@rhel8_node1 ~]# mail
bash: mail: command not found...
Failed to search for file: Cannot update read-only repo
尋找mail
[root@rhel8_node1 ~]# dnf whatprovides /bin/mail
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:30:03 ago on Sat 28 Mar 2020 04:54:33 AM CST.
mailx-12.5-29.el8.x86_64 : Enhanced implementation of the mailx command
Repo        : BaseOS
Matched from:
Filename    : /bin/mail
安裝mail
[root@rhel8_node1 ~]# dnf install mailx-12.5-29.el8.x86_64
執行mail
[root@rhel8_node1 ~]# mail
No mail for root

安裝郵件服務:dnf install mailx postfix

[root@rhel8_node1 ~]# dnf install postfix -y

開啓郵件服務並啓用

systemctl start postfix
systemctl enable postifx

給root用戶編寫郵件

[root@rhel8_node1 ~]# mail root
Subject: xixi
I
come
again
.              (.代表結尾)
EOT

查看root用戶的郵件

[root@rhel8_node1 ~]# mail -u root
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/mail/root": 1 message
>   1 root                  Sat Mar 28 05:32  21/597   "hello"
& 
Message  1:
From root@rhel8_node1.westos  Sat Mar 28 05:32:37 2020
Return-Path: <root@rhel8_node1.westos>
X-Original-To: root
Delivered-To: root@rhel8_node1.westos
Date: Sat, 28 Mar 2020 05:32:37 +0800
To: root@rhel8_node1.westos
Subject: hello 
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root <root@rhel8_node1.westos>
Status: RO

i
miss
you

清空root郵件

[root@rhel8_node1 ~]# > /var/mail/root

root用戶沒有郵件

[root@rhel8_node1 ~]# mail -u root
No mail for root

編寫延時任務,此命令有輸出但不會顯示到字符設備中,此命令輸出會用郵件發送給at發起人

[root@rhel8_node1 ~]# at 05:47
warning: commands will be executed using /bin/sh
at> timedatectl
at> <EOT>
job 4 at Sat Mar 28 05:47:00 2020

查看郵件

[root@rhel8_node1 ~]# mail -u root
Heirloom Mail version 12.5 7/5/10.Type ? for help.
"/var/mail/root": 1 message 1 new
	>N 1 root Sat Feb 22 10:27 27/1226 "Output from your job "(at輸出郵件)
& 1(輸入郵件編號查看)
&q(退出)

3.at命令的控制
控制黑名單,此名單中的人不能執行at

[root@rhel8_node1 ~]# vim /etc/at.deny 
hai
測試:
[root@rhel8_node1 ~]# su - hai
[hai@rhel8_node1 ~]$ date
Sat Mar 28 06:07:49 CST 2020
[hai@rhel8_node1 ~]$ at 06:10
You do not have permission to use at.

/etc/at.allow##此文件默認不存在
##當此文件存在/etc/at.deny不生效
##當此文件存在系統普通用戶默

定時任務

crond (定時任務服務)

1.crond 設定方式
命令設定方式:(用戶級別定時任務)
設定crontab -u root -e

[root@rhel8_node1 ~]# crontab -u root -e
43 18 28 03 06 rm -fr /mnt/*

查看crontab -u root -l

[root@rhel8_node1 ~]# crontab -u root -l
43 18 28 03 06 rm -fr /mnt/*

刪除crontab -u root -r

[root@rhel8_node1 ~]# crontab -u root -r
[root@rhel8_node1 ~]# cat /var/spool/cron/root
cat: /var/spool/cron/root: No such file or directory

任務存儲位置/var/spool/cron/root

root@rhel8_node1 ~]# cat /var/spool/cron/root
43 18 28 03 06 rm -fr /mnt/*

設定模板:

時間 任務
分鐘 小時 天 月 周 系統命令腳本

例子:

08-17 * * * *##每天每小時08分-17分
08-17 * * * 3,5##每週3和週五每小時08分-17分
08-17/2 * * * 3,5##每週3和週五每小時08分-17分時間段每隔2分鐘
08-17/2 10 * * 3,5##每週3和週五10點08分-17分時間段每4隔2分鐘
08-17/2 10 5 * 3,5##每週3和週五及每月5號10點08分-17分時間段每隔2分鐘
08-17/2 10 5 3 3,5##3月每週3和週五及3月5號10點08分-17分時間段每隔2分鐘

配置文件方式設定: (系統級別cron,只有超級用戶可操作)
系統級別cron設定文件存放路徑:/etc/cron.d

[root@rhel8_node1 ~]# cd  /etc/cron.d
[root@rhel8_node1 cron.d]# ls
0hourly  raid-check

編寫設定:
cron設定文件時間用戶動作在/etc/cron.d/westos

vim /etc/cron.d/westos
* * * * *root  rm -fr /mnt/*

其他目錄:

/etc/cron.daily/(每天任務)
/etc/cron.hourly/(每小時任務)
/etc/cron.monthly/(每月任務)
/etc/cron.weekly/(每週執行動作)

例:

[root@rhel8_node1 etc]# cd cron.hourly/
[root@rhel8_node1 cron.hourly]# vim clean_mnt
rm -fr /mnt/*
[root@rhel8_node1 cron.hourly]# chmod +x clean_mnt(賦予執行權限)

2.用戶級別crond控制設定
cron用戶名單,用法同at.deny,可參考上方博客

vim /etc/cron.deny(黑名單)
vim /etc/cron.alow(白名單)

後記

不難理解,需記憶練習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章