【发布时间】:2021-06-09 22:27:39
【问题描述】:
对于给定的地图,我想自动化以下过程:
- 启动 OSRM 服务器
- 做一些请求
- 杀死服务器
手动操作很容易,但我面临单线程问题,因为 OSRM 服务器和请求是同时进行的。然后可以使用 ps aux 并提取进程 ID 来完成杀戮阶段。
我有以下 bash 脚本
OSM=sherbrooke.osm.pbf
OSM_NAME=`basename $OSM`
OSRM=`echo $OSM_NAME | cut -d "." -f 1`".osrm"
cleanUp(){
echo Cleaning
rm -f $OSM_NAME
rm -f $OSRM*
}
startOSRMserver(){
echo Creating OSRM file
cp $OSM .
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-extract -p /opt/car.lua /data/$OSM_NAME
if test -f "$OSRM"
then
echo Creating OSRM server
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-partition /data/$OSRM
docker run -t -v "${PWD}:/data" osrm/osrm-backend osrm-customize /data/$OSRM
docker run -t -i -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld /data/$OSRM
echo RUNNING
else
echo "Error while creating OSRM file"
fi
}
cleanUp
startOSRMserver
在命令行中启动时效果很好。但是,一旦我尝试使用 & 在后台发送它,OSRM 服务器就不再可用该消息
unable to setup input stream: unable to set IO streams as raw terminal: interrupted system call
【问题讨论】: