Linux如何配置定时任务?_Linuxcron与at命令使用技巧

说白了,Linux定时任务配置很大程度上依赖于cron和at。
这两个命令就像自动管理的瑞士军刀。
一种适合重复性任务,另一种适合一次性任务。
其实很简单,cron就像一个自动时钟,而at就像一个定时闹钟。

我们先来说说最重要的事情。
cron的应用非常广泛,比如我们常用的日常备份。
去年我们公司使用cron定期备份重要数据,大约3 000条数据,每天凌晨2 点3 0分自动备份,避免了手动备份的繁琐和风险。
还有一点就是cron crontab的配置文件是关键。
编辑就是配置计划任务。
我记得一开始我认为这很简单,但后来我发现,如果设置不正确,任务可能会失败,例如环境变量不一致或无向输出。

另一个重要的细节是修复 cron 任务错误。
比如环境变量不一致,可能会找不到命令;输出未重定向,这可能会因邮件服务问题或输出过多而导致错误;权限不足可能会导致脚本或文件权限问题。
解决这些问题的方法也很简单,比如在 crontab 的开头显式设置 PATH、将输出重定向到日志文件、确保脚本具有执行权限等。

至于 at 命令,似乎是专门为一次性任务设计的。
例如,我们公司需要在会议结束后发送报告,我们可以使用at来设置并在会议结束后的特定时间自动发送报告。
很多人没有注意到这一点,但其实at的时间格式非常灵活,可以是HH:MM、now+Nunits或者自然语言。

最后,根据任务性质、权限要求和调度准确性选择合适的工具,可以有效地进行自动化的Linux管理。
对于个人任务,首先使用 crontab -e,对于系统维护任务,使用 cron 目录,对于应用程序任务,使用 /etc/cron.d/,对于全局根任务,谨慎使用 /etc/crontab。
我认为值得一试,因为它可以让您更有效地管理您的 Linux 服务器。

如何在Linux中定时执行任务?使用cron命令设置计划任务自动化

我记得有一次,我帮助一个朋友使用 crontab 创建一个自动备份计划。
他有每天下午更新大量工作数据的习惯。
于是我设置了一个计划任务,下午两点自动运行一个脚本,把他的数据备份到另一台服务器上。
这个脚本非常简单,它只是复制文件夹并将其压缩为 zip 文件。

时间回到 2 01 9 年 1 2 月的一个下午,我坐在朋友的办公桌前,屏幕上显示着 crontab 编辑器界面。
我输入了以下命令:
0 1 4 /path/to/backup_script.sh
该命令的含义是每天下午两点运行/path/to/backup_script.sh脚本。
还记得当时我专门检查了脚本中使用的绝对路径,因为有朋友告诉我,之前备份失败是因为使用了相对路径。

设置完毕后,我请朋友测试脚本以确认一切正常。
然后我告诉他,他的数据会在每天下午两点自动备份。
我的朋友很高兴。
他觉得这个计划好的任务给他省去了很多麻烦。

等等,我突然想到可以设置一个任务,每天早上检查一下预订是否成功。
如果失败,请发送电子邮件告知。
但是,这涉及电子邮件设置和脚本编写,可能需要一些时间。

Linux crontab如何设置定时任务

让我们直接进入实际的内容:使用 Crontab 只需这几个步骤即可完成任务。

1 .首先打开编辑器 在终端中输入 crontab -e 系统会询问您正在使用哪个编辑器。
只需选择一些熟悉的东西,例如 Nano
2 了解格式。
订单 第一分钟是 (0-5 9 ) 第二个小时是(0-2 3 ) 第三天是(1 -3 1 ) 第四个月是(1 -1 2 ) 第五个是星期几(0-6 ,星期日是 0 或 7 )
示例: 每天 6 :00 运行脚本: 0 6 /path/to/script.sh
每周一 8 :3 0 结束进程: 3 0 8 1 /usr/bin/kill_process.sh
3 保存任务 在 Nano 中按 Ctrl+X,选择 Y 保存,按 Enter 退出。
按 vi:wq 保存并退出
4 .查看工作 使用 crontab -l 查看您添加的内容
5 脚本必须有权限 chmod +x /path/to/script.sh
6 常见问题解答 不工作?
什么是正确的道路?
脚本有执行权限吗?
查看系统日志时哪里出错了:tail -f /var/log/syslog | grep cron
找不到环境变量? Crontab 的内置变量最少。
只需在脚本中写入完整路径即可。
或者脚本开头的source下的环境文件:source ~/.bashrc
时间错了吗? 尝试使用网络工具(CrontabGuru) 不要向后写 1 -1 2 个月和 0-6 周
7 高级用法
每 1 0 分钟运行一次:/1 0 命令
每小时 1 和 1 5 分钟:1 ,1 5 命令
每周一到周五:1 -5 条命令
系统功能要以root权限更改/etc/crontab
你自己明白吗?