如何在shell脚本中停止一个进程并转到下一个进程



我有一个脚本,可以在卫星和雷达图像联机时下载它们,然后将它们组合成卫星图像动画和雷达图像动画。我创建了两个单独的脚本来从卫星和雷达下载图像。我同时从shell脚本运行这些。

python ./rad/rad_retrieval.py; python ./sat/sat_retrieval.py

卫星和雷达图像每30分钟在线更新一次,因此这两个python脚本将每30分钟下载一次图像,直到我们停止该过程。第2部分提供了使用ImageMagick将每个卫星和雷达图像组合成动画/电影的代码。

# Part 1
echo starting...
python ./rad/rad_retrieval.py; python ./sat/sat_retrieval.py
# Part 2
#combining downloaded satellite images into video
cd /home/Cast/sat_retrieved
echo saving video for satellite images
convert -delay 50 20210516-*.jpg Satellite_retrieved.mp4
echo saving video : Success
#combining downloaded radar images into video 
cp Satellite_retrieved.mp4 /home/Cast/
cd /home/Cast/Radar_retrieved/
echo saving video for radar
convert -delay 50 20210516-*.gif Radar_retrieved.mp4
echo saving video : Success

这是我的脚本,我想在用户输入后停止第1部分,然后转到第2部分,而不停止整个shell脚本。如何做到这一点?

您可以忽略SIGTERM,并为SIGINT设置一个处理程序,以便在其到达父shell时杀死子级。通过这种方式,用户可以简单地点击Ctrl-C并跳过第一部分。

# first part
python ./rad/rad_retrieval.py &
python ./sat/sat_retrieval.py &
trap '' term
trap 'kill 0' int
wait
trap - term int
# second part

最新更新