systemd 定时任务服务以及crontab、at定时服务

前言

systemd定时任务、crontab和at在Linux系统中都用于执行定时任务,但它们之间存在一些显著的区别。

首先,从管理方式上看,systemd是Linux系统的初始化进程,它不仅可以管理系统的各种服务,包括定时任务,还提供了更为集成和灵活的方式来处理定时任务。systemd的定时任务通过.timer文件来配置,可以很容易地管理和查看。而crontab则是一个独立的进程,专门用于定时任务的管理,其配置文件为用户的crontab文件,通过crontab -e进行编辑。at命令则用于在指定时间执行一次性任务,其任务由atd守护进程管理。

其次,从灵活性来看,systemd的定时任务管理非常灵活,它可以根据时间、事件等多种方式进行配置。同时,systemd还支持依赖管理,可以方便地处理任务之间的依赖关系。crontab虽然不如systemd灵活,但它支持更多的配置选项,可以实现更为复杂的定时调度。而at命令主要用于执行一次性任务,其灵活性相对较低。

再次,从配置方式来看,systemd的定时任务配置文件以.timer为后缀,放置在/etc/systemd/system目录下,其配置格式较为简单明了。crontab的配置文件则为用户的crontab文件,通过特定的语法和格式来定义定时任务。而at命令则需要在命令行中指定执行时间和要执行的命令。

最后,从使用场景来看,systemd定时任务适用于需要高灵活性和依赖管理的场景,如系统级的服务调度和事件触发。crontab适用于周期性执行的定时任务,如每天备份日志文件等。而at命令则适用于需要在未来某个特定时间点执行一次性任务的场景。

综上所述,systemd定时任务、crontab和at各有其特点和使用场景,用户可以根据实际需求选择适合的定时任务管理工具。

systemd定时服务

systemd定时任务是使用systemd的服务管理器来设置和管理定时任务的方法。这主要通过systemd的定时器单元文件来实现,这些文件通常以.timer后缀结尾,并存储在特定的目录中,如/etc/systemd/system或/usr/lib/systemd/system。

定时器单元文件主要由几个部分组成,包括[Unit]和[Timer]等。在[Unit]部分,你可以指定定时器的基本配置,如描述和依赖关系。在[Timer]部分,你可以设置定时器的触发规则,例如定时器的启动延迟、间隔等。常用的配置项包括OnActiveSec、OnBootSec、OnCalendar和OnUnitActiveSec等。

要设置systemd定时任务,你需要创建一个timer文件,并在其中定义任务的触发时间和要执行的service单元。然后,你需要启动这个timer文件来激活定时任务。此外,你还需要确保对创建的timer和service文件进行授权,以便它们可以正确地运行。

1.创建一个shell脚本

创建一个mytime.sh脚本,在里面输出`date`,并且将其放在临时目录下

vim mytime.sh
#!/bin/bash
echo `date` >> /tmp/xiaj.txt

给其权限

chmod +x mytime.sh

2.创建.service和.timer文件

1)进入/etc/systemd/system目录

cd /etc/systemd/system

2)创建.service文件,以boot_backup.service为例

touch boot_backup.service
vim boot_backup.service

3)在boot_backup.service文件中编辑

[Unit]
Description=Backup boot
[Service]
Type=simple
ExecStart=/bin/bash  /root/mytime.sh

ExecStart后面接的/root/mytime.sh是前面创建的shell脚本路径

4)创建并且编写.timer文件,以boot_backup.timer为例

vim boot_backup.timer
[Unit]
Description=Time to  Run xiaj.txt for 3s
[Timer]
AccuracySec=1us
OnBootSec=3s #3秒运行一次
OnUnitActiveSec=3s #运行以后间隔三秒运行
Unit=/etc/systemd/system/boot_backup.service #.service路径
[Install]
WantedBy=timers.target

3.重新加载 systemd 守护进程的配置文件

systemctl daemon-reload

4.启动boot_backup.timer文件

systemctl start boot_back.timer

5.查看运行情况

systemctl status boot_backup.timer

6.再打开一个终端查看

再开一个终端后,输入如下命令查看

tail -f /tmp/xiaj.txt

如图,定时三秒刷新一次时间,定时任务设置完成。

systemd定时任务与Linux中传统的cron定时任务工具相比,具有一些不同的特点和使用方式。cron通过crontab文件来管理定时任务,而systemd则提供了更为集成和灵活的方式来处理定时任务,尤其是在处理系统服务和依赖关系方面。

