1. 如何创建一个定时任务,通过systemd系统

Linux中,可以使用crontab创建一个定时任务。

首先,创建一个crontab文件,形如

# 每天的6点42分,运行一次spmake脚本
42 6 * * * /home/luzj/bin/spmake

紧接着,执行crontab file即可安装该文件。之后定时任务即开起

使用crontab -l列出所有在crontab管理下的定时任务,crontab -r xxx删除定时任务

1.1. systemd中的timer

systemd通过定义一个timer单元来创建一个定时任务。实际上我们需要做两件事,首先定义一个service单元,

这个service单元定义了我们想定时执行的任务。然后再定义一个timer单元,通过timer单元定义如何定时执行

之前的service单元,比如每1h执行一次、每天5点执行、每个月的16号6点执行等等

1.2. 自定义定时任务

我们自定义一个定时任务——每过30s就向msg.txt输入当前时间

1.2.1. 具体步骤

首先,创建一个mail.sh脚本.

vim mail.sh

# 内容
#!/bin/bash
echo `date` >> msg.txt #添加执行权限
chmod +x mail.sh

我们先执行一遍,bash mail.sh,就会看到当前时间被写入msg.txt之中了

创建Service单元.进入/etc/systemd/system目录中,创建mytimer.service文件,

vim mytimer.service

#写入内容
[Unit]
Description=mytimer service [Service]
ExecStart=/bin/bash <path>/mail.sh # 这里可以不添加[Install]区块,因为该Service是为Timer单元服务的

之后,启动Service单元,systemctl start mytimer.service.然后就会看到,当前时间

被写入到msg.txt之中了

创建Timer单元.同样的目录,创建mytimer.timer文件,

vim mytimer.timer

#内容如下
[Unit]
Description=run mail.sh every 10s [Timer]
OnUnitActiveSec=10s
Unit=mytimer.service [Install]
WantedBy=multi-user.target

启动Timer单元.

systemctl daemon.reload
systemctl enable mytimer.timer
systemctl start mytimer.timer #查看timer运行状态
systemctl status mytimer.timer
tail -f msg.txt # 查看打印情况,每10s会打印一次,我的实测 时间间隔不是很精确哈
journalctl -f -u mytimer.timer # 查看定时器运行日志

1.2.2. [Timer]区块属性详情

OnActiveSec:定时器生效后,多少时间开始执行任务
OnBootSec:系统启动后,多少时间开始执行任务
OnStartupSec:Systemd 进程启动后,多少时间开始执行任务
OnUnitActiveSec:该单元上次执行后,等多少时间再次执行
OnUnitInactiveSec: 定时器上次关闭后多少时间,再次执行
OnCalendar:基于绝对时间,而不是相对时间执行
AccuracySec:如果因为各种原因,任务必须推迟执行,推迟的最大秒数,默认是60秒
Unit:真正要执行的任务,默认是同名的带有.service后缀的单元
Persistent:如果设置了该字段,即使定时器到时没有启动,也会自动执行相应的单元
WakeSystem:如果系统休眠,是否自动唤醒系统

具体可以看官方文档

1.3. 删除定时器

systemctl disable mytimer.timer #关闭开机启动(即删除目录链接)
systemctl stop mytimer.timer # 关闭单元
systemctl stop mytimer.service #之后删除timer 和Service文件 systemctl daemon-reload # 重新加载配置

参考

Systemd 定时器教程-阮一峰

如何创建systemd定时任务的更多相关文章

  1. 【Oracle】使用dbms_job包创建Oracle定时任务

           在Oracle的包里面,有一个名字叫做DBMS_JOB的包,它的作用是安排和管理作业队列.通过作业队列,可以让Oracle数据库定期执行特定的任务.当使用DBMS_JOB管理作业的时候, ...

  2. .NET创建Windows定时任务

    创建Windows定时任务教程 1.创建一个控制台应用程序,保证程序正常运行. 2.右键点击我的电脑->点击管理. 3.在计算机管理弹出框->展开计算机管理(本地)->展开系统工具- ...

  3. .net core+topshelf+quartz创建windows定时任务服务

    .net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Q ...

  4. docker下创建crontab定时任务失败

    创建过程 基础镜像采用的centos7.2,需要安装一下crontab,在dockerfile中加以下语句就可以了: # crontab jobs RUN yum -y install crontab ...

  5. mysql中创建event定时任务

    从网上借鉴大神的. use onlinexam; -- 查看event事件是否开启 show variables like '%sche%'; -- 开启event事件  (非常重要) set glo ...

  6. Spring Boot 创建动态定时任务

    1,日期格式转换 //定时任务格式转换public static String convertCronTime(Date jobDate){ //https://blog.csdn.net/qq_39 ...

  7. 【Linux常用工具】02. 创建启动定时任务工具cron

    一. cron 1. cron是一个守护程序,它提供定时器的功能,让用户在特定的时间得以执行默认的指令或程序.只要用户会编辑定时器的设置文件,就可以使用定时器的功能. 定时器文件格式: 2. cron ...

  8. oracle利用job创建一个定时任务,定时调用存储过程

    --创建表 create table TESTWP ( ID ), C_DATE DATE ); select * from TESTWP; --2.创建一个sequence create seque ...

  9. PLSQL创建Oracle定时任务

    在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法: 1.创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据 cr ...

随机推荐

  1. EF单实对应多表

    一.单实体对应多表 适用场景主表,拥有相同主键附属表或扩展表. 1. 建表词句 CREATE TABLE [Chapter2].[Product]( [SKU] [int] primary key , ...

  2. [uva] 10067 - Playing with Wheels

    10067 - Playing with Wheels 题目页:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Ite ...

  3. mybatis ${}使用注意事项

    ${key}有值, ${key,jdbcType=VARCHAR}没有值 总结:${}使用时不要指定jdbcType等属性,指定这些反而取不到值,这也是跟#{}的一个区别.以上只是开发中遇到的情况,具 ...

  4. C#启动外部程序(进程)

    通过调用Process类可以启动系统内部(环境变量里的)或者指定位置的程序,例如: Process.Start("notepad");//启动记事本 Process.Start(& ...

  5. css display属性详解

    css display属性在对css做layout设计时非常重要,它的值有以下几种: Value Description Play it inline Default value. Displays ...

  6. 基于bootstrap的单选(radio)或者多选(checkbox)的选择框组

    完成的效果如下图所示: html代码如下: <!-- 两行组 --> <div class="box"> <ul class="list-g ...

  7. How to prepare system design questions in a tech interview?

    http://blog.baozitraining.org/2014/09/how-to-prepare-system-design-questions.html 如何准备面试中的系统设计问题一直都是 ...

  8. 遍历查询结果集,update数据

    select NULL mykey, * into #mytemp from dbo.DIM_DISTRIBUTOR declare @i int begin ) print @i )) where ...

  9. U盘中毒了?教你如何删除System Volume Information这个顽固文件夹

    不得不说cmd命令很好用呢.最近我的U盘中毒了,格式化都删除不了System Volume Information这个顽固的文件夹,真心伤不起哇!还好现在解决了问题.看来以后得好好对待U盘,不能乱用了 ...

  10. editplus 格式化 js、html、xml、css

    没有文件扩展”js”的脚本引擎的问题的解决办法 解决办法如下: 打开注册表编辑器,定位"HKEY_CLASSES_ROOT" > ".js" 这一项,双击 ...