0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何定期执行某个脚本呢?

阿铭linux 来源:阿铭linux 2022-12-28 09:23 次阅读

其实大部分系统管理工作都是通过定期自动执行某个脚本来完成的,那么如何定期执行某个脚本呢?这就要借助Linux的cron功能了。这部分内容很重要,请大家牢记!

4063b548-864d-11ed-bfe3-dac502259ad0.png

14.5.1命令crontab

Linux任务计划功能的操作都是通过crontab命令来完成的,其常用的选项有以下几个。

-u:表示指定某个用户,不加-u选项则为当前用户。

-e:表示制定计划任务。

-l:表示列出计划任务。

-r:表示删除计划任务。

下面请跟着阿铭来创建第一个任务计划,如下所示:

# crontab -e
no crontab for root - using an empty one
这里使用crontab -e来编写任务计划,这实际上是使用vim工具打开了crontab的配置文件,我们写下如下内容:
01 10 05 06 3 echo "ok" > /root/cron.log
这里每个字段的数字分别表示什么呢?从左到右依次为:分、时、日、月、周和命令行。上例表示在6月5日(这一天必须是星期三)的10点01分执行命令:
echo "ok" > /root/cron.log。
命令crontab -e实际上是打开了/var/spool/cron/username文件(如果用户是root,则打开的是/var/spool/cron/root)。

打开这个文件使用了vim编辑器,所以保存时在命令行模式下输入:wq即可。但是请千万不要直接去编辑那个文件,否则会出错,所以一定要使用命令crontab -e来编辑。

查看已经设定的任务计划使用crontab -l命令,如下所示:
# crontab -l
01 10 05 06 3 echo "ok" > /root/cron.log
删除任务计划要使用crontab -r命令,这个删除选项最好还是少用,因为它会一下子把全部计划都删除掉。如果你想只删除一条计划,可以使用-e选项进入crontab进行编辑。-r选项用法如下所示:
# crontab -r
# crontab -l
no crontab for root
14.5.2cron练习题

Cron的内容不算太难,但需要你牢固掌握。下面阿铭给出一些练习题,帮助你熟悉cron的应用。

每天凌晨1点20分清除/var/log/slow.log这个文件。

每周日3点执行/bin/sh /usr/local/sbin/backup.sh。

每月14日4点10分执行/bin/sh /usr/local/sbin/backup_month.sh。

每隔8小时执行ntpdate time.windows.com。

每天的1点、12点和18点执行/bin/sh /usr/local/sbin/test.sh。

每天的9点到18点执行/bin/sh /usr/local/sbin/test2.sh。

下面是以上习题的答案,仅作参考。

201***echo"">/var/log/slow.log
03**0/bin/sh/usr/local/sbin/backup.sh
10414**/bin/sh/usr/local/sbin/backup_month.sh
0*/8***ntpdatetime.windows.com
01,12,18***/bin/sh/usr/local/sbin/test.sh
09-18***/bin/sh/usr/local/sbin/test2.sh
练习完上面的题目,你可能会有一些小疑问。这里要简单说明一下,每隔8小时就是用全部小时(0~23)去除以8,结果算出来应该是0、8和16这3个数。

当遇到多个数(分钟、小时、月、周)时,则需要用逗号隔开,比如第5题中的1,12,18。时间段是可以用n-m的方式表示的,比如第6题中的9-18。

设置好了所有的任务计划后,我们需要查看一下crond服务是否已经启动,如下所示:
# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-06-26 1517 CST; 1h 22min ago
Main PID: 820 (crond)
Tasks: 1 (limit: 11353)
Memory: 1.9M
CGroup: /system.slice/crond.service
└─820 /usr/sbin/crond -n
6月 26 1517 aminglinux-123 systemd[1]: Started Command Scheduler.
6月 26 1517 aminglinux-123 crond[820]: (CRON) STARTUP (1.5.2)
6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (Syslog will be used instead of sendmail.)
6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 8% if used.)
6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (running with inotify support)
6月 26 1601 aminglinux-123 CROND[2042]: (root) CMD (run-parts /etc/cron.hourly)
6月 26 1701 aminglinux-123 CROND[4032]: (root) CMD (run-parts /etc/cron.hourly)
看Active那行,如果是启动状态显示为active(running),未启动则显示为inactive (dead)。




审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    591

    浏览量

    27344
