Raspberry PiでPythonスクリプトがクラッシュするのを防ぐためにシェルスクリプトを作成したいと思います。このPythonスクリプトは再起動時に自動的に起動されますが、時には実行中にクラッシュします。
私の現在のシェルスクリプトは次のとおりです。
#!/bin/sh
COMMAND='python home/pi/projects/mypythonscript.py'
LOGFILE=restart.txt
writelog() {
now=`date`
echo "$now $*" >> $LOGFILE
}
writelog "Starting"
while true ; do
$COMMAND
writelog "Exited with status $?"
writelog "Restarting"
done
このシェルスクリプトを使用して、2つの別々のスクリプトがクラッシュするのを防ぐために2つのコマンドラインを作成できるかどうかを尋ねたいと思います。それとも、2番目のPythonスクリプト用の新しいシェルスクリプトファイルを作成する必要がありますか?
次のように修正しようとしています。
#!/bin/sh
COMMAND1='python home/pi/projects/mypythonscript1.py'
COMMAND2='python home/pi/projects/mypythonscript2.py'
LOGFILE=restart.txt
writelog() {
now=`date`
echo "$now $*" >> $LOGFILE
}
writelog "Starting"
while true ; do
$COMMAND1
$COMMAND2
writelog "Exited with status $?"
writelog "Restarting"
done
この修正は効果がありますか?私はLinux(debian)プラットフォームに初めて接する人なので、アドバイスをいただきありがとうございます。
ベストアンサー1
systemdを使用している場合は、各コマンドのサービスを作成し、システムがクラッシュしたときにそれを再起動させることができます。
それは次のとおりです。
[Unit]
Description='description of script'
[Service]
ExecStart=/path/too/script
Restart=always
[Install]
WantedBy=multi-user.target
その後、それを挿入して/etc/systemd/system
実行してsystemctl daemon-reload
サービスを開始できます。再起動後も起動します。