Linux 黑话解释:什么是定时任务 | Linux 中国

嘿嘿,我对这个东西很熟悉。
十年前,当我第一次接触 Linux 时,有一段时间我对 Crontab 感到沮丧。

记得那一年,我在上海一家小公司从事运维工作。
服务器上有一个数据库备份脚本,应该每天凌晨2 点执行。
起初,脚本非常简单,但后来我意识到,嘿,有时它不起作用。
检查了半天发现路径拼写错误,用的是相对路径。
结果某个命令找不到,挂了。
我至今还记得这个教训。

Crontab 既不难也不容易。
Core 是一个在后台运行的 cron 守护进程。
当您编写的任务时间到时,它会自动执行。

让我举个例子。
有一次,我在北京的另一家工厂,每小时必须同步一个远程文件夹。
文件夹比较大,同步时间有点长。
我用crontab写了一个任务,/usr/local/bin/sync_folder.sh。
结果同步完成后,服务器长期卡住。
后来我发现同步脚本中有一个区域没有管理好。
如果出现错误,会直接退出。
Cron 不会关心这个,并且会将脚本挂在那里。
这件事让我明白,在编写crontab任务时,最好在脚本中添加一个决定。
如果出现问题,您可以自行重启或者发送邮件提醒。

crontab 文件位于 /etc/crontab 或 /var/spool/cron/crontabs/username 等位置。
您自己的任务通常位于用户主目录中的 .crontab 中。
您可以直接使用 crontab -e 对其进行编辑。
以前写函数的时候,总是会不小心写错符号,比如 |而不是使用 ,并且任务根本没有执行。
这种情况需要逐步改变。

就语法而言,一开始我很困惑。
代表全部,用逗号分隔,水平条代表范围。
例如,如果我想早上9 点到1 1 点每半小时执行一次备份,我可以写0 9 -1 1 /1 5 /path/to/backup.sh。
就是这么简单。
为了理解这个 0 0 1 /path/to/script,我尝试了几个晚上,改了一遍又一遍的脚本,最后发现 /path/to/script 是每天凌晨 0 点执行的。

环境变化也是一个大问题。
我有一个朋友写了一个脚本,使用了某个软件,但是在执行cron时却找不到它。
后来发现是他的crontab任务中没有写入SHELL变量,或者是环境和正常登录的不一样。
您需要在脚本开头添加export PATH=/usr/local/bin:/usr/bin...。
有时这是非常困难的。
例如,如果您使用某个系统包,并且该包位于/opt/xxx/bin下,则需要确保cron进程可以找到它。

总的来说,Crontab是一个非常好用的工具,省去了很多麻烦。
但使用时必须小心。
别像我一样写了一个备份作业忘记添加路径或者以0退出,导致系统整天出问题。
你踩过的陷阱就是教训。

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

cron 设置计划任务,格式:分钟、小时、天、月、周。
要运行的命令,例如:3 0 1 /path/to/script.sh,记住环境变量和权限,使用绝对路径,并将输出重定向到日志文件。

linux定时任务(crontab)

上周 了解Linux crontab。

这个材料非常有用。
就像闹钟一样,你可以准时工作。

命令行。
crontab -e 就可以了。

格式非常简单。
分钟小时日月周自定义命令
例如,在凌晨 3 :4 5 运行脚本。
4 5 3 root /root/1 .sh
这保存在/var/spool/cron 中。

有几个目录用于存储脚本。
/etc/cron.hourly 每小时运行一次 /etc/cron.daily 每天运行 类似的事情。

有时会出现问题。
例如,“用户没有 crontab” 就是没有使命。

或者“你想再试一次吗?” 可能复制错误。

检查日志。
/var/log/cron 是 crontab。
/var/log/messages - 一般系统日志。

你可以开玩笑。
例如,每分钟跑一次。
root /root/2 .​​sh
或者仅在工作日运行它。
0 9 -1 7 1 -5 root /root/3 .sh
您还可以使用 while 循环。
但要小心不要被卡住。

忘记它吧。
由你决定。