需求
两种场景
1. 在某个指定时间执行某项任务。(明天早上检查磁盘状态)
2. 周期性执行某项任务。(每天早上备份日志)
分析
- 让程指定时间运行某些任务,提高自己的工作效率,避免人工登录机器去运行,特别是有程序依赖时,比如说有些统计任务依赖于某些程序执行完毕,设置at命令则不用再处理;
- 机器周期性执行某些任务,用于机器维护、程序监控或数据备份及清理。
一次性任务
使用at命令,依赖于atd服务。
at工作方式
- 使用at命令,将任务写入/var/spool/at/目录内。atd服务访问该目录。
权限控制
- 如果含有/etc/at.allow文件,则只有在该文件中的用户才能使用at。
- 如果不含有/etc/at.allow文件,但含有/etc/at.deny文件,则只有不在该文件中的用户才能使用at。
- 如果不含有/etc/at.allow文件和/etc/at.deny文件,则只有root用户才能使用at。
命令 | 用途 | 示例 | 备注 |
---|---|---|---|
at now + 5 minutes[enter] … [Ctrl+D] | 创建任务 | at now + 10 minutes at> cat .vimrc > /home/work/orage at> <EOT> | |
atq | 查看任务 | 结果: 3 2017-02-06 17:36 a root | 第一列数据为任务id,第二列数据为时间,最后一列为创建者 |
atrm id | 将第id个任务删除 | atrm 3 |
周期性命令
使用crontab命令,依赖于crond服务。
crontab工作方式
- 使用crontab命令,将任务写入/var/spool/cron/目录内。cron服务问该目录。
权限控制
- 如果含有/etc/cron.allow文件,则只有在该文件中的用户才能使用crontab。
- 如果不含有/etc/cron.allow文件,但含有/etc/cron.deny文件,则只有不在该文件中的用户才能使用crontab。
- 如果不含有/etc/cron.allow文件和/etc/cron.deny文件,则只有root用户才能使用crontab。
例行任务级别
- /etc/crontab 系统级别,可配置路径和邮箱对象。
还有/etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly 四个周期性执行目录可以放置任务。 - /etc/cron.d/* 程序级别
- /var/spool/cron/* 单用户个性化
- /etc/crontab 系统级别,可配置路径和邮箱对象。
命令 | 用途 | 示例 | 备注 |
---|---|---|---|
crontab -e | 创建任务 | crontab -e | |
crontab -l | 查看任务 | crontab -l | |
crontab -r | 删除所有任务 | crontab -r | |
-u username参数 | 指定执行任务的用户 |
- crontab每行参数设定
http://linux.vbird.org/linux_basic/0430cron.php#whatiscron” title=”” />
其它
- 某项服务deamon运行状态查看/操作:/etc/init.d/deamon status/start/stop/restart
- 某项服务deamon是否预设启动设置:chkconfig daemon on/off
- 系统所有服务查看:service –status-all
总结
主要是复习下LINUX系统at和crontab两个命令,旨在于多有意识使用这两个命令提高工作效率。