分别使用systemd/crontab/at实现任务计划管理(创建定时器)

目录

前言(设置定时任务的作用)

一、使用systemd创建定时器

1、创建单调定时器

2、创建实时定时器

二、使用crontab安排定时任务

1、为什么要使用crontab安排定时任务

2、如何使用crontab

三、使用at安排定时任务

1.基本介绍

2.atd守护进程工作流程

3.以下提供两种方式查看atd是否启动

4.at命令格式

5.at命令用法介绍

6.at命令应用


前言(设置定时任务的作用)

        在Linux系统中设置定时任务有诸多好处,包括自动化任务、提高效率、时间管理和实时监控等,这些有助于提高工作效率、减少手动操作、提高系统稳定性和安全性。话不多说,让我们看看如何实现设置定时任务吧!

一、使用systemd创建定时器

        要使用systemd的定时器,关键是要创建一个定时器单元文件和一个配套的服务单元文件,然后启动这些单元即可。

1、创建单调定时器

        单调定时器适合按照相对时间的计划任务管理,这里以一个三秒输出一次时间为例,要求开机(系统启动)后开始执行,自从第一次执行后每三秒都要执行一次。

  1. 编写一个配套的服务单元文件,输入以下指令可将其命名为mylog.service,保存在/ete/systemd/system目录中。
    vim /etc/systemd/system/mylog.service
    [Unit]
    Description=Backup boot
    
    [Service]
    Type=simple
    ExecStart=/bin/bash /root/mylog.sh
    
    [Install]
    WantedBy=multi-user.target

    将上述内容复制粘贴进去,【ESC】退出,再输入【:wq!】保存退出即完成服务单元文件编写。

  2. 编写任务脚本文件,这里是一个简单的脚本。首先新建并打开一个文件
    vim /root/mylog.sh
    #!/bin/bash
    echo `date` >> /tmp/mylog.txt

    将上述内容复制粘贴进去,【ESC】退出,再输入【:wq!】保存退出即完成脚本编写。

  3. 编写一个定时器单元文件,输入以下指令可将其命名为mylog.timer,保存在/ete/systemd/system目录中。
    vim /etc/systemd/system/mylog.timer
    [Unit]
    Description=Run boot backup weekly and on boot
    
    [Timer]
    OnUnitActiveSec=3s
    AccuracySec=1us
    Unit=mylog.service
    
    [Install]
    WantedBy=multi-user.target

    同样将上述内容复制粘贴进去,【ESC】退出,再输入【:wq!】保存退出即完成定时器单元文件编写。

  4. 输入下列红色框中的指令,对照检查一下上述文件是否编写正确
  5. 由于创建新的单元文件,执行systemctl daemon-reload 命令重新装载单元文件
    systemctl daemon-reload
  6. 分别执行以下命令使新建的定时器能开机启动,并启动定时器:
    systemctl enable mylog.timer   #开机自启定时器
    systemctl start mylog.timer    #启动定时器
    systemctl status mylog.timer    #查看定时器状态
  7.  出现如下图所示的界面即定时器启动成功

  8. 进入tmp临时目录,查看文件内容
    cd /tmp
    tail -f mylog.txt

    如下图所示每三秒显示一次时间即配置完成

  9. 如果出现以下情况:

    1、先启动mylog.service服务,检查状态时出现绿色图标即可,

    systemctl enable mylog.service  #设置开机自启
    systemctl start mylog.service    #启动服务
    systemctl status mylog.service    #查看服务状态

    如下图所示:

    2、再启动一遍mylog.timer定时器。

    systemctl enable mylog.timer   #开机自启定时器
    systemctl start mylog.timer    #启动定时器
    systemctl status mylog.timer    #查看定时器状态

2、创建实时定时器

        实时定时器适合按照日历时间的计划任务管理,这里也以一个定期备份任务为例,要求每周执行一次(如时间为周日2点),且上次未执行就立即执行。实现步骤与上述单调定时器一样,只是将定时器单元文件修改即可。其内容符合实时定时器,修改如下:

[Unit]
Description=Run boot backup weekly
[Timer]
OnCalendar=sun,02:00
Persistent=true
[Install]
WantedBy=multi-user.target

二、使用crontab安排定时任务

