2014-09-10 170 views
1

我的应用程序从SFTP获取文件并开始处理它。我有一个cron作业,它被设置为5分钟。假设文件到达SFTP,拉动操作获取文件并开始处理其中的记录.Howerver处理时间更是如此,5分钟后cronjob再次拉第二个文件,发现第一个文件正在处理并暂停。处理Cron作业

如何处理这种情况。 请帮助。

+1

如果你不能改变你的cron作业不停止,那么你的程序应该在处理之前将文件移动到其他地方,我想 – Leo 2014-09-10 12:15:42

+0

你应该有一些标志来处理这些情况。例如,你可以在'/ tmp/myscript'中创建一个虚假的空文件,一旦第一个cronjob完成,它就会被删除。 – fedorqui 2014-09-10 13:28:47

回答

0

如果您不能绝对确定它们的运行时间不会超过它们之间的时间间隔,请不要对应用程序使用cron作业。使用睡眠!

#!/bin/bash 
while true 
do 
    echo "Press [CTRL+C] to stop.." 
    get_files_from_sftp 
    process_files 
    sleep 5m 
done 

@狮子座的建议可能无法工作,因为我们没有对您的申请足够的细节,它可能不能够并行运行多次。但试试看吧。

@ fedorqui的建议也不错。使用mktemp创建唯一的临时文件,或将pid文件放入/var/run/*