ドライバの再起動時に実行されるシェルスクリプト(driver_check.sh)で自動実行を設定しようとしています。
デフォルトでは、私のスクリプトは次のようになります。
#!/bin/bash
echo "Start script"
now=$(date +"%T")
LOGFILE_HOME=/var/opt/mydriver/log/startupFail.log
echo "======== LOG EVENT CHECKING ========" >> $LOGFILE_HOME
echo "DATE: $(date +%Y-%m-%d ) $now" >> $LOGFILE_HOME
echo "------------------" >> $LOGFILE_HOME
for loop in {1..3}
do
echo $loop
echo "Loop $loop" >> $LOGFILE_HOME
now=$(date +"%T")
echo "Current time : $now"
if grep -iq success /var/opt/mydriver/log/driver.log
then
echo "ok"
break
else
if [ $loop = 3 ]
then
#send email
mail -s "Fail to restart/reboot" [email protected]
echo "Fail"
echo "Fail" >> $LOGFILE_HOME
echo "An email has sent>> $LOGFILE_HOME
fi
fi
((loop ++));
sleep 3
done
スクリプトの先頭にこの行を追加してみました。
chmod 755 driver_check.sh
また、ファイルを/etc/init.dに移動しましたが、ドライバを再起動してもスクリプトは自動的には実行されません。うまくいくにはどうすればいいですか?あなたが提供できるアドバイスに心から感謝します。
答え1
/etc/init.dにスクリプトを配置するだけでは、再起動時に実行できません。 Linuxディストリビューションによっては、実行レベルと起動時にスクリプトを実行する方法(init.d、systemd、rc.d...)を確認する必要があります。
Redhat / CentOS < 7では、[1]スクリプトに正しいヘッダーを追加することでこれらを管理でき、スクリプトがchkconfig
正しい実行レベルで開始されるように正しいリンクを自動的に生成します。
[1] このツールは Redhat 7 および CentOS 7 でシステムサービスを管理しません。
答え2
ハードウェアが変更されたら、udev を使用してコマンドを実行できます。使い方について詳しくは話せませんが、確かに役に立ちます。