systemd.timer定时任务

本文介绍了如何使用Systemd在Linux系统中创建服务单元和定时器单元来实现定时任务。首先,讲解了Systemd的单元文件存放路径,接着详细说明了Service单元的配置,包括设置启动类型和执行命令。然后,讨论了Timer单元的配置,如OnBootSec和OnUnitActiveSec用于设置定时启动时间。示例中创建了一个名为youlv.service的服务单元和youlv.timer的定时器单元。最后,给出了启动定时任务的命令及查看定时器状态的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

systemd.timer定时任务

一、Systemd 单元
每个单元都有一个单元描述文件,它们分散在三个目录

  • /lib/systemd/system:系统默认的单元文件
  • /etc/systemd/system:用户安装的软件的单元文件
  • /usr/lib/systemd/system:用户自己定义的单元文件

二、Service 单元

  • 每个服务单元文件都必须包含一个 [Service]
  • Type= 设置进程的启动类型。必须设为 simple, exec, forking, oneshot, dbus, notify, idle 之一
  • ExecStart= 启动该服务时需要执行的 命令行

/usr/lib/systemd/system目录里面,新建一个youlv.service文件

[Unit]
Description=jciot service

[Service]
Type=simple
User=jciot
ExecStart=/usr/bin/python /opt/jciot.py

[Install]
WantedBy=multi-user.target

Note: service默认使用root权限,在ubuntu系会出现no modules found情况,使用安装modules的用户科解决

三、Timer 单元

  • 定时器单元文件中必须包含一个 [Timer]
  • 通过同时使用 OnBootSec= 与 OnUnitActiveSec= 指令, 就可以实现在系统启动后的某个时间点启动匹配单元, 并且之后每隔一段时间周期性的反复启动匹配单元
  • 时间单位后缀:us(微秒), ms(毫秒), s(秒), m(分), h(时), d(天), w(周)。 如果省略了时间单位,那么表示使用默认单位"秒"
  • Unit= 该定时器单元的匹配单元, 也就是要被该定时器启动的单元。默认值是 与此定时器单元同名的服务单元

/usr/lib/systemd/system目录里面,新建一个youlv.timer文件

[Unit]
Description=Run jciot

[Timer]
OnBootSec=2m
OnUnitActiveSec=2h

[Install]
WantedBy=timers.target

四、启动定时任务

systemctl start youlv.service
systemctl start youlv.timer

查看所有正在运行的定时器

systemctl list-timers

链接:
systemd.timer — 定时器单元配置
systemd.service — 服务单元配置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值