一、at命令
1.at服务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
service atd start //启动服务
service atd stop //关闭服务
service atd restart //重启服务
service atd reload //重新载入配置
service atd status //查看服务状态
2.at在配置文件:
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。
3.参数详解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job …
atq [-V] [-q x]
atrm [-V] job …
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c… z 以及 A, B, … Z 共 52 个
-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定
at命令执行流程
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
AT Time中的时间表示方法
———————————————————————–
时间 | 命令 | 解释 |
---|---|---|
Minute | at now + 5 minutes | 任务在5分钟后运行 |
Hour | at now + 1 hour | 任务在1小时后运行 |
Days | at now + 3 days | 任务在3天后运行 |
Weeks | at now + 2 weeks | 任务在两周后运行 |
Fixed | at midnight | 任务在午夜运行 |
Fixed | at 10:30pm | 任务在晚上10点30分 |
Fixed | at 23:59 12/31/2018 | 任务在2018年12月31号23点59分 |
4.使用示例:
[root@foundation79 ~]# at 16:00 在16:00时执行
at> touch /mnt/file{1..3 }
at> <EOT>
job 1 at Fri Apr 27 16:00:00 2018
[root@foundation79 ~]# at -l 查看定时任务
1 Fri Apr 27 16:00:00 2018 a root
[root@localhost spool]# at -l 2 后面添加任务号查询具体定时任务
2 Tue May 22 16:00:00 2018 a root
查看2号任务详细信息(脚本)
[root@localhost ~]# at -c 2 #或者直接在/var/spool/at/下查看生成定时文件内容
#!/bin/sh
# atrun uid=0 gid=0
# mail root 0
umask 22
LC_PAPER=en_US.utf8; export LC_PAPER
XDG_SESSION_ID=3; export XDG_SESSION_ID
HOSTNAME=localhost; export HOSTNAME
LC_MONETARY=en_US.utf8; export LC_MONETARY
SHELL=/bin/bash; export SHELL
HISTSIZE=1000; export HISTSIZE
SSH_CLIENT=172.25.254.79\ 37931\ 22; export SSH_CLIENT
LC_NUMERIC=en_US.utf8; export LC_NUMERIC
SSH_TTY=/dev/pts/0; export SSH_TTY
USER=root; export USER
LS_COLORS=rs=0:di=38\;5\;27:ln=38\;5\;51:mh=44\;38\;5\;15: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=05\;48\;5\;232\;38\;5\;15: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\;34:\*.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:\*.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:\*.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:\*.jpg=38\;5\;13:\*.jpeg=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:\*.axv=38\;5\;13:\*.anx=38\;5\;13:\*.ogv=38\;5\;13:\*.ogx=38\;5\;13:\*.aac=38\;5\;45:\*.au=38\;5\;45:\*.flac=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:\*.axa=38\;5\;45:\*.oga=38\;5\;45:\*.spx=38\;5\;45:\*.xspf=38\;5\;45:; 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
XMODIFIERS=@im=ibus; export XMODIFIERS
LANG=en_US.utf8; export LANG
LC_MEASUREMENT=en_US.utf8; export LC_MEASUREMENT
HISTCONTROL=ignoredups; export HISTCONTROL
SHLVL=1; export SHLVL
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
SSH_CONNECTION=172.25.254.79\ 37931\ 172.25.254.141\ 22; export SSH_CONNECTION
LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
LC_TIME=en_US.utf8; export LC_TIME
cd /root || {
echo 'Execution directory inaccessible' >&2
exit 1
}
${SHELL:-/bin/sh} << 'marcinDELIMITER0cab33fa' touch /mnt/Sophie marcinDELIMITER0cab33fa
删除定时任务:
[root@localhost at]# atq
2 Tue May 22 16:00:00 2018 a root
3 Wed May 23 00:00:00 2018 a root
[root@localhost at]# atrm 2
[root@localhost at]# atq
3 Wed May 23 00:00:00 2018 a root
监控生成文件:
[root@foundation79 ~]watch -n 1 ls /mnt 监控桌面文件显示情况在16:00时显示文件
at执行权限的黑白名单
黑名单:
在/etc/at.deny 文件中添加需要拒绝的用户
[root@localhost ~]# echo "student" > /etc/at.deny
[root@localhost at]# su - student
Last login: Thu May 11 20:23:54 EDT 2017 on pts/0
[student@localhost ~]$ at now+6mins
You do not have permission to use at.
白名单(优先级高于黑名单):
[root@localhost ~]# echo "student" > /etc/at.allow
[root@localhost ~]# su - student
Last login: Tue May 22 00:11:27 EDT 2018 on pts/0
[student@localhost ~]$
[student@localhost ~]$ at midnight
at> boot
at> <EOT>
job 4 at Wed May 23 00:00:00 2018
二、crontab定时
1.编写定时文件
[root@foundation79 init.d]# crontab -u root -e
* * * * * touch /mnt/file{1..3} #每分钟执行一次 |
编写格式
分钟 小时 天 月 周
/2 * * * 命令 #每分钟执行两次
*/2 08-15 1,25 3-6 5 表示3到6月每周五和每月的1号和25号,8点到15点,每分钟执行2次
查看定时任务crontab -u root -l
[root@foundation79 init.d]# crontab -u root -l
* * * * * touch /mnt/file{1..3} |
删除所有定时指令
[root@foundation79 init.d]# crontab -u root -r
[root@foundation79 init.d]# crontab -u root -l
no crontab for root
2.在文件中进行配置
[root@foundation79 ~]# vim /etc/cron.d/westos
* * * * * root touch /mnt/test{1..5} |
黑名单:
[root@localhost ~]# echo "student" > /etc/cron.deny
[root@localhost ~]# su - student
Last login: Tue May 22 00:18:21 EDT 2018 on pts/0
[student@localhost ~]$ crontab -e
You (student) are not allowed to use this program (crontab)
See crontab(1) for more information
白名单:
[root@localhost ~]# echo "student" >> /etc/cron.allow
[root@localhost ~]# su - student
Last login: Tue May 22 00:27:38 EDT 2018 on pts/0
[student@localhost ~]$ crontab -e
no crontab for student - using an empty one