我正在测试一个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
感谢您提供的任何帮助/保证!
答案 0 :(得分:0)
您不需要脚本2。可以将其转换为函数并将其放入script1中。
另一个问题是您以不受控制的方式运行convert.sh。您无法预见将创建多少个进程(后台进程),这可能会导致严重的性能开销。
最后,如果您无法以正常方式结束进程,则可以选择通过发出pkill script1.sh