at命令用于在指定时间执行命令,一次性命令。
at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。
假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。
用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。
上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。
指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
语法
选项
-f:指定包含具体指令的任务文件;
-q:指定新任务的队列名称;
-l:显示待执行任务的列表;
-d:删除指定的待执行任务;
-m:任务执行完成后向用户发送E-mail。
参数
日期时间:指定任务执行的日期时间。
例子:
1、在明天十点钟执行任务
root@debian:~# root@debian:~# at 10:00 tomorrow warning: commands will be executed using /bin/sh at> ls /etc/passwd > /home/guest/passwd_10 at> <EOT> job 11 at Fri Apr 27 10:00:00 2018 root@debian:~# date Thu Apr 26 05:21:12 EDT 2018 root@debian:~#
2、在5天后的上午5点执行任务
root@debian:~# at 5am+5days warning: commands will be executed using /bin/sh at> ls /etc/passwd > /home/guest/passwd_5 at> ls /etc/group > /home/guest/group_5 at> <EOT> job 10 at Tue May 1 05:00:00 2018 root@debian:~# root@debian:~# date Thu Apr 26 05:18:51 EDT 2018 root@debian:~#
计划任务设定后,在没有执行之前我们可以用atq (q:queue 队列)命令来查看系统没有执行工作任务:
root@debian:~# atq 8 Thu Apr 26 10:00:00 2018 a root 9 Fri Apr 27 10:00:00 2018 a root 11 Fri Apr 27 10:00:00 2018 a root 6 Thu Apr 26 10:00:00 2018 a root 10 Tue May 1 05:00:00 2018 a root root@debian:~#
删除任务:atrm number
root@debian:~# atq 8 Thu Apr 26 10:00:00 2018 a root 9 Fri Apr 27 10:00:00 2018 a root 11 Fri Apr 27 10:00:00 2018 a root 6 Thu Apr 26 10:00:00 2018 a root 10 Tue May 1 05:00:00 2018 a root root@debian:~# root@debian:~# atrm 11 root@debian:~# atq 8 Thu Apr 26 10:00:00 2018 a root 9 Fri Apr 27 10:00:00 2018 a root 6 Thu Apr 26 10:00:00 2018 a root 10 Tue May 1 05:00:00 2018 a root root@debian:~#
查看已经设置的任务内容: at -c number (number为队列号)
如: at -c 8
m4a=00\;36:\*.mid=00\;36:\*.midi=00\;36:\*.mka=00\;36:\*.mp3=00\;36:\*.mpc=00\;3 6:\*.ogg=00\;36:\*.ra=00\;36:\*.wav=00\;36:\*.oga=00\;36:\*.opus=00\;36:\*.spx=0 0\;36:\*.xspf=00\;36:; export LS_COLORS SSH_CONNECTION=192.168.9.132\ 65170\ 192.168.9.119\ 22; export SSH_CONNECTION LANG=en_US.UTF-8; export LANG OLDPWD=/lib/modules/4.9.0-6-686-pae; export OLDPWD XDG_SESSION_ID=3; export XDG_SESSION_ID USER=root; export USER PWD=/root; export PWD HOME=/root; export HOME SSH_CLIENT=192.168.9.132\ 65170\ 22; export SSH_CLIENT SSH_TTY=/dev/pts/0; export SSH_TTY MAIL=/var/mail/root; export MAIL SHLVL=2; export SHLVL LOGNAME=root; export LOGNAME XDG_RUNTIME_DIR=/run/user/1000; export XDG_RUNTIME_DIR PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; export PATH cd /root || { echo 'Execution directory inaccessible' >&2 exit 1 } cat /etc/passwd > /tmp/passwd_file root@debian:~# at -c 8 > /tmp/at_queue_8 root@debian:~# root@debian:~# root@debian:~# clear root@debian:~# less /tmp/at_queue_8 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:\*.ogv=01\;35:\*.ogx=01\;35:\*.aac=00\;36:\*.au=00\;36:\*.flac=00\;36:\*.m4a=00\;36:\*.mid=00\;36:\*.midi=00\;36:\*.mka=00\;36:\*.mp3=00\;36:\*.mpc=00\;36:\*.ogg=00\;36:\*.ra=00\;36:\*.wav=00\;36:\*.oga=00\;36:\*.opus=00\;36:\*.spx=00\;36:\*.xspf=00\;36:; export LS_COLORS SSH_CONNECTION=192.168.9.132\ 65170\ 192.168.9.119\ 22; export SSH_CONNECTION LANG=en_US.UTF-8; export LANG OLDPWD=/lib/modules/4.9.0-6-686-pae; export OLDPWD XDG_SESSION_ID=3; export XDG_SESSION_ID USER=root; export USER PWD=/root; export PWD HOME=/root; export HOME SSH_CLIENT=192.168.9.132\ 65170\ 22; export SSH_CLIENT SSH_TTY=/dev/pts/0; export SSH_TTY MAIL=/var/mail/root; export MAIL SHLVL=2; export SHLVL LOGNAME=root; export LOGNAME XDG_RUNTIME_DIR=/run/user/1000; export XDG_RUNTIME_DIR PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; export PATH cd /root || { echo 'Execution directory inaccessible' >&2 exit 1 } cat /etc/passwd > /tmp/passwd_file
------------------------------------------------------------------------------------
cron命令
root@debian:~# date Thu Apr 26 05:18:51 EDT 2018