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. Office - InfoPath

    1. 移除隐藏空间后剩余的空白: http://social.technet.microsoft.com/Forums/sharepoint/zh-TW/3dea3014-f808-428b-b283 ...

  2. C++格式化代码,去掉vs2010编辑器里中文注释的红色波浪线

    原文:http://sulianqi.cn/Article/ART2013053100001.html Vs2010中C++没有智能感应提示,不习惯,于是装了个番茄插件(Visual Assist x ...

  3. latex 调整间隔

    转自:http://blog.sina.com.cn/s/blog_4a4927c70100phsb.html,感谢分享! 一.LATEX调整公式与正文间距离,调整空白大小:   调整空白命令: \s ...

  4. python RabbitMQ广播

    消息公平分发 如果Rabbit只管按顺序把消息发到各个消费者身上,不考虑消费者负载的话,很可能出现,一个机器配置不高的消费者那里堆积了很多消息处理不完,同时配置高的消费者却一直很轻松.为解决此问题,可 ...

  5. WebRequest的get及post提交

    static string get_html(string url) { var request = WebRequest.Create(url); var response = request.Ge ...

  6. mongo 聚合函数

    一: 聚合 常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce. <1> count count是最简单,最容易,也是最常用的聚合工 ...

  7. Simotion 绝对值编码器使用外部开关回零

    问题来源: 西门子的1FK7二代电机,目前已经没有增量编码器.标准的编码器选项是单圈绝对值,或多圈绝对值. 在某些应用中,如印刷机的版辊.模切轴.飞剪电机等,需要使用外部开关来回零.下文描述了使用外部 ...

  8. imooc课程:Java高并发秒杀API 记录

    Java高并发秒杀API之业务分析与DAO层 Java高并发秒杀API之Service层 Java高并发秒杀API之web层 Java高并发秒杀API之高并发优化 除了并发部分外的这个web开发的总结 ...

  9. mangodb驱动编译

    1.Installing the MongoDB C Driver (libmongoc) and BSON library (libbson) Building on Windows with Vi ...

  10. commons dbcp.jar有什么用

    主流数据库连接池之一(DBCP.c3p0.proxool),单独使用DBCP需要使用commons-dbpc.jar.commons-collections.jar.commons-pool.jar三 ...