Crontab关闭后台程序吗?

时间:2018-12-14 20:49:01

标签: bash cron background-process

我正在测试一个bash脚本,希望它可以作为cron作业运行,以扫描下载日志并对图像文件执行劳动密集型转换。为了一次运行多个转换,第一个脚本循环浏览下载日志,并将文件名发送到第二个脚本,我将其设置为使用&作为后台进程运行。

脚本对工作良好,但是在完成该过程后,我必须按Enter键以返回命令提示符。当我运行测试时这不是问题,但是我不确定以cron作业运行时这种行为是否会产生后果。

这会是个问题吗?如果是这样,有没有办法关闭从crontab运行第一个脚本的“终端”?

这是我代码的截断形式:

脚本1(由crontab启动):

for i in file1 file2 file3 etc
do
bash /path/to/convert.sh $i &
done
exit 0

脚本2(convert.sh)

fileName=${1?no file given}
jpegName=$(echo $fileName | sed s/tif/jpg/g)
convert $fileName $jpegName
exit 0

感谢您提供的任何帮助/保证!

1 个答案:

答案 0 :(得分:0)

您不需要脚本2。可以将其转换为函数并将其放入script1中。

另一个问题是您以不受控制的方式运行convert.sh。您无法预见将创建多少个进程(后台进程),这可能会导致严重的性能开销。

最后,如果您无法以正常方式结束进程,则可以选择通过发出pkill script1.sh

使用cron再次终止它