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. strcmp和stricmp、strcmpi三者之间的区别(C++)

    原文:http://www.cnblogs.com/tankeee/p/3957629.html #include <string.h> #include <stdio.h> ...

  2. Hush Framework框架配置(转)

    在写这篇文章的时候,楼主已经饿的不行了,因为我从3点开始就在折腾Hush Framework,走了很多弯路,打铁要趁热,先把基本的过程记录下来,留待以后翻阅,同时记录其中容易走弯路的地方,特别是对于一 ...

  3. toasf的苦水

    http://blog.csdn.net/qq_25867141/article/details/52807705 优化 上面的几种方式我大致也都走了一遍,其实我觉得都没啥区别,看你喜欢用哪种吧.我其 ...

  4. 【NLP_Stanford课堂】语言模型2

    一.如何评价语言模型的好坏 标准:比起语法不通的.不太可能出现的句子,是否为“真实”或"比较可能出现的”句子分配更高的概率 过程:先在训练数据集上训练模型的参数,然后在测试数据集上测试模型的 ...

  5. hydra 常用的命令

    1.本地调试模式运行项目  /gaea hydra /zk节点名 -r "zk://zk地址" -t "节点标识" -d -w 项目相对于$GOPATH/src ...

  6. mongoDb 命令

    1.显示MongoDB的服务器统计:db.stats() 2.创建数据库:use dbname 3.删除数据库:db.dropDatabase() 4.检查当前选择的数据库:db 5.检查数据库列表: ...

  7. 【转】Linux中/etc/profile,/etc/bashrc,~/.profile,~/.bashrcd的区别

    //因为在原文章中博主说以下内容是网友说的,所以我就只加个转了,找不到原作者 /etc/profile,/etc/bashrc 是系统全局环境变量设定 ~/.profile,~/.bashrc用户家目 ...

  8. Memory Leak Detection in C++

    原文链接:http://www.linuxjournal.com/article/6556?page=0,0 An earlier article [“Memory Leak Detection in ...

  9. Quarzt定时调度任务

    简介 Quarzt是一个项目中定时执行任务的开源项目,Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独 ...

  10. ListView实现下拉刷新(三)实现下拉刷新

    该准备的东西都已经准备好了.在这篇文章里,我们就开始实现下拉刷新功能吧. 一.大体的逻辑分析 我们来简单分析一下需要做的逻辑吧.首先分析头布局有几种状态.不下拉时,为正常状态,此时头布局隐藏.下拉到一 ...