<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path>
</svg>
<p></p><div class="toc"><h3>Linux命令之Crontab定时任务,利用Crontab定时执行spark任务</h3><ul><li><a href="#LinuxCrontab_8" rel="nofollow">一、Linux命令之Crontab定时任务</a></li><ul><li><a href="#11_Crontab_33" rel="nofollow">1.1 常见Crontab任务</a></li><ul><li><a href="#111_crontab_34" rel="nofollow">1.1.1 安装crontab</a></li><li><a href="#112__39" rel="nofollow">1.1.2 查看定时任务列表</a></li><li><a href="#113__44" rel="nofollow">1.1.3 编辑定时任务</a></li><li><a href="#114__50" rel="nofollow">1.1.4 删除定时任务</a></li><li><a href="#115__55" rel="nofollow">1.1.5 备份定时任务</a></li></ul><li><a href="#12_Crontab_68" rel="nofollow">1.2 Crontab命令​执行时间的网站</a></li><li><a href="#13_crontabl_73" rel="nofollow">1.3 crontabl实例</a></li><li><a href="#14__128" rel="nofollow">1.4 注意:</a></li></ul><li><a href="#JavaLinux_139" rel="nofollow">二、在Java程序中调用Linux命令</a></li><li><a href="#030Spark_150" rel="nofollow">三、每天0点30分执行Spark任务</a></li></ul></div><p></p>
相关内容原文地址:
优快云:Trigl:使用Crontab定时执行Spark任务
思否:浩Coding:Linux命令之Crontab——定时任务
一、Linux命令之Crontab定时任务
crontab命令被用来提交和管理用户的需要周期性执行的任务,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 顺序:分 时 日 月 周
- minute: 表示分钟,可以是从0到59之间的任何整数。
- hour:表示小时,可以是从0到23之间的任何整数。
- day:表示日期,可以是从1到31之间的任何整数。
- month:表示月份,可以是从1到12之间的任何整数。
- week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
- command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
- 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
- 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
- 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
- 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
1.1 常见Crontab任务
1.1.1 安装crontab
1.1.2 查看定时任务列表
1.1.3 编辑定时任务
1.1.4 删除定时任务
1.1.5 备份定时任务
crontab服务操作说明:
- service crond start //启动服务
- service crond stop //关闭服务
- service crond restart //重启服务
- service crond reload //重新载入配置
- service crond status//查看crontab服务状态
1.2 Crontab命令执行时间的网站
https://tool.lu/crontab/
1.3 crontabl实例
每隔2分钟输出当前时间到文件
每周一的凌晨4点备份Crontab到指定目录的以当前日期命名的文件
在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup
每天3-5,17-20每隔30分钟同步一次互联网时间,并且不输出日志到crontab将结果输出到log
每隔两天的上午8点到11点的第3和第15分钟执行command
每个星期一的上午8点到11点的第3和第15分钟执行command
每周六、周日的1:10重启smb
每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
每小时执行/etc/cron.hourly目录内的脚本
1.4 注意:
如果要定义一个定时重启系统的任务,就必须将任务放到/etc/crontab文件,即使在root用户下创建一个 定时重启系统的任务也是无效的。
新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。
当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+%Y%m%d’。
二、在Java程序中调用Linux命令
主要用到两个类Process和Runtime,代码示例如下:
三、每天0点30分执行Spark任务
编写执行Spark任务的Perl脚本:getappinfo.pl:
- 添加定时器任务:每天的0点30分执行getappinfo.pl
添加以下内容:
- 脚本中的Spark程序如下: