【运维】Linux定时任务 定时执行脚本

这篇具有很好参考价值的文章主要介绍了【运维】Linux定时任务 定时执行脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【运维】Linux定时任务 定时执行脚本

在安装完成操作系统后,默认会安装 crond 服务工具,且 crond 服务默认就是自启动的。crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务。

五分钟执行一次sh脚本

进入编辑页面

crontab -e

按Insert   进行编辑

【运维】Linux定时任务 定时执行脚本

 # 每两分钟执行一次
*/2 * * * * /usr/local/start.sh

依次按 :wq 进行保存  即时生效

重启

service crond restart

#设定crond服务为开机自启动

chkconfig crond on

接下来,在介绍 crontab 命令。该命令和 at 命令类似,也是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的。而且原则也非常相似:

  • 当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高。
  • 当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令。
  • 这个规则基本和 at 命令的规则一致,同样是 /etc/cron.allow 文件比 /etc/cron.deny 文件的优先级高,Linux 系统中默认只有 /etc/cron.deny 文件。


每个用户都可以实现自己的 crontab 定时任务,只需使用这个用户身份执行“crontab -e”命令即可。当然,这个用户不能写入 /etc/cron.deny 文件。

crontab 命令的基本格式如下:

[root@localhost ~]# crontab [选项] [file]

注意,这里的 file 指的是命令文件的名字,表示将 file 作为 crontab 的任务列表文件并载入 crontab,若在命令行中未指定文件名,则此命令将接受标准输入(键盘)上键入的命令,并将它们键入 crontab。

与此同时,表 1 罗列出了此命令常用的选项及功能。
 

表 1 crontab 命令常用选项及功能
选项 功能
-u user 用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo
用户的 crontab 服务,此选项一般有 root 用户来运行。
-e 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r  从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 
-i 在删除用户的 crontab 文件时,给确认提示。


其实 crontab 定时任务非常简单,只需执行“crontab -e”命令,然后输入想要定时执行的任务即可。不过,当我们执行“crontab -e”命令时,打开的是一个空文件,而且操作方法和 Vim 是一致的。那么,这个文件的格式才是我们真正需要学习的内容。文件格式如下:

[root@localhost !]# crontab -e
#进入 crontab 编辑界面。会打开Vim编辑你的任务
* * * * * 执行的任务

这个文件中是通过 5 个“*”来确定命令或任务的执行时间的,这 5 个“*”的具体含义如表 2 所示。

表 2 crontab 时间表示
项目 含义 范围
第一个"*" 一小时当中的第几分钟(minute) 0~59
第二个"*" 一天当中的第几小时(hour) 0~23
第三个"*" 一个月当中的第几天(day) 1~31
第四个"*" 一年当中的第几个月(month) 1~12
第五个"*" 一周当中的星期几(week) 0~7(0和7都代表星期日)


在时间表示中,还有一些特殊符号需要学习,如表 3 所示。
 

表 3 时间特殊符号
特殊符号 含义
*(星号) 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号) 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠) 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线) 代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。


当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。知道了这 5 个时间字段的含义,我们多举几个时间的例子来熟悉一下时间字段,如表 4 所示。
 

表 4 crontab举例
时间 含义
45 22 ***命令 在 22 点 45 分执行命令
0 17 ** 1命令 在每周一的 17 点 0 分执行命令
0 5 1,15**命令 在每月 1 日和 15 日的凌晨 5 点 0 分执行命令
40 4 ** 1-5命令 在每周一到周五的凌晨 4 点 40 分执行命令
*/10 4 ***命令 在每天的凌晨 4 点,每隔 10 分钟执行一次命令
0 0 1,15 * 1命令 在每月 1 日和 15 日,每周一个 0 点 0 分都会执行命令,注意:星期几和几日最好不要同时出现,因为它们定义的都是天,非常容易让管理员混淆


现在我们已经对这 5 个时间字段非常熟悉了,可是在“执行的任务”字段中都可以写什么呢?既可以定时执行系统命令,也可以定时执行某个 Shell 脚本,这里举几个实际的例子。

【例 1】让系统每隔 5 分钟就向 /tmp/test 文件中写入一行“11”,验证一下系统定时任务是否会执行。

[root@localhost ~]# crontab -e
#进入编辑界面
*/5 * * * * /bin/echo "11" >> /tmp/test

这个任务在时间工作中没有任何意义,但是可以很简单地验证我们的定时任务是否可以正常执行。如果觉得每隔 5 分钟太长,那就换成“*”,让它每分钟执行一次。而且和 at 命令一样,如果我们定时执行的是系统命令,那么最好使用绝对路径。

【例 2】让系统在每周二的凌晨 5 点 05 分重启一次。

[root@localhost ~]# crontab -e
5.5 * * 2 /sbin/shutdown -r now

如果服务器的负载压力比较大,则建议每周重启一次,让系统状态归零。比如绝大多数游戏服务器每周维护一次,维护时最主要的工作就是重启,让系统状态归零。这时可以让我们的服务器自动来定时执行。

【例 3】在每月 1 日、10 日、15 日的凌晨 3 点 30 分都定时执行日志备份脚本 autobak.sh。

