Uzyskiwanie skryptu do uruchomienia podczas rozruchu, a nie przy logowaniu

11

Jak mogę uruchomić określony skrypt (najlepiej nie jako superużytkownik) przy każdym uruchomieniu komputera, ale przed zalogowaniem. Może to być ostatnia rzecz, którą można uruchomić przy starcie systemu. Chcę po prostu, aby skrypt działał, nawet jeśli żaden użytkownik się nie zaloguje.

Malabarba
źródło
1
@bruce spójrz na to -> askubuntu.com/questions/9382/…
hhlp
1
Możesz użyć upstart lub cron lub prawdopodobnie całą masę innych metod. Jedną ważną rzeczą jest wiedzieć, jak również wcześnie to może działać. Np. Czy potrzebuje konkretnego systemu plików do zamontowania, czy X musi być uruchomiony, czy potrzebuje DBusa, czy potrzebuje sieci - lub bardziej ogólnie: czy potrzebuje jakichkolwiek zasobów?
JanC
@JanC: Tak, tak naprawdę potrzebuje prawie wszystkiego, o co prosiłeś (z wyjątkiem X), dlatego chciałbym, aby była to ostatnia rzecz do uruchomienia. Naprawdę nie ma też powodu, aby uruchamiać go wcześniej.
Malabarba
@hhlp: Fajnie, dzięki. Ale jak wcześnie skrypt zostanie uruchomiony, jeśli użyję tej metody? Jak wspomniałem powyżej, najlepiej, jeśli jest to jedna z ostatnich rzeczy (przed zalogowaniem).
Malabarba
Cóż, logowanie nie wymaga pracy w sieci, chyba że chcesz zalogować się do serwera terminali i / lub masz swój $ HOME w udziale sieciowym ... ;-)
JanC

Odpowiedzi:

8

Poleciłbym użyć cron. Specjalna wartość czasu @rebootspowoduje odrodzenie pracy przy każdym ponownym uruchomieniu jako użytkownik. Na przykład uruchom crontab -ei użyj:

@reboot /home/yourself/bin/some_script_to_run

Aby uzyskać więcej informacji na temat specjalnych formatów czasu, zobacz man 5 crontab

Kees Cook
źródło
Dzięki, wydaje się to dość łatwe. To nie zależy od tego, który użytkownik tworzy cronjob, prawda? Działa na końcu rozruchu niezależnie od logowania?
Malabarba
Zależy to całkowicie od tego, kto utworzył cronjob - będzie on działał jako ten użytkownik. Ale nie zależy od nich, aby się zalogować.
Kees Cook
Pamiętaj, że uruchamia to skrypt podczas uruchamiania demona cron, więc możliwe jest, że inny system, którego możesz potrzebować, nie jest jeszcze gotowy.
PhoneixS
4

Jedną z możliwości jest użycie Upstart. Pozwala to określić, kiedy chcesz uruchomić skrypt pod względem zależności, np. „Kiedy systemy plików są zamontowane, a interfejs sieciowy eth0działa i działa”. Utwórz plik /etc/init/bruce_script.conf(musisz utworzyć plik jako root) zawierający coś takiego:

description "Bruce's boot script"
start on filesystem and net-device-up IFACE=eth0
task
exec su -c '/home/bruce/script' bruce

Aby uzyskać więcej informacji, zapoznaj się z dokumentacją wstępną , w szczególności ze init(5)stroną podręcznika, aby uzyskać listę tego, co można umieścić w tym pliku konfiguracyjnym.

Gilles „SO- przestań być zły”
źródło
Czy istnieje lista zdarzeń upstart, które można wykorzystać?
słońce
@Markus: nie o tym wiem. Standardowe zdarzenia mają stronę podręcznika w sekcji 7 (więc dpkg -L upstart |grep /man7/), i możesz spojrzeć na zdarzenia emitowane przez i używane jako wyzwalacze w istniejących skryptach w /etc/init.
Gilles „SO- przestań być zły”