使用crontab设置程序自启动
1.功能和作用
Crontab是Linux系统中的一款定时任务调度器,可以帮助我们在指定的时间周期性地执行某些任务。它由cron daemon来执行,该守护进程会定期检查用户的crontab文件,并根据文件中的设置来运行相应的脚本、命令。
Crontab的主要作用是让用户能够自动化地执行一些重复性的任务,而不需要手动去运行这些任务。通过设置crontab,用户可以指定任务的执行时间、执行频率以及要执行的脚本、命令。
其意义在于提高工作效率和便利性,同时实现一些需要长期维持的任务进程由于意外导致终止的自动重启,比如:
- LAC server 端自动启动
- 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定时规则
命令由两部分组成:定时规则 脚本路径
定时规则:* * * * * 五个位置分别表示分、时、日、月、周
以行为单位,一行是一个计划,取值范围:
- 分:0-59
- 时:0-23
- 日:1-31
- 月:1-12
- 周:0-7 -- 0和7表示星期天
四个符号:
- *:表示取值范围中的每一个数字
- -:表示连续区间
- /:表示每多少个
- ,:表示多个值
示例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命令。有如下步骤:
- 通过system函数调用crontab –l > cron.tmp,将当前用户现有的定时计划读取到一个临时文件cron.tmp中。
- 以r的方式打开临时文件,以w的方式打开第二个临时文件crontmp.tmp,读取cron.tmp的每行,将其与当前任务即将设置的程序的路径比较,若不同则添加到crontmp.tmp中,若相同则不添加。然后删除cron.tmp文件,将crontmp.tmp重命名为cron.tmp。这是为了(1)不覆盖原有的crontab计划(2)避免多次init添加多个重复任务。注意:比较路径时,必须确保全都是标准的绝对路径。
- 以a的方式打开cron.tmp,将要添加的任务追加到文件最后一行。
- 通过system函数执行crontab cron.tmp,将cron.tmp中的命令全部写入crontab计划。
- 将临时文件cron.tmp删除。