1、为什么要使用crontab安排定时任务

       自动化管理crontab 允许用户在 Linux 系统中设定定时任务,使系统能够自动执行一些重复性的工作,而无需人工干预。这对于需要定时备份、监控、发送邮件等任务来说,非常有用。

       灵活性crontab 提供了强大的定时功能,可以设定精确到分钟的任务执行计划。通过配置不同的时间参数,用户可以轻松地设定任务的执行频率,如每天、每周、每月或特定时间等。

       安全性:通过 crontab,用户可以以特定的用户身份执行任务,从而确保任务执行时的权限和安全性。这有助于防止未经授权的访问和操作。

       资源管理:在 crontab 中,用户可以设定任务的优先级和资源限制,以确保系统资源的合理分配和有效利用。这有助于防止任务执行时占用过多的系统资源,影响其他任务的正常运行。

       日志记录crontab 执行的任务通常会有相应的日志记录,方便用户查看任务的执行情况、排查问题和进行性能优化。

       总之,crontab 在 Linux 系统中扮演了自动化管理、定时执行、安全控制和资源管理的角色,为用户提供了一个方便、灵活且强大的周期性任务管理工具。

2、如何使用crontab

(1)安装crontab

yum install crontabs

(2)查看crontab的状态

service crond status

(3)设置为开机自启

chkconfig –level 35 crond on

(4)添加定时任务,进入编辑

crontab -e

进入之后按i进入编辑模式,例如加入如下命令:

30 1 * * * /usr/local/etc/rc.d/lighttpd restart

设置为每天的1:30重启apache注:命令时间格式 :

*         *   *    *    *  command

分  时  日  月  周  命令

编辑完之后按Esc键后输入 :wq! 后退出

(5)重启crontab服务

service crond restart

(6)查看任务列表

crontab -l

由上图可以看出设置的定时任务已经添加成功

三、使用at安排定时任务

1.基本介绍

在Linux中,at命令用于设置一次性定时任务,它允许用户从文件或标准输入中读取命令,并在将来的一个指定时间执行这些命令。

at命令执行的任务只会在指定的时间运行一次,执行完毕后任务就从队列中移除,不会反复执行。

使用at命令,首先需要有守护进程atd在运行。

2.atd守护进程工作流程

在使用at命令前,要保证atd进程正常使用

具体步骤如下:

  1. 用户通过at命令来设定一个一次性定时任务,包括要执行的命令和具体的时间。这些任务会被添加到作业队列中。
  2. atd守护进程会定期(通常是每60秒)检查这个作业队列。它会查看队列中的每个任务,检查其设定的执行时间是否与当前时间匹配。
  3. 如果找到了一个匹配的任务,atd就会执行这个任务,即运行用户设定的命令。
  4. 任务执行完毕后,相关的文件或记录会被自动删除,这意味着这个任务不会再次被执行,除非用户再次使用at命令设定。

3.以下提供两种方式查看atd是否启动

1.使用systemctl命令 未启动,可以使用systemctl start atd命令来启动,并确保其自动启动可以使用systemctl enable --now atd命令。

systemctl status atd

      atd守护进程正在运行,你将看到类似“active (running)”的状态信息。如果未运行,则可能看到“inactive (dead)”或其他状态信息。

2.查看进程列表 ps -ef是用来检查所有的进程,| grep atd是管道,有过滤作用,这样子就能保证只检测atd进程是否启动了

systemctl status atd

       atd守护进程正在运行,你将看到与atd相关的进程信息。如果没有任何输出,则意味着atd可能没有运行。

4.at命令格式

at [选项][时间]

结束: 1Ctrl+D结束at命令的输入

           2)取消at作业,可在atrm命令后跟atq命令输出的作业号,将该at作业删除

5.at命令用法介绍

在命令行中执行at命令进入作业设置状态。at后面跟时间参数,在执行任务的时间,可以是下面格式中任何一种。

(1)HH:MM: 某一时刻,如05:00 代表5:00 AM。如果时间已过,就会在第2天的这一时间执行。

(2)MMDDYY、MM/DD/YY或MM.DD.YY:日期格式,表示某年某月某天的当前时刻。

月日年英文格式:如January 15 2015,年份可选。

特定时间:midnight 代表12:00 AM;noon 代表12:00 PM;teatime 代表4:00 PM。

now +: 从现在开始多少时间以后执行,单位是minutes、hours、days或weeks。如now+3 days 代表命令应该在3天之后的当前时刻执行。

6.at命令应用

(1)使用at命令创建一个定时任务,早上5点重启系统:

(2)使用-f选项,at命令可以从指定的文件中读取命令内容,然后在指定的时间运行。例如,有一个名为mytimer.sh文件

(3)使用-1选项,可以列出当前用户(非root)所有使用at命令创建的还未运行或当前正在运行的任务,如果是root账号,将列出所有用户的任务:

   atq 命令具有与命令“at-l”相同的功能:

(其中前面的4、5、6是任务的编号)

希望这篇文章能给您带来一些启发。如果您喜欢我们的内容,请记得点赞、分享和关注哦!我们下次再见!

  • 52
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值