linux计划任务之at和cron

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
View Code

------------------------------------------------------------------------------------

cron命令

root@debian:~# date
Thu Apr 26 05:18:51 EDT 2018

猜你喜欢

转载自www.cnblogs.com/relax1949/p/8953886.html