
드라이버가 다시 시작될 때 실행되는 쉘 스크립트(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를 사용하여 명령을 실행할 수 있습니다. 사용법에 대해 더 자세히 말씀드릴 수는 없지만 확실히 도움이 될 것입니다.