1
我寫了一個小的bash腳本,每3秒啓動一個程序。這個腳本在啓動時執行,並保存其PID爲pidfile進程文件:如何正確停止shell腳本?
#!/bin/bash
echo $$ > /var/run/start_gps-read.pid
while [ true ] ; do
if [ "$1" == "stop" ] ;
then
echo "Stopping GPS read script ..."
sudo pkill -F /var/run/start_gps-read.pid
exit
fi
sudo /home/dh/gps_read.exe /dev/ttyACM0 /home/dh/gps_files/gpsMaus_1.xml
sleep 3
done
的問題是,我無法通過調用start_gps-read.sh stop
終止shell腳本。在那裏它應該讀取pidfile並停止初始化過程(從啓動開始)。
但是當我打電話stop
,腳本仍然運行:
[email protected]_DataHarvest:~$ sudo /etc/init.d/start_gps-read.sh stop
Stopping GPS read script ...
[email protected]_DataHarvest:~$ ps aux | grep start
root 488 0.0 0.3 5080 2892 ? Ss 13:30 0:00 /bin/bash /etc/init.d/start_gps-read.sh start
dh 1125 0.0 0.2 4296 2016 pts/0 S+ 13:34 0:00 grep start
注:腳本總是爲sudo
執行。
有誰知道如何停止我的shell腳本?
當您使用stop參數運行腳本時,它會覆蓋您的PID文件。它試圖自殺,而不是你以前想要殺死的過程。 – chepner