当前位置: 首页 > news >正文

使用crontab设置程序自启动

1.功能和作用

CrontabLinux系统中的一款定时任务调度器,可以帮助我们在指定时间周期性执行某些任务cron daemon来执行,该守护进程会定期检查用户的crontab文件,并根据文件的设置来运行相应的脚本、命令。

Crontab的主要作用是让用户能够自动化地执行一些重复性的任务,而不需要手动去运行这些任务通过设置crontab,用户可以指定任务的执行时间、执行频率以及要执行的脚本、命令。

其意义在于提高工作效率和便利性同时实现一些需要长期维持的任务进程由于意外导致终止的自动重启,比如:

  1. LAC server 自动启动
  2. LAC agent 定期检测license状态,与LAC server通信

2.基本参数

crontab -l

list: 显示目前已经设置的定时任务

crontab -e

编辑计划任务文件

crontab -r

删除所有的定时计划

实例:

命令crontab –l

输出:no crontab for user >>user账户下没有设置计划任务

命令crontab –e

输出进入计划任务编辑文件,在文件里写入定时任务指令

写入* * * * * /home/user/exec

保存退出:wq

命令:crontab –l

输出* * * * * /home/user/exec

命令crontab r && crontab -l

输出no crontab for user >>user账户下没有设置计划任务

3.crontab定时规则

命令由两部分组成:定时规则  脚本路径

定时规则:* * * * * 五个位置分别表示分、时、日、月、周 

行为单位,一行是一个计划,取值范围

  1. 0-59
  2. 0-23
  3. 1-31
  4. 1-12
  5. 0-7   -- 0和7表示星期天

四个符号

  1. *表示取值范围中的每一个数字
  2. -表示连续区间
  3. /:表示每多少个
  4. ,:表示多个值

示例1

0  1-4  2,12,22  *  *  /home/user/exec

表示每月2号12号22号的凌晨1点、2点3点4点执行exec程序

示例2

15  2  *  *  6,7  /home/user/exec

表示每周六日的2:15执行exec程序

示例3

*/30  18-23  *  *  *  /home/user/exec

表示每天18-23,每隔30分钟运行一次exec

4.嵌入代码

如何在代码中使用crontab设置程序自动启动接收一个参数init(也可以是其他设置一个函数专门处理init命令。有如下步骤

  1. 通过system函数调用crontab –l > cron.tmp,将当前用户现有的定时计划读取到一个临时文件cron.tmp中。
  2. r的方式打开临时文件,以w的方式打开第二个临时文件crontmp.tmp,读取cron.tmp的,将其与当前任务即将设置的程序的路径比较,若不同添加到crontmp.tmp中,若相同则不添加然后删除cron.tmp文件,将crontmp.tmp重命名为cron.tmp。这是为了(1)不覆盖原有crontab计划(2避免多次init添加多个重复任务。注意:比较路径时,必须确保全都是标准的绝对路径
  3. a的方式打开cron.tmp将要添加的任务追加到文件最后一行
  4. 通过system函数执行crontab cron.tmp将cron.tmp中的命令全部写入crontab计划。
  5. 将临时文件cron.tmp删除。

相关文章:

  • ubuntu 解挂载时提示 “umount: /home/xx/Applications/yy: target is busy.”
  • [笔记] 数据结构-第九章-检索
  • eBPF调研-附上参考资源
  • 人工智能之数学基础:齐次方程组和非齐次方程组的区别
  • java+selenium(资源全备,打开已使用浏览器信息,保留用户信息)
  • Day21:二叉树的深度
  • 知行之桥EDI系统应用程序目录切换指南(Windows与跨平台版)
  • Java-SpringBootWeb入门、Spring官方脚手架连接不上解决方法
  • 使用Three.js渲染器创建炫酷3D场景
  • 74HC04(反相器)和74HC14(反相器、施密特触发器)的区别
  • 【项目】幸运抽奖 测试报告
  • 怎么查看linux是Ubuntu还是centos
  • Compose 实践与探索十五 —— 自定义触摸
  • Python 应用部署云端实战指南 —— AWS、Google Cloud 与 Azure 全解析
  • 学习threejs,使用TextGeometry文本几何体
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part11
  • Springboot各版本与Java JDK的对应关系及JDK商用版本
  • 【JavaWeb学习Day27】
  • 洛谷 P2157 [SDOI2009] 学校食堂
  • C++从入门到实战(六)类和对象(第二部分)C++成员对象及其实例化,对象大小与this详解
  • 南京艺术学院博导、雕塑家尹悟铭病逝,年仅45岁
  • 多个“首次”!上市公司重大资产重组新规落地
  • 巴菲特最新调仓:一季度大幅抛售银行股,再现保密仓位
  • 梅花奖在上海|舞剧《朱鹮》,剧里剧外都是生命的赞歌
  • 专家:家长要以身作则,孩子是模仿者学习者有时也是评判者
  • 商务部:今年前3月自贸试验区进出口总额达2万亿元