Crontab,作为Unix/Linux系统中常用的定时执行工具,能够实现无需人工干预即可运行指定任务,常用于自动化操作,如自动更新SSL证书、定时备份、重启服务器或服务等。掌握Crontab命令的基本语法对于VPS或服务器的自动化管理至关重要。
### Crontab查看、编辑与重启操作
1. **查看定时执行任务列表**
使用`crontab -l`命令查看当前用户的所有定时任务。
2. **编辑定时执行任务**
通过`crontab -e`命令打开Crontab编辑器,添加或修改任务。
3. **删除定时任务**
使用`crontab -r`命令删除当前用户的所有定时任务。
4. **Crontab相关命令**
执行服务操作:启动`sudo service crond start`、关闭`sudo service crond stop`、重启`sudo service crond restart`或重新载入配置`sudo service crond reload`。查看服务状态`sudo service crond status`。
### Crontab基本格式与语法
Crontab时间表达式遵循格式`* * * * * command`,分别表示分、时、日、月、周,每个字段支持多种操作符:
*:代表所有数字。
/:表示每隔n个数字。
-:用于指定一个时间范围。
,:用于分割多个时间点。
### 20个经典Crontab应用实例
以`/root/ wzfou.com/backup.sh`为例,替换为实际脚本路径,演示不同时间设定:
**每1分钟执行一次**:`* * * * * /root/ wzfou.com/backup.sh`
**每小时的第3和第15分钟执行一次**:`3,15 * * * * /root/ wzfou.com/backup.sh`
**每天的8点到11点的第3和第15分钟执行一次**:`3,15 8-11 * * * /root/ wzfou.com/backup.sh`
**每隔两天的上午8点到11点的第3和第15分钟执行一次**:`3,15 8-11 */2 * * /root/ wzfou.com/backup.sh`
**每周一上午8点到11点的第3和第15分钟执行一次**:`3,15 8-11 * * 1 /root/ wzfou.com/backup.sh`
**每晚的21:30执行一次**:`30 21 * * * /root/ wzfou.com/backup.sh`
**每月1、10、22日的4 : 45执行一次**:`45 4 1,10,22 * * /root/ wzfou.com/backup.sh`
**每周六、周日的1 : 10执行一次**:`10 1 * * 6,0 /root/ wzfou.com/backup.sh`
**每天18 : 00至23 : 00之间每隔30分钟执行一次**:`0,30 18-23 * * * /root/ wzfou.com/backup.sh`
**每星期六的晚上23: 00 pm执行一次**:`0 23 * * 6 /root/ wzfou.com/backup.sh`
**每一小时执行一次**:`* */1 * * * /root/ wzfou.com/backup.sh`
**每天晚上23点到第二天7点之间,每隔一小时执行一次**:`* 23-7/1 * * * /root/ wzfou.com/backup.sh`
**每个星期的第一天执行一次**:`@weekly /root/ wzfou.com/backup.sh`
**每个月的15日执行一次**:`0 11 15 * * /root/ wzfou.com/backup.sh`
**每个月的第一天执行一次**:`@monthly /root/ wzfou.com/backup.sh`
**在指定的月份执行一次**:`0 0 * jan,apr,jun * /root/ wzfou.com/backup.sh`
**重启后执行一次**:`@reboot /root/ wzfou.com/backup.sh`
**定时任务执行后发一封邮件通知**:`MAILTO=”raj” 1 1 * * * /root/ wzfou.com/backup.sh`
**指定shell**:`SHELL=/bin/sh 1 1 * * * /root/ wzfou.com/backup.sh`
**指定环境变量**:`PATH=/sbin:/bin:/usr/sbin:/usr/bin 1 1 * * * /root/ wzfou.com/backup.sh`
### Crontab可能存在的问题及解决办法
**不立即生效**:新建定时任务后需等待2分钟,或重启Crontab。
**不执行**:确保脚本路径正确,更新系统时间后重启Crontab。如手动执行正常,可能因环境变量问题,尝试直接引入环境变量。
**无权限执行**:执行Crontab操作需root权限,或编辑特定用户crontab文件时需使用`crontab -u username -e`命令。
**执行后通知**:在脚本命令后添加`> /dev/null 2>&1`以禁止通知。
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。