linux下例行任务执行:
at:交互式指定命令执行,执行结果发送邮件
格式: at HH::MM 时下次到达HH::MM时运行程序
at now+ #[minutes|hours|days|weeks]
at [noon|midnight|teatime]
at month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)
atq,at -l 查看at执行队列
atrm,at -d 删除at队列中指定任务
at -f file 读取file作为命令文件
batch 自动在系统资源空闲时执行
at命令通过Ctrl+d提交后台执行,执行结果发送给root用户邮件
用户能否执行at命令需查看/etc/at.allow,查看是否允许该用户执行,若无该文件则查看/etc/at.deny查看是否阻止该文件执行
mail:发送邮件
mail USERNAME[@HOSTNAME]
-s “SUBJECT”指定邮件主题
[root@localhost ~]# echo"Hello world" | mail -s "test mail 1" admin
crontab:
crontab依赖于后台服务 service crond status
cron配置文件:
系统cron:/etc/crontab
用户cron:/var/spool/cron/USERNAME
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# 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
定义命令应使用绝对路径
*表示不受限制 */# 每#时间一次
*/7 * * * * 并不能做到精确7分钟一次,只能通过脚本控制420s一次来实现
* * * * 1-5 周一到周五执行
* * * * 2,4 每周24执行
结果发送给相关用户邮件,不显示邮件可使用输出重定向解决
Command> /dev/null
用户crontab 命令:
-l 列出已经定义好的所有任务
-e 打开cron编辑器,增加或删改任务,不推荐直接使用vim
-r 移除所有任务
管理员可以 crontab �Cu admin �Ce 管理员给admin创建任务
anacron为cron补充,防止关机情况下未执行任务
facl必须文件系统启用才能使用
facl :FILEACL 将自己的文件的访问权限授予他人
查看文件facl情况:
getfacl FILE…
setfacl �Cm 目标:权限 FILE… setfacl �Cx 目标:权限 FILE 取消权限 -R递归
目标 用户 u:USERNAME
组 g:GROUPNAME
权限:rwx
启用facl后属性权限查找为属组->属主facl -> 属组->属组facl->other
Test:
2、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;
20 3 * * 1-6 /usr/bin/cp /etc/ /backup/etc-"date +%F"
3、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;
30 2 * * 7 /usr/bin/cp /etc/fstab /backup/fstab-"date +%F-%H-%M-%S"
4、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线;
0 0 * * * /usr/bin/egrep "^[S|M].*" /proc/meminfo >>/statistics/meminfo.txt
0 1 * * * /usr/bin/echo "==================" >>/statistics/meminfo.txt