[root@localhost ~]# crontab -e
30.3 1,10,15 * * /root/sh/autobak.sh

这些定时任务保存之后,就可以在指定的时间执行了。我们可以使用命令来查看和删除定时任务,命令如下:

[root@localhost ~]# crontab -l
#查看root用户的crontab任务
*/5 * * * * /bin/echo "11" >> /tmp/test
5.5 * * 2 /sbin/shutdown -r now
30.3 1,10,15 * * /root/sh/autobak.sh
[root@localhost ~]# crontab -r
#删除root用户所有的定时任务。如果只想删除某个定时任务,则可以执行“crontab -e”命令进入
#编辑模式手工删除
[root@localhost ~]# crontab -l
no crontab for root
#删除后,再查询就没有root用户的定时任务了


在书写 crontab 定时任务时,需要注意以下几个事项:文章来源地址https://www.toymoban.com/news/detail-499824.html

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

到了这里,关于【运维】Linux定时任务 定时执行脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cron 定时任务,启动shell脚本,为什么没有执行

    Cron 定时任务不执行时,可能有多种原因。下面是一些常见的问题及其解决方法: Cron 服务未运行 :首先确认cron服务是否正在运行。在大多数Linux系统中,你可以使用以下命令查看cron服务的状态: Cron 表达式错误 :确保你的cron表达式是正确的。Cron表达式包括五个或六个字段

    2024年04月13日
    浏览(60)
  • Crontab(定时任务)使用: Linux-Centos7使用crontab制定定时任务,定时执行某任务

    参考:https://blog.csdn.net/m0_49605975/article/details/120701771 1.用yum命令安装Crontab 2.启动,关闭,重启 3.设置开机启动 1.设置定时任务-进入编辑模式 -和vim操作一至 2.查看定时任务列表 3.添加定时任务 样例: 添加一个定时任务,定时清空某个文件夹里面日志文件的内容 3.1 编写一个清

    2024年02月01日
    浏览(75)
  • 【Linux 服务器运维】定时任务 crontab 详解 | 文末送书

    本文思维导图概述的主要内容: 1.1 什么是 crontab Crontab 是一个在 Unix 和 Linux 操作系统上 用于定时执行任务 的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写, cron 指的是 Unix 系统中的一个后台进程,它

    2024年02月08日
    浏览(92)
  • linux-crontab每分钟定时执行/定时任务调度

    本文讲解linux上如何调用定时任务,如每分钟打印日志,每日24点执行日志切割脚本等等。 在Linux系统中,crontab命令是一个用于执行定时任务的命令, crond(crontab)是系统默认自带的定时服务 。我们可以通过编辑crontab文件来设置定时任务,使系统可以自动按照设定的时间和频率

    2024年02月06日
    浏览(58)
  • Linux下定时执行shell脚本

    vi test.sh 录入要执行的命令  保存退出,并且对脚本进行授权  :wq chmod 777 test.sh  生产文件data.txt touch /opt/data.txt  vi /etc/crontab  录入: 一分钟执行一次  保存退出即可每个一分钟执行一次 配置说明:

    2024年02月17日
    浏览(53)
  • Linux Crontab定时执行脚本不执行,但手动执行脚本正常原因及解决方案

    使用rsync作为备份工具,实现电子文件的增量备份,写了一个脚本,在linux命令行调用 sh shell.sh进行测试,成功实现了电子文件的备份功能,然后在Crontab增加了定时任务,每天凌晨1点进行同步。 后来发现文件同步失败了,后来排查发现应该是脚本虽然被执行,但是没有成功,

    2024年02月08日
    浏览(54)
  • Linux Crontab定时执行脚本出错,但手动执行脚本正常原因及解决方案

    实际开发场景 需要开发一个Flink监控程序,初步使用shell脚本进行监控,如果发现失败了,则自动重新运行Flink命令行参数进行重启。 遇到的问题 编写好shell脚本后,在linux命令行调用 sh shell.sh进行测试,成功实现监控和重启功能。于是利用crontab对脚本进行定时调度监控。 后

    2024年02月15日
    浏览(51)
  • Linux服务器定时执行脚本清理日志

    程序的日志不正确或者启动脚本命令不正确,随着程序的持续运行,日志文件越来越大,持续占用设备硬盘,如果定期手动清理日志又比较占用大脑CPU和内存,如果忘了就是事故,所以写一个定时执行的脚本去清理日志很有必要。 清理日志有两种方式,一种是清空文件,主要

    2024年02月05日
    浏览(49)
  • linux服务器ubuntu定时任务cron设置每秒执行

    后端的同学经常会遇到在服务器做一些定时脚本处理,比如定时清理日志,定时请求某个接口做特殊的业务处理,大多数linux版本都会带cron服务,以ubuntu服务器做个示例。 cron 是一个在 Unix-like 操作系统中用于定时执行任务的工具。它是 “Chronos”(希腊语,意为时间)的缩写

    2024年02月02日
    浏览(59)
  • Linux命令-batch命令(在系统不繁忙的时候执行定时任务)

    batch命令 用于在指定时间,当系统不繁忙时执行任务,用法与at相似。 日期时间:指定任务执行的日期时间。

    2024年02月22日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包