如何创建systemd定时任务
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定时任务的更多相关文章
- 【Oracle】使用dbms_job包创建Oracle定时任务
在Oracle的包里面,有一个名字叫做DBMS_JOB的包,它的作用是安排和管理作业队列.通过作业队列,可以让Oracle数据库定期执行特定的任务.当使用DBMS_JOB管理作业的时候, ...
- .NET创建Windows定时任务
创建Windows定时任务教程 1.创建一个控制台应用程序,保证程序正常运行. 2.右键点击我的电脑->点击管理. 3.在计算机管理弹出框->展开计算机管理(本地)->展开系统工具- ...
- .net core+topshelf+quartz创建windows定时任务服务
.net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Q ...
- docker下创建crontab定时任务失败
创建过程 基础镜像采用的centos7.2,需要安装一下crontab,在dockerfile中加以下语句就可以了: # crontab jobs RUN yum -y install crontab ...
- mysql中创建event定时任务
从网上借鉴大神的. use onlinexam; -- 查看event事件是否开启 show variables like '%sche%'; -- 开启event事件 (非常重要) set glo ...
- Spring Boot 创建动态定时任务
1,日期格式转换 //定时任务格式转换public static String convertCronTime(Date jobDate){ //https://blog.csdn.net/qq_39 ...
- 【Linux常用工具】02. 创建启动定时任务工具cron
一. cron 1. cron是一个守护程序,它提供定时器的功能,让用户在特定的时间得以执行默认的指令或程序.只要用户会编辑定时器的设置文件,就可以使用定时器的功能. 定时器文件格式: 2. cron ...
- oracle利用job创建一个定时任务,定时调用存储过程
--创建表 create table TESTWP ( ID ), C_DATE DATE ); select * from TESTWP; --2.创建一个sequence create seque ...
- PLSQL创建Oracle定时任务
在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢?下面我简单介绍使用工具创建定时器的方法: 1.创建任务执行的存储过程,如名称为YxtestJob,向测试表中插入数据 cr ...
随机推荐
- Caffe&Torch&Theano&TensorFlow
https://www.youtube.com/watch?v=Qynt-TxAPOs&index=12&list=PL16j5WbGpaM0_Tj8CRmurZ8Kk1gEBc7fg ...
- unity3d代码优化标准
转载自:https://blog.csdn.net/m0_37283423/article/details/84378384 代码优化 ● 尽可能使用for来代替foreach:每次foreach会产 ...
- chrome 插件开发学习
http://blog.csdn.net/my_business/article/details/7711525
- git中忽略文件权限或文件拥有者的改变
在发布项目到线上时,很多时候需要修改文件的权限,如果是使用git版本管理软件来发布的话,那么下次更新线上文件的时候就会提示文件冲突.明明文件没有修改,为什么会冲突呢?原来git把文件权限也算作文件差异 ...
- Apache POI使用
使用apache poi解析 Excel文件: package excellucene; import java.io.File; import java.io.FileInputStream; im ...
- 使用NSURLConnection实现大文件断点下载
使用NSURLConnection实现大文件断点下载 由于是实现大文件的断点下载,不是下载一般图片什么的.在设计这个类的时候本身就不会考虑把下载的文件缓存到内存中,而是直接写到文件系统. 要实现断点下 ...
- mysql io过高
背景: 晚上,公司业务群里发信息说,有玩家在游戏里面赠送别人礼物后,赠送记录在20多分钟以后才出现,延时太高. 问题: 公司数据库使用mysql,配置了主从.配置的是,游戏程序写数据到主库,读数据到从 ...
- JS如何将变量作为一个对象的Key
var lastWord = 'last word'; var a = { 'first word': 'hello', [lastWord]: 'world' }; a['first word'] ...
- xcode9 unity3d 新坑
1.metal调试会报错,要在edit scheme里关掉
- Linux 系统查看tomcat控制台命令
前提进入tomcat/logs文件夹下 查看全部命令是:tail -f catalina.out 如果想查看具体文件的日志进入该文件所在目录然后命令如下: tail -f filename