systemd定时器

本文介绍了如何在Linux系统中创建自定义shell脚本systemd_time.sh,通过与systemd服务和定时器配合,实现定期备份syslog.txt文件。详细步骤包括创建脚本、编写单元文件、配置定时器并监控执行状态。
摘要由CSDN通过智能技术生成

目录

一、自定义shell脚本

1.在/root目录下创建systemd_time.sh脚本

 2.创建syslog.txt文件

3.给脚本运行权限

二、编写单元文件

1.进入/etc/systemd/system目录下 创建服务单元文件(.service)

2.创建定时器单元文件(.timer)

3.重新加载自定义配置systemd文件,启动单元文件

4.查看/root/syslog.txt文件


一、自定义shell脚本

1.在/root目录下创建systemd_time.sh脚本

vim systemd_time.sh

#!/bin/bash
echo $(date) >> /root/syslog.txt
sleep 3
~
  1. 使用 date 命令获取当前的日期和时间。
  2. 将当前的日期和时间追加到/root/syslog.txt文件中。
  3. 然后暂停执行 3 秒钟(使用 sleep 3)。

 2.创建syslog.txt文件

touch syslog.txt

3.给脚本运行权限

chmod +x systemd_time.sh

二、编写单元文件

1.进入/etc/systemd/system目录下 创建服务单元文件(.service)

cd /etc/systemd/system

vim systemd_time.service

[Unit]
Description=Backup Service

[Service]
Type=simple
ExecStart=/root/systemd_time.sh

[Install]
WantedBy=multi-user.target

  1. [Unit]:这一部分定义了系统单元的基本信息。

    • Description=Backup Service:描述了这个服务的简短描述,表明这个服务是一个备份服务。
  2. [Service]:这一部分定义了服务的具体运行方式。

    • Type=simple:指定了服务的启动类型,这里是简单的启动类型。简单的启动类型意味着 Systemd 不会对服务的主进程进行额外的跟踪和管理。
    • ExecStart=/root/systemd_time.sh:指定了服务启动时需要执行的命令或脚本,这里是执行 /root/systemd_time.sh 脚本。
  3. [Install]:这一部分定义了如何安装这个服务。

    • WantedBy=multi-user.target:指定了这个服务应该在何时安装。在这里,它表明这个服务会被安装在多用户环境(multi-user.target)中,即系统启动时会被启用。

2.创建定时器单元文件(.timer)

vim backup.timer

[Unit]
Description=Executed every minute
[Timer]
OnBootSec=3s
OnUnitActiveSec=3s
Unit=systemd_time.service
[Install]
WantedBy=multi-user.target
  1. [Unit]:这一部分定义了定时器单元的基本信息。

    • Description=Executed every minute:描述了这个定时器的简短描述,表明这个定时器是用于每分钟执行的任务。
  2. [Timer]:这一部分定义了定时器的触发条件和行为。

    • OnBootSec=3s:指定了定时器在系统启动后延迟多长时间开始第一次触发任务。在这里,3s 表示延迟 3 秒后开始第一次触发任务。
    • OnUnitActiveSec=3s:指定了定时器在前一次任务触发后,再次触发任务之间的间隔时间。在这里,3s 表示任务触发间隔为 3 秒。
    • Unit=systemd_time.service:指定了定时器要触发的单元(服务)名称,即当定时器触发时会启动 systemd_time.service 这个服务。
  3. [Install]:这一部分定义了如何安装这个定时器。

    • WantedBy=multi-user.target:指定了这个定时器应该在何时安装。在这里,它表明这个定时器会被安装在多用户环境(multi-user.target)中,即系统启动时会被启用。

补充:(在 Systemd 中,定时器(timer)单元通常需要与一个服务单元相关联)

为每个定时器单元配对一个服务单元有几个原因:

  1. 执行任务:定时器的主要目的是触发特定的任务或操作。这些任务通常由相应的服务单元定义和执行。因此,定时器需要与服务相关联,以在定时器触发时启动服务并执行任务。

  2. 结构清晰:将定时器与服务相关联可以使配置更加清晰和结构化。通过将定时器和服务放在一起,管理员可以更容易地理解和管理定时任务的执行逻辑。

  3. 可重用性:通过将定时器和服务分开定义,可以提高定时任务的可重用性。多个定时器可以引用相同的服务单元,从而避免了重复定义相同的任务。

  4. 灵活性:将定时器和服务分开定义也提供了更大的灵活性。管理员可以根据需要更改定时器或服务的配置,而不会影响到另一个。

综上所述,定时器与服务相关联是 Systemd 设计的一部分,这样做有助于将定时任务的触发和执行逻辑分离开来,提高了可管理性和灵活性。

3.重新加载自定义配置systemd文件,启动单元文件

systemctl daemon-reload
systemctl start backup.timer
systemctl enable backup.timer
systemctl status backup.timer

4.查看/root/syslog.txt文件

  • 35
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值