总的来说,systemd定时任务是一个强大的工具,可以帮助你有效地管理和调度Linux系统中的定时任务。然而,使用它也需要一定的系统管理经验和对systemd的理解。如果你不熟悉这个工具,建议查阅相关的文档或寻求专业的帮助。

crontab

crontab是一种常见的定时任务调度工具,是Unix和类Unix系统中最常用的定时任务管理工具。它通过读取和解析每个用户的crontab文件来执行定时任务。crontab的任务配置相对于systemd来说可能稍显复杂,但它具有更多可配置项,提供了更灵活的配置方式。crontab默认只支持分钟级别精度的定时任务,并且其定时规则相对固定,对于复杂的需求可能需要额外的解决方案

1.创建一个shell脚本

vim xia.sh

编辑脚本

#!/bin/bash
echo "xia is handsome boy" >> /tmp/qy.txt #输出xia is handsome boy 到qy.txt文件

2.打开crontab编写内容

一般虚拟机会自带crontab服务,可以使用which crontab查看

使用crontab -e打开crontab

再在里面编写定时任务

crontab -e
* * * * * /root/xia.sh #每分钟执行一次xia.sh,*从左往右分别是分钟(0-59)、小时(0-23)、天(1-31)、月(1-12)、星期(0-6),这里五个星表示每分钟执行一次

可以使用crontab -l 来查看定时器任务

3.启动服务

systemctl start crond

4.查看运行状态

systemctl status crond

打开/tmp/qy.txt查看写入情况

tail -f /tmp/qy.txt

如图,每分钟输出一此xia is handsome boy,至此crontab定时任务成功

注:crontab定时器语法

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.8/bin:/usr/local/sbin:/usr/local/bin:/root/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

at

at命令用于设定在未来某个时间点执行一次性任务。

使用at命令时,用户需要输入具体的执行时间,并随后输入要执行的命令或脚本。

设定好的任务会被加入到作业队列中,等待atd守护进程在指定时间执行。

at命令只能执行一次任务,如果需要循环调度某个工作,应该使用其他的定时任务工具。

1.创建shell脚本

vim q.sh

编写内容

#!/bin/bash
echo `date` >> /tmp/we.txt #输出时间到临时目录we.txt文件下

2.检查at服务

at命令依赖于atd服务。首先,你需要确保这个服务正在运行。你可以使用systemctl来检查并启动服务

systemctl status atd

3.添加任务

将q.sh任务添加到队列:at任务将于下一分钟执行

at -f q.sh now + 1 minutes

4.查看是否添加成功

atq

5.查看执行结果

进入we.txt文件,查看是否输出

tail -f /tmp/we.txt

至此,本文完

  • 33
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
systemd-networkd 是一个系统服务管理器工具,用于配置和管理网络的服务。它通过使用网络配置文件来管理网络连接和设置,可以配置网络接口、IP地址、网关、DNS等网络参数,同时支持网络桥接、VLAN等高级网络功能。 要下载 systemd-networkd 服务包,我们可以按照以下步骤操作: 首先,我们需要确保系统中已经安装了 systemd 包,因为 systemd-networkd 是 systemd 工具的一部分。我们可以通过包管理器来安装 systemd 包,如在 Debian/Ubuntu 上使用 apt、在 CentOS/RHEL 上使用 yum 等。 接下来,我们可以使用包管理器来搜索 systemd-networkd 服务包的名称,并进行安装。在大多数 Linux 发行版中,systemd-networkd 服务包通常会和 systemd 包一起提供,因此可以直接安装 systemd 包即可获得 systemd-networkd。 例如,在 Debian/Ubuntu 上,我们可以使用以下命令来安装 systemd 包及其相关的网络服务包: ``` sudo apt update sudo apt install systemd ``` 在 CentOS/RHEL 上,我们可以使用以下命令来安装 systemd 包及其相关的网络服务包: ``` sudo yum install systemd ``` 安装完成后,我们可以通过 systemctl 工具来启动、停止、重启 systemd-networkd 服务,并通过编辑网络配置文件来配置网络参数。需要注意的是,在配置网络参数之前,我们应该对网络配置文件做好备份,以防意外出现网络连接问题。 总之,通过以上步骤,我们可以成功下载并安装 systemd-networkd 服务包,并开始配置和管理系统的网络服务

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值