我正在尝试在 shell 脚本(名为 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 上,您可以chkconfig
[1] 来管理这些事情,将正确的标头添加到您的脚本中,它将自动创建正确的链接,以便脚本将在正确的运行级别启动。
[1] 在 redhat 7 和 CentOS 7 上此工具不管理 systemd 服务
答案2
您可以使用 udev 在硬件更改时执行命令。我不能说更多如何使用它,但它肯定会对您有所帮助。