--- title: crontab-定时任务 date: 2018-1-14 15:16:46 tags: - linux categories: - linux --- linux下创建定时任务通常使用`crontab`命令 使用`cron表达式`来指定执行的定时规则 使用shell脚本编写需要执行的内容 > 脚本中涉及的文件路径是要写 **绝对路径** 执行`crontab -e`编辑当前用户crontab服务文件 #### cron语法 crontab的定时任务只能精确到分钟 , 而无法精确到秒 所以cron表达式只有5个值 ``` 分 小时 日 月 星期 命令 0-59 0-23 1-31 1-12 0-6 command ``` 0表示周日(也可以用英文来表示,sun表示星期天,mon表示星期一) 一般一行对应一个任务 + `*`代表任意值 + `/`代表 **每** + `-`代表连续的时间段(从xx到xx) + `,`代表不连续的时间点(xx和xx) 常见的用法举例 ``` 5 * * * * command 指定每小时的第5分钟执行一次 30 5 * * * command 指定每天的 5:30 执行 30 7 8 * * command 指定每月8号的7:30分执行 30 5 8 6 * command 指定每年的6月8日5:30执行 30 6 * * 0 command 指定每星期日的6:30执行 30 3 10,20 * * command 每月10号及20号的3:30执行 25 8-11 * * * command 每天8-11点的第25分钟执行 */15 * * * * command 每15分钟执行一次 [即每个小时的第0 15 30 45 60分钟执行] 30 6 */10 * * command 每个月中,每隔10天6:30执行一次 [即每月的1、11、21、31日的6:30执行] ``` #### 其他用法 + `crontab -l` - 列出某个用户cron服务的详细内容 + `crontab -u ` - 设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 + `crontab -r` - 删除某个用户的cron服务 #### 全局配置 cron的主配置文件是`/etc/crontab` ![crontab config](/images/linux/crontab_config.jpg) 在这个文件里面也可以配置定时任务的执行规则 这里这个PATH并不会在实际的脚本运行当中生效 如果脚本单独运行没问题 , 但是在定时任务当中出现命令找不到的情况 比如是在`/etc/profile`当中配置的环境变量 可以用下面的方式指定定时任务规则 ```bash * * * * * . /etc/profile; command ``` #### 服务相关的操作 + `serivce crond start` - 启动 + `serivce crond stop` - 停止 + `service crond restart` - 重启 + `service crond status` - 查看运行情况