如何配置Linux定时任务 crontab定时执行脚本指南

直接说,crontab就是Linux定时任务神器。

编辑任务用crontab -e,选个编辑器比如nano。
一行就是一个任务,格式就这五列:分 时 日 月 周 命令。
星号代表随便啥值。
比如02 /path/to/script.sh,每天凌晨2 点跑脚本。

保存后自动生效。
用crontab -l看任务列表。
注意脚本得有执行权限,chmod +x /path/to/script.sh。

看日志超重要。
Debian/Ubuntu在/var/log/syslog或/var/log/cron.log,CentOS在/var/log/cron。
用grep CRON /var/log/syslog过滤。
想自己存日志,任务里加>/path/to/log.txt 2 >&1 就行。

环境变量别忘。
任务执行时环境跟普通shell不一样。
在crontab开头加SHELL=/bin/bash和PATH=/usr/local/bin:/usr/bin。
别整.bashrc,容易出问题。
最好在脚本里自己export需要的变量。

跑Python脚本?确保/usr/bin/python3 路径对。
任务里写/3 /usr/bin/python3 /path/to/script.py,凌晨3 点执行。
脚本第一行得是!/usr/bin/python3 ,还得加执行权限。

第三方库?用pip install --user 装在用户目录,然后把用户目录加到PATH。
Python脚本里加日志输出,调试方便。

任务失败咋办?脚本路径对不对?权限有吗?环境变量设了吗?网络稳不?脚本里加错误处理。
日志好好看。
定期检查日志。
有Monit或Healthchecks.io能自动提醒你。

你自己看。

linux定时任务--crontab

crontab这玩意儿啊,Linux系统里头用得挺多,就是定时干事儿。
指定个时间,到点就自动跑命令或者脚本。
挺方便的。

基本命令啊,有这么几个:
-u,指定用户干啥,不写的话,默认就是你当前这个用户。

-l,看看某个人都定了啥任务。

-e,自己动手丰衣足食,去改任务。

-r,任务不想干了,删掉。

CentOS6 那会儿操作: 想关定时任务,输入:service crond stop 想开,输入:service crond start 想重启,输入:service crond restart
CentOS7 呢,稍微有点不一样: 先看看cron任务是不是开了:systemctl is-enabled crond.service (要是显示enabled,说明开了;要是disabled,说明没开) 想关自启动,输入:systemctldisable crond.service 想开自启动,输入:systemctlenable crond.service 看看cron服务现在啥状态:systemctl status crond.service 想让它跑起来,输入:systemctl start crond.service 想让它停下,输入:systemctl stop crond.service 想重启,输入:systemctl restart crond.service 想让它重新读下配置,不重启也行,输入:systemctl reload crond.service
编辑定时任务啊,这个比较关键。
你建立的crontab文件里,一行就是一个任务。
一行里头有六个字段,前五个是时间定规矩,最后一个是要干啥。
格式是这样的:minute hour day month week command
minute:分钟,0到5 9 随便选。

hour:小时,0到2 3 随便选。

day:哪天,1 到3 1 随便选。

month:月份,1 到1 2 随便选。

week:星期几,0到6 随便选,0就是星期天。

command:要干啥,系统命令或者你自己写的脚本都行。

前五个时间段,能用的特殊符号有: :全都要,比如month字段写个,就表示每个月都干。
,:列举几个,比如“1 ,2 ,5 ,7 ,8 ,9 ”,就这些时间干。
-:表示个范围,比如“2 -6 ”,就是2 到6 这些数字。
/:表示间隔,比如“0-2 3 /2 ”,就是每隔两小时干一次。
/也能和一起用,比如/1 0,用在minute字段,就是每十分钟干一次。

说实话,一开始看这些符号的时候,我也有点懵,后来多试几回就明白差不多了。

linux如何设置定时任务?linux中cron怎么使用?

Linux中设置cron定时任务,直接说干货:
1 . 用crontab编辑定时任务,格式:分钟 小时 日 月 星期 要执行的命令。
2 . 时间字段范围:分钟0-5 9 ,小时0-2 3 ,日1 -3 1 ,月1 -1 2 ,星期0-6 (0为周日)。
3 . 特殊符号:代表所有值,,分隔多个值,-表示范围,/n每隔n单位执行。
4 . 每天凌晨1 点执行:01 command。
5 . 每周一早上7 点执行:07 1 command。
6 . 每小时执行一次:0 command。
7 . 每1 0分钟执行一次:/1 0 command。
8 . 工作日中午1 2 点执行:01 2 1 -5 command。
9 . 编辑任务:crontab -e。
1 0. 查看任务:crontab -l。
1 1 . 删除所有任务:crontab -r。
1 2 . 注意环境变量问题,脚本开头显式设置或crontab中定义。
1 3 . 输出重定向到日志文件:命令 > 日志文件 2 >&1 1 4 . 需要root权限的任务用sudo crontab -e。
1 5 . 脚本和命令用绝对路径。
1 6 . 查看cron日志:grep CRON /var/log/syslog。
1 7 . 手动测试命令,确保脚本正确执行。

就这么干,别绕弯。