Skrypt Bash podczas uruchamiania? (Linux)

12

Czy jest jakiś sposób na wykonanie / uruchomienie skryptu bash przy ponownym uruchomieniu (jak na przykład w Debianie / Ubuntu, ponieważ to właśnie mają moje 2 urządzenia w domu)

A także jakieś zalecane przewodniki dotyczące wykonywania zadań CRON? Jestem dla nich zupełnie nowy (ale będą bardzo przydatne)

msmith1114
źródło

Odpowiedzi:

21

W Ubuntu / Debian / Centos możesz skonfigurować zadanie crona do uruchomienia @reboot. Działa to raz podczas uruchamiania systemu. Użyj crontab -e, aby edytować crontab i dodaj wiersz podobny do poniższego przykładu, np

@reboot /path/to/some/script 

Istnieje wiele zasobów dla crona, jeśli ich szukasz. Ta strona ma kilka dobrych przykładów.


źródło
7

Innym typowym sposobem na uruchomienie czegoś podczas rozruchu na wielu platformach * nix jest (lub myślę, że może to zaczynać tracić przysługę - patrz alternatywy ), aby umieścić skrypty w katalogu, który w zależności od konkretnego systemu operacyjnego / dystrybucji może być coś /etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.d, lub podobnych (różne dystrybucje używają różnych poziomów „run”, czyli tam, gdzie liczba pochodzi - patrz link poniżej). Często są one również symbolizowane w plikach lub z plików /etc/init.d, aby ułatwić ich ręczne wykonanie, i biorą argument „start” i / lub „stop” na większości platform * nix, a także „status”, „restart”, itp. na wielu platformach Linux. W takich systemach są one generalnie wykonywane przez init,inittab. W systemach * BSD istnieje inny styl podobnej koncepcji i, jak wspomniano powyżej, istnieje wiele odmian.

W powyższym stylu skrypty w np. /etc/rc2.d(Dla systemu z domyślnym poziomem uruchamiania 2) zwykle zaczynają się od litery Slub K, a następnie od liczby dwucyfrowej. Skrypty rozpoczynające się na literę S są uruchamiane w kolejności leksykograficznej (co przekłada się ogólnie na kolejność numeryczną) podczas uruchamiania, na poziom 2, z argumentem „start”. Podczas zamykania skrypty z prefiksem K są podobnie uruchamiane z argumentem „stop”.

Pliki w /etc/init.d(lub czasami /etc/rc/init.dlub w innych odmianach) są nazywane bez prefiksów S i K lub liczb. Zazwyczaj pliki w różnych katalogach /etc/rc?.d symbolizują dowiązanie symboliczne do rzeczywistych plików, do których często odwołuje się względny prefiks ścieżki ../init.d/.

W różnych systemach istnieją różne narzędzia do zarządzania nimi, a także włączania i wyłączania itd. W systemie IRIX (przynajmniej od IRIX 4, jeśli moja pamięć służy), było to narzędzie o nazwie chkconfig, które nie manipulowało linki, ale które byłyby sprawdzane przez skrypty, aby sprawdzić, czy powinny zostać uruchomione, czy nie. Myślę, że IRIX był pierwszym systemem operacyjnym, który miał coś takiego. Później w niektórych wersjach RedHata, które kiedyś miałem, było narzędzie o tej samej nazwie, ale zachowywało się trochę inaczej, w rzeczywistości zarządzając dowiązaniami symbolicznymi - zobacz, chkconfig(8)co moim zdaniem jest prawdopodobnie tą samą (lub bardzo podobną) wersją jak wtedy użyłem.

W systemie Ubuntu 9.04, do którego mam dostęp, wygląda na update-rc.dto, że skrypt jest uruchamiany.

Jeśli korzystasz z systemu, który korzysta z inittab, możesz także dodawać tam rzeczy bezpośrednio - co może być szczególnie przydatne w przypadku rzeczy, które chcesz uruchomić nie tylko raz przy starcie systemu, ale także aktywnie monitorować (do init), respawnczy kiedykolwiek zawiesić się lub zakończyć. Zobacz dane wyjściowe man inittab(jeśli masz) w systemie, aby uzyskać dodatkowe informacje. I / lub man inititp. Istnieje wiele różnych smaków i nie jestem (obecnie) strasznie obeznany z Debianem lub Ubuntu, więc nie jestem pewien, na co mam cię wskazać, ale mam nadzieję, że daje to kilka punktów wyjścia .

sekcja @reboot w crontob jest dla mnie nowa, ale wydaje się również, że może być użyteczną opcją - choć sugerowałbym skrypty init jako preferowane z wielu powodów. Ale zobacz man 5 crontabo wiele więcej informacji na temat tego, co możesz umieścić w konfiguracji crona oraz w jaki sposób można powiedzieć, aby uruchamiał różne rzeczy i kiedy (w tym zakładając, że wersja crona Vixie / ISC [zobacz historię cron ] z @reboot).

Mam nadzieję, że to pomocne.

Lindes
źródło