linux定时任务基础命令介绍(14)

2019-09-23 09:15:11刘景俊

3、systemd.timer

crond和atd服务基于分钟的,意思是说它们每分钟醒来一次检查是否有任务需要执行。如果有任务的执行需要精确到秒,crond和atd是无能为力的。在基于systemd的系统上,可以通过计时器systemd.timer来实现精确到秒的计划任务。
上一篇文章中我们提到了systemd中服务单元的概念,在这里我们需要用到其中的两种:.service和.timer。其中.service负责配置需要运行的任务,.timer负责配置执行时间。

我们先看一个例子:

创建任务脚本

[root@centos7 temp]# cat /root/temp/ping252.sh 
#!/bin/bash
ping -c1 10.0.1.252 &>> /root/temp/252.log

配置服务.service

[root@centos7 temp]# cd /usr/lib/systemd/system
[root@centos7 system]# cat ping252.service 
[Unit]
Description=ping 252

[Service]
Type=simple
ExecStart=/root/temp/ping252.sh
[root@centos7 system]# 

配置计时器.timer

[root@centos7 temp]# cd /usr/lib/systemd/system
[root@centos7 system]# cat ping252.timer 
[Unit]
Description=ping 252 every 30s

[Timer]
# Time to wait after enable this unit
OnActiveSec=60
# Time between running each consecutive time
OnUnitActiveSec=30
Unit=ping252.service

[Install]
WantedBy=multi-user.target
[root@centos7 system]# 

启用计时器

[root@centos7 system]# systemctl enable ping252.timer
Created symlink from /etc/systemd/system/multi-user.target.wants/ping252.timer to /usr/lib/systemd/system/ping252.timer.
[root@centos7 system]# systemctl start ping252.timer

查看

#计时器
[root@centos7 system]# systemctl status ping252.timer
● ping252.timer - ping 252 every 30s
  Loaded: loaded (/usr/lib/systemd/system/ping252.timer; enabled; vendor preset: disabled)
  Active: active (waiting) since 五 2016-12-23 14:27:26 CST; 3min 42s ago

12月 23 14:27:26 centos7 systemd[1]: Started ping 252 every 30s.
12月 23 14:27:26 centos7 systemd[1]: Starting ping 252 every 30s.
#服务
[root@centos7 system]# systemctl status ping252
● ping252.service - ping 252
  Loaded: loaded (/usr/lib/systemd/system/ping252.service; static; vendor preset: disabled)
  Active: active (running) since 五 2016-12-23 14:35:38 CST; 2ms ago
 Main PID: 11494 (ping252.sh)
  CGroup: /system.slice/ping252.service
      └─11494 /bin/bash /root/temp/ping252.sh

12月 23 14:35:38 centos7 systemd[1]: Started ping 252.
12月 23 14:35:38 centos7 systemd[1]: Starting ping 252...

停用

[root@centos7 system]# systemctl disable ping252.timer 
Removed symlink /etc/systemd/system/multi-user.target.wants/ping252.timer.
[root@centos7 system]# systemctl stop ping252.timer
[root@centos7 system]# 

计时器启用1分钟之后看到/root/temp/252.log文件的生成,之后每隔30秒都有内容写入。systemd的服务单元配置文件中被不同的标签分隔成不同的配置区块,其中: