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.178linux.com/100864