收藏 人收藏

    评论

    相关推荐

    Linux中执行shell脚本的两种方式

    shell脚本,通常这个脚本通过一系列的操作编写的脚本,这些脚本都主要用于应用的启动停止等。那么,Linux中是如何执行脚本
    发表于 11-18 16:49 1804次阅读
    Linux中<b class='flag-5'>执行</b>shell<b class='flag-5'>脚本</b>的两种方式

    自研的regression脚本yrun都有哪些东西

    yrun是处芯积律自研的regression脚本,yrun都有哪些东西
    的头像 发表于 10-12 09:26 1401次阅读
    自研的regression<b class='flag-5'>脚本</b>yrun都有哪些东西<b class='flag-5'>呢</b>?

    shell脚本编写之本地脚本的编写和执行

    用来指定使用的shell应用;echo "my first shell !"为脚本中编写的命令代码。2、执行执行脚本时,脚本必须要有
    发表于 08-28 09:36

    Android开机执行shell脚本

    Android开机执行shell脚本 往往需要在Android启动过程中去对系统做一些设置,如修改某些文件夹的属主和文件的权限,可在init.rc中增加service执行shell脚本
    发表于 04-30 15:24

    如何在 IIS 中执行 Python 脚本

    如何在 IIS 中执行 Python 脚本 Python 是一种解释脚本语言,概念类似 Microsoft Visual Basic Scripting Edition (VBScript)、 MicrosoftJScrip
    发表于 02-23 15:13 1245次阅读

    如何创建和执行一个简单的Linux shell脚本

     如果您愿意要尝试更长的shell脚本,请将下面的shell脚本(并附加为PDF和ODT文件)复制到文本编辑器中,保存,使其可执行并运行。当您了解更多Linux命令时,您可以创建更复杂的shell
    的头像 发表于 11-06 17:28 1.3w次阅读

    如何使用redis实现分布式锁的lua脚本出现和资料说明

    Redis 使用单个 Lua 解释器去运行所有脚本,并且, Redis 也保证脚本会以原子性(atomic)的方式执行:当某个脚本正在运行的
    的头像 发表于 12-01 11:00 3612次阅读

    虚拟机:Bash Shell脚本打印出执行的命令

    默认情况下,bash脚本不会打印执行的每个命令,这个有时候不太方面。
    的头像 发表于 06-22 14:44 4512次阅读

    如何使用符号执行的python实现攻击脚本分析平台

    传统的静态分析方法大多不能准确处理脚本与网络交互的过程,且会引入不可达路径,动态分析则需要搭建实验环境和手工分析。针对上述问题,提出一种基于符号执行的Python攻击脚本分析平台PyExZ3+。通过
    发表于 07-16 15:50 11次下载
    如何使用符号<b class='flag-5'>执行</b>的python实现攻击<b class='flag-5'>脚本</b>分析平台

    为什么shell脚本执行命令要加exec?这个exec有什么作用

    正常情况下,如果我们想要在shell脚本执行一个命令,我们只用将该命令原样写到这个shell脚本中就好了。
    的头像 发表于 08-21 09:10 2860次阅读
    为什么shell<b class='flag-5'>脚本</b>中<b class='flag-5'>执行</b>命令要加exec?这个exec有什么作用<b class='flag-5'>呢</b>?

    shell脚本串行和并行执行设置

    在Shell脚本中,你可以使用不同的技巧来实现串行和并行执行。 串行执行 要实现串行执行,你可以简单地按顺序编写脚本中的命令。每个命令都会在
    的头像 发表于 11-08 10:25 2347次阅读

    shell并行执行java脚本

    Shell是一种用于解释执行命令的脚本语言,而Java是一种跨平台的面向对象编程语言。在某些情况下,我们可能需要在Shell脚本执行Java程序。本文将介绍如何在Shell中
    的头像 发表于 11-08 10:29 668次阅读

    Oracle如何执行sql脚本文件

    Oracle是一种关系型数据库管理系统,可用于存储、查询和管理大量的数据。在Oracle中,可以通过执行SQL脚本文件来一次性地执行多个SQL语句或者批量处理数据。在下面的文章中,我将详细介绍
    的头像 发表于 12-06 10:51 6400次阅读

    执行shell脚本的方式包括什么

    执行Shell脚本的方式有很多种,以下是一些常见的方法: 直接运行脚本文件 在命令行中,可以直接使用脚本文件的路径来运行脚本。例如: ./s
    的头像 发表于 08-30 15:17 265次阅读

    shell脚本执行的三种方式及区别

    在Linux系统中,Shell脚本是一种非常实用的工具,用于自动化执行一系列命令。Shell脚本可以大大提高工作效率,简化复杂的任务。在这篇文章中,我们将介绍Shell脚本
    的头像 发表于 08-30 15:24 732次阅读