at命令
功能
at命令用于執行未來某個時間點的某一次任務,任務的執行結果為以郵件的形式發送給用戶
命令格式
at [OPTION] TIME
常用選項[OPTION]
-l 查看等待運行的任務
atq 命令也可用戶查看等待運行的任務
-f /path/from/file 從指定文件中讀取作業任務,而不再交互式輸入
-d # 刪除指定的作業任務
-c 查看指定作業的具體內容
-q QUEUE 指明隊列
TIME
HH:MM[YYYY-mm-dd]
noon,mdinight,teatime(下午4點)
tomorrow
now+#(minutes,hours,days,weeks)
使用示例
一分鐘之后執行mkdir /test
[root@localhost ~]# at now+1minutes
at> mkdir /test
at> <EOT>
job 6 at Mon Jun 11 13:39:00 2018
查看等待運行的作業
[root@localhost ~]# at -l
8 Mon Jun 11 13:50:00 2018 a root
[root@localhost ~]# atq
8 Mon Jun 11 13:50:00 2018 a root
查看作業的具體內容
[root@localhost ~]# at -c 8
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
XDG_SESSION_ID=1235; export XDG_SESSION_ID
HOSTNAME=localhost.localdomain; export HOSTNAME
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=192.168.1.102\ 57385\ 22; export SSH_CLIENT
SSH_TTY=/dev/pts/0; export SSH_TTY
USER=root; export USER
LS_COLORS=rs=0:di=01\;34:ln=01\;36:mh=00:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\;33\;01:or=40\;31\;01:mi=01\;05\;37\;41:su=37\;41:sg=30\;43:ca=30\;41:tw=30\;42:ow=34\;42:st=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.arc=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*.lha=01\;31:\*.lz4=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.tzo=01\;31:\*.t7z=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lrz=01\;31:\*.lz=01\;31:\*.lzo=01\;31:\*.xz=01\;31:\*.bz2=01\;31:\*.bz=01\;31:\*.tbz=01\;31:\*.tbz2=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.war=01\;31:\*.ear=01\;31:\*.sar=01\;31:\*.rar=01\;31:\*.alz=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*.7z=01\;31:\*.rz=01\;31:\*.cab=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.gif=01\;35:\*.bmp=01\;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.svgz=01\;35:\*.mng=01\;35:\*.pcx=01\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.webm=01\;35:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35:\*.fli=01\;35:\*.flv=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=01\;35:\*.cgm=01\;35:\*.emf=01\;35:\*.axv=01\;35:\*.anx=01\;35:\*.ogv=01\;35:\*.ogx=01\;35:\*.aac=01\;36:\*.au=01\;36:\*.flac=01\;36:\*.mid=01\;36:\*.midi=01\;36:\*.mka=01\;36:\*.mp3=01\;36:\*.mpc=01\;36:\*.ogg=01\;36:\*.ra=01\;36:\*.wav=01\;36:\*.axa=01\;36:\*.oga=01\;36:\*.spx=01\;36:\*.xspf=01\;36:; export LS_COLORS
MAIL=/var/spool/mail/root; export MAIL
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
PWD=/root; export PWD
LANG=en_US.UTF-8; export LANG
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
SSH_CONNECTION=192.168.1.102\ 57385\ 192.168.1.107\ 22; export SSH_CONNECTION
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
cd /root || {
echo 'Execution directory inaccessible' >&2
exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER50548e49'
mkdir /test
marcinDELIMITER50548e49
刪除指定的作業
[root@localhost ~]# at -d 8
crontab命令
功能
用于設定系統中周期性執行的任務計劃,任務計劃分為兩類
系統cron任務:
主要用于實現系統自身維護,配置系統cron任務需要手動編輯:/etc/crontab文件
用戶cron任務:
用于實現各用戶的cron任務,用crontab命令實現
系統cron任務配置文件 /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
注意:
每一行定義一個周期性任務
* * * * * :定義周期性時間
user-name :運行周期性任務的用戶
command to be executed :定義任務
此處的環境變量不同于用戶登錄后獲得的環境變量,因此,建議使用命令的絕對路徑.
執行結果郵件發送給MAILTO指定的用戶
用戶cron配置文件 /var/spool/cron/USERNAME
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
# | | | | |
# * * * * * command to be executed
時間表示法
1,特定值
給定時間點有效取值范圍內的值
注意:day of week 和day of month 一般不同時使用
2,*
給定時間點上有效取值范圍內的所有值:表“每”
3,離散取值
在時間點上使用逗號分隔的多個值
#,#,#
4,連續取值
在時間點上使用-鏈接開頭和結束
#-#
5 在指定時間點上定義步長 /#
*/# #及步長
注意:給定的時間不能被步長整除時,其意義將不復存在
示例
3 * * * * 每小時執行一次,每小時的第3分鐘
3 4 * * 5 每周執行一次,每周5的4點3分
5 6 7 * * 每月執行一次,每月的7號6點5分
7 8 9 10 * 每年執行一次,每年的10月9號8點7分
9 8 * * 3,7 每周三周日8點9分
6 8,20 * * 3,7 每周三周日的8點和20點
0 9-18 * * 1-5 周一到周五的9點到18點
*/5 * * * * 每4分鐘執行一次某任務
命令格式
crontab [-u user] [-l | -r | -e] [-i] [-s]
-e 表示編輯任務
-l 列出所有任務
-r 移除所有任務,即刪除/var/spool/cron/USERNAME文件
-i 在使用-r選項是提示用戶確認
-u user root用戶可為其他用戶管理計劃任務
注意:定義COMMAND時,如果命令需要用到%,需要對其轉義,但放置于單引號中的%不用轉義
運行結果以郵件形式通知當前用戶,如果拒絕接受郵件
* * * * * COMMAND >/dev/null
* * * * * COMMAND &>/dev/null
使用示例
每周三凌晨三,五點10分執行某個腳本輸出當前時間,時間格式為2017-12-28 10:00:00
[root@localhost ~]# crontab -e
10 3,5 * * 3 /usr/bin/date +%F\ %T
[root@localhost ~]# crontab -l
10 3,5 * * 3 /usr/bin/date +%F\ %T
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100864