前言
Linux配置定时任务,大家都知道使用crontab这个系统功能,但有时候我们需要区分用户执行。本文详细介绍两种配置方式的区别和使用场景。
方法1:crontab -e(用户级)
使用命令 crontab -e 然后直接编辑定时脚本。
这样执行以后,属于用户自定义的,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本。
示例:
[root@localhost cron.d]# cd /var/spool/cron[root@localhost cron]# ll总用量 4-rw-------. 1 root root 52 12月 9 10:58 root[root@localhost cron]# pwd/var/spool/cron[root@localhost cron]# cat root30 03 * * * /root/automysqlbackup.sh方法2:vi /etc/crontab(系统级)
使用命令 vi /etc/crontab 编辑定时脚本。
示例:
[root@localhost ~]# cat /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts30 * * * * root /usr/sbin/ntpdate 210.72.145.4401 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly*/1 * * * * root run-parts /opt/openoffice.org3/program/start.sh############################################30 4 * * * root /usr/bin/rsync -vzrtopg --progress --delete [email protected]::resource /hyy/bak/resource30 4 * * * root /usr/bin/rsync -vzrtopg --progress --delete [email protected]::log /hyy/bak/log############################################两者区别总结
| 对比项 | crontab -e | /etc/crontab |
|---|---|---|
| 配置级别 | 用户级 | 系统级 |
| 存储位置 | /var/spool/cron/用户名 | /etc/crontab |
| 是否需要指定用户 | 不需要,执行当前用户 | 必须指定用户(如root) |
| 语法格式 | 分 时 日 月 周 命令 | 分 时 日 月 周 用户 命令 |
| 语法检查 | 系统自动检查语法 | 不会自动检查 |
| 适用场景 | 个人用户的定时任务 | 系统服务级别的定时任务 |
使用建议
- 系统级配置:我们需要直接配置 /etc/crontab
- 个人级配置:一般还是建议大家使用 crontab -e,这样系统也会帮着检查我们配置的脚本语法
常见问题
crontab 没有立即生效?
添加 crontab 后,一分钟之内就会生效。如果没生效,可以通过重启 crond 服务刷新配置。
crontab执行报错怎么办?
推荐在 crontab 中使用绝对路径,并命令测试脚本是可以正常执行的。

发表评论 取消回复