Instrukcja obsługi Jak potwierdzić, czy skrypt autorun.sh faktycznie uruchamia się podczas rozruchu

Scenariusz​


  • Korzystasz z instrukcji Running Your Own Application at Startup i utworzyłeś skrypt autorun.sh w katalogu /tmp/config z uprawnieniami wykonywalnymi (-rwxr-xr-x).
  • Funkcja autorun jest włączona w Panelu sterowania > Sprzęt.
  • Po ponownym uruchomieniu oczekiwane operacje nie są wykonywane. Nie jest jasne, czy:
    • autorun.sh nie został w ogóle wywołany, czy
    • autorun.sh został uruchomiony, ale niektóre polecenia nie powiodły się z powodu problemów z synchronizacją lub różnic w środowisku.
  • Ręczne uruchomienie tego samego skryptu przez SSH działa zgodnie z oczekiwaniami, co utrudnia zidentyfikowanie pierwotnej przyczyny.



Rozwiązanie​


Najbardziej bezpośrednim sposobem potwierdzenia, że autorun.sh uruchamia się podczas rozruchu, jest dodanie polecenia buzzera oraz wpisu do logu na początku skryptu.

  • Jeśli po rozruchu słyszysz sygnał dźwiękowy, autorun.sh został wywołany.
  • Jeśli słyszysz sygnał dźwiękowy, ale główna funkcjonalność nie działa, polecenia w dalszej części skryptu mogą nie powodzić się, ponieważ wymagany interfejs sieciowy, system plików lub usługa nie jest jeszcze gotowa.
Wymagania wstępne
  • autorun.sh jest przechowywany w /tmp/config/autorun.sh.
  • Plik jest wykonywalny: -rwxr-xr-x.
  • Funkcja autorun jest włączona w Panelu sterowania > Sprzęt.

Aby to zaimplementować, najpierw zredukuj autorun.sh do minimalnej, obserwowalnej wersji:

Kod:
#!/bin/bash

# Minimalny dowód wykonania
echo "autorun.sh started at $(date)" >> /tmp/autorun.log
hal_app --se_buzzer enc_id=0,mode=0

Polecenia buzzera​


  • Krótki sygnał: hal_app --se_buzzer enc_id=0,mode=0
  • Długi sygnał: hal_app --se_buzzer enc_id=0,mode=1

Zalecane użycie:

  • Umieść dwa krótkie sygnały na samym początku: oznacza to, że autorun.sh się uruchomił, oraz dwa krótkie sygnały na końcu skryptu autorun.sh.

Kod:
#!/bin/bash

echo "autorun.sh started at $(date)" >> /tmp/autorun.log
hal_app --se_buzzer enc_id=0,mode=0
hal_app --se_buzzer enc_id=0,mode=0

# Twoja właściwa konfiguracja poniżej
sleep 5
# ... twoje polecenia tutaj ...

echo "autorun.sh completed at $(date)" >> /tmp/autorun.log
hal_app --se_buzzer enc_id=0,mode=0
hal_app --se_buzzer enc_id=0,mode=0

Interpretacja wyników​


Uwaga: Systemy QNAP NAS emitują sygnały dźwiękowe w określonych momentach podczas normalnego rozruchu:

  • Sygnał włączenia: Pojedynczy krótki sygnał po podłączeniu zasilania (bardzo wcześnie w trakcie rozruchu, przed uruchomieniem autorun.sh)
  • Sygnał uruchamiania systemu: Pojedynczy krótki sygnał, gdy system operacyjny zaczyna się ładować (przed uruchomieniem autorun.sh)
  • Sygnał gotowości systemu: Zwykle długi sygnał po zainicjowaniu systemu operacyjnego i uruchamianiu usług (po uruchomieniu autorun.sh)

Aby odróżnić sygnały buzzera z autorun.sh od systemowych sygnałów rozruchu, możesz dodać inne kombinacje sygnałów w skrypcie autorun.sh na etapie debugowania.

Ponadto możesz również sprawdzić plik /tmp/autorun.log, aby potwierdzić, czy autorun.sh został wykonany.



Ostrzeżenia​


  • autorun.sh jest uruchamiany z podwyższonymi uprawnieniami podczas rozruchu. Upewnij się, że składnia jest poprawna, aby uniknąć niestabilności systemu.
  • Buzzer potwierdza, że skrypt został wywołany, ale nie gwarantuje, że każde polecenie wewnątrz niego zakończyło się powodzeniem.



Dalsza lektura​