linux定时任务--crontab

老实说,如果你经常使用 crontab,你会发现它是一个非常有用的工具。
我曾经在 CentOS 6 上运行一个数据备份脚本,该脚本每周五凌晨 2 点自动运行。
感觉很踏实。
但说实话,当时的领域一开始很难理解。

以该模式为例。
分钟(小时(天)月(周(顺序)))))))当我第一次阅读该文档时,我几乎看不懂。
例如,如果我有一个任务需要每天凌晨 1 点运行,我会将其写为 0 1 /path/to/script.sh。
这里分钟是0;时钟为1 ,其他五个字段使用星号表示“所有值”。
但有趣的是,如果你犯了一个逗号错误,例如 0,1 1 ,那么 0:00 AM 和 1 :00 AM 的执行就会出现问题。

我记得编写脚本并希望它每 5 分钟运行一次。
/5 直接写。
结果导致服务器长时间卡住。
在这种格式中,/5 分钟字段实际上是 0 5 1 0 1 5 2 0 2 5 3 0 3 5 4 0 4 5 5 0 5 0 分钟的完整列表。
我不明白为什么会卡住,但查了手册后我发现了。

我对不同 CentOS 版本之间的操作差异特别感兴趣。
在CentOS 6 上我经常使用service crond restart来重新启动服务。
但切换到 CentOS 7 后,当时我感到困惑并重新启动了 systemctl后来才知道,这是有必要的。
crond.service。
差异是巨大的。
一个使用service,另一个使用systemctl。
我真想扇她一巴掌。
但最郁闷的时候是在CentOS 7 上使用crontab的时候。
-e 我直接用nano编辑器打开,但是用vim就可以了。
当我第一次点击wq保存时,编辑器崩溃了。
幸运的是,我很快就做出了反应,使用 Ctrl+z 并使用 vim 重新启动。
后来我记得CentOS 7 必须使用crontab -e并按wq保存,CentOS 6 必须使用crontab。
-e 然后按 Ctrl+x。
这个细节真的很容易记住。

现在我可以使用 crontab 创建肌肉记忆。
例如,我是给定月份的 1 号;如果你想在第3 天和第5 天执行一个命令。
它将被写为 0 9 1 ,3 ,5 /path/to/command,其中 min 为 0;当时是九点钟。
这一天是1 、3 、5 在其他领域,星星的使用尤其实用;但注意不要写成1 、3 、5 这样的。
注意,否则会出现错误。

还有我常用的/1 0这相当于每 1 0 分钟跑一次。
这对于监控脚本非常有用。
但请记住不要将其与星星混淆。
例如,写0-2 3 /2 是错误的。
应该是/2 这些细节我想警告你,因为我经历过。

说实话,crontab很简单,但是组合时隙确实会带来很多问题。
现在我们先用它来编写测试文件。
-l 检查是否有任何冲突;然后正式开始。
一旦养成了这个习惯,你就会感觉很舒服。

使用 cron 定时任务的小技巧 | Linux 中国

cron是Linux/Unix系统的任务调度工具,用于自动执行备份、清理等常规任务。
例如,每天凌晨 1 点运行备份脚本。

其中存在问题:忘记设置正确的时间将导致任务无法完成。
不要相信:不要依赖 cron 来执行涉及大量 I/O 或需要交互的任务。

不要这样做:不要使用通配符“”覆盖整个时间范围,因为这可能会导致任务意外执行。

有用的提醒:定期检查 crontab 文件以确保任务按预期运行。

在 Linux 中使用 Bash 脚本删除早于 “X” 天的文件/文件夹

上周我的朋友遇到了一个问题。
Linux 服务器磁盘空间几乎已满。
他们决定使用 Bash 脚本自动清理旧文件和文件夹。
脚本功能非常全面,包括搜索、记录、删除、通知管理员等。

关键实现方案如下:使用find命令查找目标文件或文件夹,使用mtime参数过滤掉超过指定天数的文件。
删除之前,会记录要删除的项目列表,并通过邮件命令发送电子邮件通知管理员。

主要命令说明:
find /path/to/target -type d -mtime +X:查找指定路径下的目录,过滤掉修改时间超过X天的项目。

find /path/to/target -type f -mtime +X:查找指定路径下的文件,并过滤掉修改时间超过X天的文件。

-exec rm -rf {};:对find命令找到的每个文件或文件夹执行删除操作。

我还阅读了脚本示例,它非常详细。
例如,删除旧文件夹的脚本为:
bash !/bin/bash LOG_DIR =“/ var /日志/应用程序” DAYS_THRESHOLD=1 0 EMAIL="[电子邮件受保护]" TEMP_FILE =“/tmp/deleted_folders.log” 查找并记录旧文件夹 "$LOG_DIR" -type d -mtime +$DAYS_THRESHOLD -exec ls -ld {} > 查找“$TEMP_FILE” 删除旧文件夹 查找“$LOG_DIR” -type d -mtime +$DAYS_THRESHOLD -exec rm -rf {} ; 发送电子邮件通知 如果[-s“$TEMP_FILE”];然后 echo "已删除早于 $DAYS_THRESHOLD 天的文件夹:" |邮件-s“CleanupReport:$(日期)”“$ EMAIL”<“$ TEMP_FILE” 菲 清理临时文件 rm -f "$TEMP_FILE"
还列出了自动化部署步骤,非常方便。
授予运行脚本的权限并配置 Cron 计划任务以自动运行它们。

我们还会告知您路径和权限、安全风险、电子邮件服务配置等注意事项。
非常实用。

我朋友试过了,效果很好。
现在您的服务器的磁盘空间管理得很好,因此您不必担心突然空间不足。
看看你的服务器。
我可以使用这个脚本吗?