드라이버를 다시 시작할 때 스크립트를 자동으로 실행하는 방법은 무엇입니까?

드라이버를 다시 시작할 때 스크립트를 자동으로 실행하는 방법은 무엇입니까?

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

관련 정보