Shell
计划任务
-
一次性计划任务 使用at命令,
- 设定格式:at [HH:MM] [yyyy-mm-dd] ,若没有指定年月日的,默认是当天的
- at 23:00 计划在23点执行命令
at> echo hello > /tmp/hello.txt
at> <EOT> 这是按ctrl+d 结束的 - 注意:1、若执行的命令不是内部命令,建议加上命令的完整路径,若是执行shell脚本,使用source命令来引入系统的环境变量
2、at 命令执行时没有标准输出,所以最好加一个重定向,将结果输出到指定文件 - 查询 at 任务表:atq 或 at -l
- 删除任务表: atrm 编号
- at计划任务存放的路径:/var/spool/at/a 开头的文件,任务执行完毕,文件消失。
-
周期性计划任务
- 使用 corn 命令
- 编辑周期性任务:crontab -e
- 查看现有的计划任务:crontab -l
- 删除计划任务:crontab -r
- 编辑格式:分钟 小时 日期 月份 星期 执行的命令 需要注意命令的路径问题,crontab 只会在/sbin、/bin、/usr/sbin、/usr/bin下查找命令,如果命令不在这些目录中,应该要使用绝对路径。
- 10 10 2 1 1-3 /usr/bin/date >> /tmp/date.txt
- 每个用户都一个自己的周期性计划任务,使用以下方式查看:ls /var/spool/cron/
- cron服务的日志文件:/var/log/cron
-
计划任务加锁 flock
- anacontab 延时计划任务
- 存放的路径: /etc/cron.d/ 下面有一个 ohourly 文件
- flock 锁文件
- flock -xn "/tmp.f.lock" -c "/root/a.sh"
- anacontab 延时计划任务