【Linux杂篇】Cron是什么?利用Cron Job自动执行定时任务

Cron

Cron是一个实用程序,用于在特定的时间自动执行重复任务。在Linux中,常用 cron 服务器来完成这项工作,以下是Cron的工作原理:

如果想稍后执行特定任务一次,可以使用其他命令。但是,对于重复性任务,cron是完美的解决方案。Cron是一个守护进程,这意味着它在后台运行以执行非交互式任务。类似Windows后台进程中的服务。

守护程序始终处于空闲状态,并等待命令请求执行某项任务 – 在计算机内或从网络上的任何其他计算机执行。cron文件是一个简单的文本文件,包含在特定时间运行的命令。

默认crontab文件是/ etc / crontab,位于crontab目录/etc/cron.*/.,只有系统管理员才能编辑系统crontab文件。但是,由于类Unix操作系统支持多个用户,每个用户还可以创建自己的crontab文件并启动命令以随时执行任务,cron守护程序将检查文件并在系统后台运行该命令。

使用cron作业,可以自动执行系统维护,磁盘空间监视和备份计划。由于其性质,cron作业非常适合全天候工作的计算机 – 服务器。

请注意,虽然cron作业主要由系统管理员使用,但它对Web开发人员也非常有用。例如,要停用已过期的帐户,检查损坏的链接,甚至为目标用户发送简报都可以使用cron作业。

Cron工作的基础知识

基本上,可以使用几种不同的方法创建和编辑cron作业。在本教程中,我们想向您展示如何使用Linux Shell Prompt(终端)来完成它。

以下是cron作业可以执行的一些基本操作:

如果要编辑当前用户的crontab文件,请在终端中键入crontab -e:

它会为您提供这样的结果

在使用vi编辑器时,可以学习基本的vi命令,以确保采取正确的操作。

如果要编辑其他用户的crontab,可以键入crontab -u username -e。请记住,您只能以超级用户身份执行此操作,这意味着需要在命令之前键入:sudo su。

另一个操作允许您查看是否创建了任何crontab文件,只需键入crontab -l即可。如果没有,您将看到此结果。

此外,如果要查看其他用户的crontab文件列表,可以键入crontab -u username –l

除了解基本操作外,学习基本语法也很重要。

基本上,crontab文件由两部分组成:调度计时器和命令,这是命令的编写方式:

* * * * * / bin / sh backup.sh

***** / bin / sh backup.sh cronjob意味着它将每分钟运行一次备份。

30 18 * * * rm / home / sydtesting / tmp / *表示它每天下午6:30 从/ home / sydtesting / tmp中删除tmp文件。

如何正确编写Cron语法?

如前所述,crontab文件有五个字段 – 每个字段用星号表示 – 以确定某个任务集重复执行的日期和时间。

Minute – 运行命令的分钟,范围从0到59

Hour  – 命令将在什么时间运行,范围从0到23

Day of the month – 命令运行的月份的某一天,范围从1到31

Month – 指定命令运行的月份,范围从1到12

Day of the week – 希望命令运行的星期几,范围从0到7

除此之外,您还需要在每个crontab文件中使用正确的字符。

Asterisk (*)  – 定义所有调度参数。

Comma (,) – 保持单个命令的两个或更多执行时间。

Hyphen (-) – 确定设置单个命令的多个执行时间的时间范围。

Slash (/) – 用于在特定范围内创建预定的时间间隔。

Last (L)  – 用于确定给定月份中一周的最后一天的特定目的,例如,3L表示最后一个星期三。

Weekday (W) – 确定给定时间的最近工作日,例如,1W表示如果第1个是星期六,则命令将在星期一(第3个)运行。

Hash (#) – 用于确定星期几,后跟1到5之间的数字。例如,1#2表示第二个星期一

Question mark (?) – 留空。

11 Cron语法示例

在继续之前,请记住该命令的输出将自动发送到本地电子邮件帐户。因此,如果要停止接收这些电子邮件,可以将> / dev / null 2>&1添加到语法中,如以下示例所示:

0 5 * * * /root/backup.sh> / dev / null 2>&1
 

此外,如果要将电子邮件输出发送到特定帐户,则可以添加MAILTO,然后添加电子邮件地址,如下:

MAILTO = “myname@hostinger.com”

0 3 * * * /root/backup.sh> / dev / null 2>&1
 

更多语法示例:

0 0 * * * / bin / sh backup.s——在每天午夜执行数据库备份。

0 6,18 * * * / bin / sh backup.sh   ——在上午6点和下午6点每天执行两次数据库备份

0 * / 6 * * * /scripts/monitor.sh——每六个小时进行一次监控

* / 10 * * * * /home/user/script.sh——每10分钟为主目录中的脚本文件执行一次cron作业

0 * 20 7 * / bin / sh backup.sh——在7月20日每小时运行一次数据库备份。

0 0 * * 2 * / bin / sh——在每个星期二的零点运行数据库备份

* * * 1,2,5 * /script/script.sh——在1月,2月和5月运行命令

10-59 / 5 5 * * * /home/user/script.sh     ——在凌晨5点开始每隔5分钟运行一次命令,从早上5:10开始

0 8 1 * / 3 * /home/user/script.sh——每季度在第一天早上8点运行一个命令

* * * * * /scripts/script.sh; /scripts/scrit2.sh——在单个cron作业上设置多个任务的计划

@reboot /scripts/script.sh——每次启动系统时执行某项任务

结论

设置自动计划的任务不仅实用,而且还可以防止错过按时采取的假设行动。Cron Job是一种管理此类任务的好方法,无论是作为系统管理员还是像Web开发人员这样的职业,您需要做的就是使用正确的命令并选择正确的时间。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在服务器上定时执行Python自动化脚本,有几种方法可以实现。首先,你可以使用操作系统的定时任务功能,如Crontab(针对Linux系统)或Task Scheduler(针对Windows系统)。这些工具允许你设置特定的时间和频率来运行脚本。 另一种方法是使用Python的定时任务框架,如APScheduler。APScheduler是一个基于Quartz的Python定时任务框架,它提供了多种定时任务的方式,包括基于日期、固定时间间隔和crontab类型的任务。你可以使用APScheduler在Python代码中创建定时任务,并在服务器执行。 要使用APScheduler,你需要先安装它。可以使用pip工具执行以下命令来安装APScheduler: pip install apscheduler 安装完成后,你可以在你的Python脚本中导入APScheduler,并使用它的API来创建定时任务。例如,你可以使用APScheduler的CronTrigger来设置一个crontab类型的定时任务。以下是一个示例代码: from apscheduler.schedulers.blocking import BlockingScheduler def job(): # 这里是你要执行自动化测试脚本的代码 pass scheduler = BlockingScheduler() # 设置定时任务,每天早上8点执行 scheduler.add_job(job, 'cron', hour='8') # 开始调度 scheduler.start() 在这个例子中,我们创建了一个定时任务,使用cron风格的表达式来指定每天早上8点执行。你可以根据自己的需求修改cron表达式来设置不同的执行时间。 通过这种方式,你就可以使用APScheduler在服务器上定时执行Python自动化脚本了。如果你想了解更多关于APScheduler的用法,可以参考官方文档或其他教程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [linux系统下部署python自动化程序并配置Jenkins定时执行](https://blog.csdn.net/IceKing12138/article/details/123904549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [8种用Python实现定时执行任务的方案,一定有你用得到的](https://blog.csdn.net/u012767761/article/details/127024882)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdnGuoYuying

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值