crontab 执行定时任务失败

遇到的问题:需要通过pyspark执行跑脚本数据,由于数据比较多,因此要分成每天每天的跑,跑一次大概需要1个半小时。因此写了一个定时执行任务,如下所示:

08 13 * * * lechuan && cd /mnt/disk1/home/zhangh/howo_pere/code/explore_data && nohup sh submit.sh get_uid_num_conti.py 3  > log_0825_22 &
08 15 * * * lechuan && cd /mnt/disk1/home/zhangh/howo_pere/code/explore_data && nohup sh submit.sh get_uid_num_conti.py 2  > log_0825_23 &
08 17 * * * lechuan && cd /mnt/disk1/home/zhangh/howo_pere/code/explore_data && nohup sh submit.sh get_uid_num_conti.py 1  > log_0825_24 &

新中的想法是按照上面三行语句执行任务。可是在执行的时候总是只能生成最终的log文件'log_0825_24','log_0825_23','log_0825_22',而且log文件中是空的,况且在hdfs上并没有生成想要的文件。

但是在Linux下手动执行:

nohup sh submit.sh get_uid_num_conti.py 3  > log_0825_22 &

也是可以生成任务的,这个原因找了很久也没有找到。

只能用其他法子:

在explore_data目录下写一个execute.sh脚本,脚本的内容是:

sh submit.sh get_uid_num_conti.py 3  > log_0825_22 

sleep 2h

sh submit.sh get_uid_num_conti.py 2  > log_0825_23 

sleep 2h

sh submit.sh get_uid_num_conti.py 1  > log_0825_24 

然后执行该脚本:

nohup sh execute.sh &

就是想通过sleep命令来分开执行脚本。

后来发现这种sleep的方法太low了,有时候上个任务一个小时就跑完了,下面还在等待。shell有一个更加work的方法:wait

就是

wait是用来阻塞当前进程的执行,直至指定的子进程执行结束后,才继续执行。使用wait可以在bash脚本“多进程”执行模式下,起到一些特殊控制的作用。

代码更改如下:

sh submit.sh get_uid_num_conti.py 3  > log_0825_22 

wait
sleep 15s

sh submit.sh get_uid_num_conti.py 2  > log_0825_23 

wait
sleep 15s
sh submit.sh get_uid_num_conti.py 1  > log_0825_24 
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯拿铁go

你的打赏是我更新最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值