Gdyby ktoś mógł pokazać zarówno KIEDY, jak i GDZIE, byłoby to niesamowite. Mówię to, ponieważ wiem, że istnieją co najmniej 2 sposoby uruchomienia skryptu, który zostanie uruchomiony przed uruchomieniem innych aplikacji (takich jak X11)
Buttink
1
Cały wątek odpowiedzi to bałagan. Format Stack Exchange nie wydaje się najlepiej pasować do tego pytania
Gabriel Fair
1
To jest naprawdę zabawne. Ile może być różnych sposobów?
devios1
Odpowiedzi:
206
W zależności od rodzaju skryptów, które musisz uruchomić. W przypadku usług i tym podobnych powinieneś użyć upstart . Ale dla skryptu użytkownika powinny one być uruchamiane jako skrypty sesji przez gnome! Zajrzyj do System> Preferencje> Aplikacje startowe.
Na marginesie, jeśli potrzebujesz skryptów, które będą uruchamiane przy logowaniu do terminala, możesz dodać je do pliku .bash_login w twoim katalogu domowym.
Dla 14.04 i starszych
Proste polecenie (takie, które nie musi pozostawać uruchomione) może użyć zadania Upstart, takiego jak:
start on startup
task
exec /path/to/command
Zapisz to w .confpliku w /etc/init(jeśli potrzebujesz, aby działał jako root podczas uruchamiania systemu) lub w ~/.config/upstart(jeśli potrzebujesz, aby działał jako użytkownik podczas logowania).
Biorąc pod uwagę sposób działania SO i StackExchange, czy mógłbyś podać przykład skryptu upstart i gdzie będzie on umieszczony? To uczyniłoby to znacznie lepszą odpowiedź. Twój link mówi, że nie jest utrzymywany i spojrzeć na nową książkę kucharską, która jest ogromna. Nie mam pojęcia, od czego zacząć.
Ehtesh Choudhury
2
Co zrobić, jeśli muszę uruchomić polecenie jako root?
dopatraman
1
@dopatraman Odpowiedź stwierdza, że wszystkie procesy z tym są uruchamiane jako root.
AStopher
4
Zaktualizuj tę odpowiedź, aby wyjaśnić, co robić w systemach z systemem systemd zamiast upstart (Ubuntu 15.04+).
3
Ta odpowiedź nie ma dla mnie sensu. Aplikacje wymienione w system->pref->startup applicationsnie można znaleźć /etc/init/ani w ~/.config/upstart. Więc gdzie są zdefiniowane aplikacje startowe?
Blauhirn,
553
Jednym z podejść jest dodanie zadania cron @reboot :
Uruchomienie crontab -epozwoli ci na edycję twojego crona.
Słowo @rebootkluczowe jest dobrą wskazówką, ponieważ nie jest powszechnie znane.
jathanism
12
Miły. Wiesz , kiedy to się uruchomi?
Oli
2
Więc ... to nie zadziałałoby, jeśli straciłem zasilanie, a komputer ponownie się obrócił po przywróceniu zasilania?
Mike Wills
18
@siamii: man 5 crontabmówi, że @rebootjest wykonywany przy starcie (kiedy uruchamiany jest demon cron).
jfs
9
To jest niesamowite. Jak dotąd wydaje się to lepsze niż rc.localponieważ system wydaje się w tym momencie bardziej skonfigurowany (ŚCIEŻKA itp.). Dziwne, że tak trudno jest zadzwonić po uruchomieniu systemu ..
Karthik T
161
Co powiesz na dodanie polecenia /etc/rc.local? będziesz musiał użyć dostępu sudo, aby edytować ten plik.
To najbardziej bezpośrednio odpowiada na pytanie: jak po prostu uruchomić niektóre skrypty podczas uruchamiania systemu. upstart wykonuje bardziej złożone zadanie: uruchamia procesy demona.
Dogweather,
1
Więc upstart uruchamia procesy demona, podczas gdy /etc/rc.local uruchamia skrypty bash?
Donato,
5
Powinien? To już nie działa, prawda?
DaVince
4
Doenst działa z systemem Ubuntu 17.04 systemd
qodeninja
3
Zauważ, że jeśli sam utworzysz ten plik (tak jak ja), będziesz musiał zmienić plik na wykonywalny chmod 755 rc.locali dodać #!/bin/bashdo pierwszego wiersza.
psitae
77
W przypadku wersji 15.04 i nowszych:
Aby uruchomić (krótkotrwałe) polecenie 1 przy uruchomieniu systemd, możesz użyć systemowej jednostki typu OneShot. Na przykład utwórz /etc/systemd/system/foo.servicezawierające:
[Unit]
Description=Job that runs your user script
[Service]
ExecStart=/some/command
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Możesz uruchomić wiele poleceń z tego samego pliku usługi, używając wielu ExecStartwierszy:
[Service]
ExecStart=/some/command
ExecStart=/another/command some args
ExecStart=-/a/third/command ignore failure
Polecenie należy zawsze podawać z pełną ścieżką. Jeśli dowolne polecenie nie powiedzie się, pozostałe nie zostaną uruchomione. -Przed ścieżką opowiada Systemd ignorować status wyjścia niezerową (zamiast uznając je awarii).
W przypadku sesji użytkownika możesz ~/.config/systemdzamiast tego utworzyć jednostkę systemową . Powinno to działać od 16.04 r., Ale nie we wcześniejszych wersjach Ubuntu z systememd (ponieważ te nadal używały Upstart do sesji użytkowników). Jednostkami sesji użytkownika można sterować za pomocą tych samych poleceń, co w przypadku usług systemowych, ale z --userdodaną opcją:
systemctl --user daemon-reload
systemctl --user status foo.service
Składnia powłoki
Zauważ, że w przeciwieństwie do Upstart, systemd nie uruchamia Exec*poleceń przez powłokę. Wykonuje pewne ograniczone rozszerzanie zmiennych i wiele poleceń (oddzielonych przez ;), ale to tyle, jeśli chodzi o składnię podobną do powłoki. W przypadku czegoś bardziej skomplikowanego, na przykład przekierowania lub potoki, wpisz polecenie w sh -c '...'lub bash -c '...'.
czy można ustawić priorytet w pracy? lub określić, że zależy to od uruchomienia innej usługi w pierwszej kolejności?
r3wt 25.04.17
1
@ r3wt tak, są na to różne sposoby. WantedByStosowane tutaj, na przykład, sprawia, że zaczynają gdy multi-user.targetzostanie osiągnięta. Można użyć Before, After, Requires, itd. Patrzman systemd.unit
Muru
@PerlDuck nie jedyne, czego jej brakowało. Dzięki!
muru
Nie ma za co. - Przy okazji, RemainAfterExitzależy to od usługi, którą uruchomisz i jej pożądanego zachowania. Na przykład /bin/df -h<s> będzie </s> powinien mieć RemainAfterExit=no.
PerlDuck
@PerlDuck Nie ma w dftym nic nieodłącznego RemainAfterExit=no. Chyba że chcesz wielokrotnie wykonywać polecenie przy każdym uruchomieniu systemctl start foo.
muru
71
Istnieją różne sposoby automatycznego uruchamiania poleceń:
Dorobkiewicz system będzie wykonać wszystkie skrypty z której znajdzie konfigurację w katalogu /etc/init. Skrypty te będą uruchamiane podczas uruchamiania systemu (lub w odpowiedzi na pewne zdarzenia, np. Żądanie zamknięcia), a więc są miejscem uruchamiania poleceń, które nie wchodzą w interakcje z użytkownikiem; wszystkie serwery są uruchamiane przy użyciu tego mechanizmu.
Skrypt powłoki nazwany .gnomercw katalogu domowym jest automatycznie pozyskiwany przy każdym logowaniu do sesji GNOME. Możesz tam wstawiać dowolne polecenia; zmienne środowiskowe ustawione w tym skrypcie będą widoczne dla każdego programu uruchomionego w sesji.
Pamiętaj, że sesja nie rozpoczyna się, dopóki .gnomercskrypt nie zostanie zakończony; dlatego jeśli chcesz automatycznie uruchomić jakiś długo działający program, musisz dołączyć &do wywołania programu, aby odłączyć go od działającej powłoki.
Opcja menu System -> Preferencje -> Aplikacje startowe pozwala określić, które aplikacje powinny być uruchamiane po rozpoczęciu sesji graficznej (Ubuntu predefiniuje całkiem sporo) oraz dodawać lub usuwać je według własnego gustu. Ma to prawie ten sam cel i zakres .gnomercskryptu, z tym wyjątkiem, że nie musisz znać shskładni (ale nie możesz też użyć żadnej shkonstrukcji programowej).
3) „Ma to prawie ten sam cel i zakres skryptu .gnomerc”, z wyjątkiem tego, że .gnomercnajwyraźniej działa przed załadowaniem Unity i Startup Applicationsnajwyraźniej działa po załadowaniu Unity. Musiałem uruchomić program, który znajduje się na pasku menu Unity, co w tym przypadku zrobiło ogromną różnicę!
Ten Brazylijczyk
1
@ ruda.almeida Dzięki za zwrócenie na to uwagi. Odpowiedź została napisana w czasach sprzed Jedności.
Riccardo Murri
1
sudo update-rc.d myscript.sh defaults, gdzie /etc/init.d/myscript.sh jest twoim skryptem, uruchamia go również podczas uruchamiania.
Dan Dascalescu,
27
$HOME/.config/autostart
Ta lokalizacja zawiera listę aplikacji startowych.
.desktop tutaj można umieścić plik, który zostanie wykonany przy uruchomieniu.
Przykładowy .desktopplik:
Wstawianie i podawanie następującego .desktoppliku :$HOME/.config/autostartchmod +x
Tutaj "</path/to/script>"jest zastąpiony ścieżką do twojego script.sh (zwykle zalecane, aby /usr/local/binmożna go było wykonać bezpośrednio poleceniem powiedz myscriptzastąpiony "</path/to/script>").
Przykładowy przykład script.sh:
#!/bin/bash
<commands to be executed>
exit
Wynik:
.desktopplik zostanie uruchomiony, z $HOME/.config/autostartktórego wykona skryptExec=
Dlatego możesz uruchomić żądany skrypt powłoki podczas uruchamiania!
cron odpowiedź zaimplementowana inna niż najczęściej głosowana
Ta odpowiedź wciąż używa, cronale używa innej metody niż najczęściej głosowana odpowiedź. Działa to od wersji Ubuntu 16.04, ale prawdopodobnie jest obsługiwane znacznie wcześniej. Po prostu zacząłem używać crondo uruchamiania zadań, gdy komputer uruchamia się od 16.04.
Kiedy działa cron?
W komentarzach ktoś zapytał „kiedy oni biegną?”. Możesz powiedzieć w syslog / journalctl:
$ journalctl -b | grep cron
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (pidfile fd = 3)
Jan 02 16:54:40 alien cron[919]: (CRON) INFO (Running @reboot jobs)
Jan 02 16:54:40 alien systemd[1]: Started Run anacron jobs.
Jan 02 16:54:40 alien anacron[949]: Anacron 2.3 started on 2018-01-02
Jan 02 16:54:40 alien anacron[949]: Normal exit (0 jobs run)
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[951]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan 02 16:54:40 alien CRON[985]: (root) CMD ( /usr/local/bin/cron-reboot-cycle-grub-background)
Jan 02 16:54:40 alien CRON[954]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[952]: pam_unix(cron:session): session closed for user root
Jan 02 16:54:40 alien cron[919]: sendmail: Cannot open smtp.gmail.com:587
Jan 02 16:54:40 alien CRON[950]: pam_unix(cron:session): session closed for user root
Jedną z rzeczy, na które należy zwrócić uwagę, jest cronwysłanie wiadomości e-mail o statusie uruchomionych zadań i @rebootzadań uruchomionych, aby wczesny menedżer sieci i poczta e-mail nie były uruchomione, chyba że wprowadzisz sleeppolecenie do skryptu (ów).
Gdzie umieścić swoje skrypty
Umieść swoje skrypty w katalogu /etc/cron.d:
$ ll /etc/cron.d
total 44
drwxr-xr-x 2 root root 4096 Nov 26 19:53 ./
drwxr-xr-x 139 root root 12288 Dec 31 13:58 ../
-rw-r--r-- 1 root root 244 Dec 28 2014 anacron
-rw-r--r-- 1 root root 148 Feb 18 2017 cycle-grub-background
-rw-r--r-- 1 root root 138 Mar 5 2017 display-auto-brightness
-rw-r--r-- 1 root root 460 Nov 26 19:53 nvidia-hdmi-sound
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rw-r--r-- 1 root root 224 Nov 19 2016 touch-vmlinuz
-rw-r--r-- 1 root root 700 Aug 5 11:15 turn-off-hyper-threading
Jak wygląda skrypt?
Oto kilka skryptów skonfigurowanych do uruchamiania każdego rozruchu:
Istnieje wiele różnych sposobów dodawania cronjobs, ale rdzeń wysoko głosowanej odpowiedzi, a twoja odpowiedź jest nadal @reboot.
muru
Alternatywne metody dodawania crontabs należy opublikować na stronie askubuntu.com/q/2368/158442 , która wyraźnie dotyczy dodawania zadań Cron.
muru
1
Pozwolę sobie być innego zdania. W rdzeniu tej odpowiedzi wykorzystano to, crontab -eco niektórzy uważają za jedną z czarnych sztuk ze względu na interfejs podobny do vima. Z drugiej strony odpowiedź ta może spodobać się tym, których mózgi są w pewien sposób okablowane. Nie wszyscy jesteśmy odlewani z tej samej formy. Z drugiej strony ta odpowiedź ma już jeden głos w dół, więc pozwolimy demokracji pójść jej kursem.
WinEunuuchs2Unix
2
Oh proszę. Oboje wiemy, że edytor można zmienić.
muru
@muru Tak prawdopodobnie dlatego, że mnie nauczyłeś, a ja nauczyłem się zmieniać edytora na coś takiego jak nano lub kilka innych CLI. Ale jestem w obozie Gedit. Poza tym crontab -eprzywołuje wspomnienia gwiazdek („*”) na minuty, godziny itp., Dla których zawsze uważałem, że muszę szukać instrukcji w Google. Nadal znajduję używanie /etc/cron.di /etc/cron.dailymój wybór. Zwłaszcza, że odzwierciedla /etc/udev/rules.di /etc/systemd/system-sleepmetody. Wygląda na to, że dobrze pasuje.
WinEunuuchs2Unix
5
W tym celu powinieneś użyć upstart . Upstart jest używany w procesach Ubuntu, które są uruchamiane automatycznie. Jest to ulepszone rozwiązanie, takie jak stare skrypty init.d System-V. Pozwala także na wprowadzenie wstępnych warunków do uruchomienia skryptu (tj. Czy potrzebujesz sieci działającej? Itp.)
Odpowiedzi:
W zależności od rodzaju skryptów, które musisz uruchomić. W przypadku usług i tym podobnych powinieneś użyć upstart . Ale dla skryptu użytkownika powinny one być uruchamiane jako skrypty sesji przez gnome! Zajrzyj do System> Preferencje> Aplikacje startowe.
Na marginesie, jeśli potrzebujesz skryptów, które będą uruchamiane przy logowaniu do terminala, możesz dodać je do pliku .bash_login w twoim katalogu domowym.
Dla 14.04 i starszych
Proste polecenie (takie, które nie musi pozostawać uruchomione) może użyć zadania Upstart, takiego jak:
Zapisz to w
.conf
pliku w/etc/init
(jeśli potrzebujesz, aby działał jako root podczas uruchamiania systemu) lub w~/.config/upstart
(jeśli potrzebujesz, aby działał jako użytkownik podczas logowania).źródło
system->pref->startup applications
nie można znaleźć/etc/init/
ani w~/.config/upstart
. Więc gdzie są zdefiniowane aplikacje startowe?Jednym z podejść jest dodanie zadania cron @reboot :
crontab -e
pozwoli ci na edycję twojego crona.Dodanie do niego takiej linii:
wykona ten skrypt po uruchomieniu komputera.
źródło
@reboot
kluczowe jest dobrą wskazówką, ponieważ nie jest powszechnie znane.man 5 crontab
mówi, że@reboot
jest wykonywany przy starcie (kiedy uruchamiany jest demon cron).rc.local
ponieważ system wydaje się w tym momencie bardziej skonfigurowany (ŚCIEŻKA itp.). Dziwne, że tak trudno jest zadzwonić po uruchomieniu systemu ..Co powiesz na dodanie polecenia
/etc/rc.local
? będziesz musiał użyć dostępu sudo, aby edytować ten plik.źródło
chmod 755 rc.local
i dodać#!/bin/bash
do pierwszego wiersza.W przypadku wersji 15.04 i nowszych:
Aby uruchomić (krótkotrwałe) polecenie 1 przy uruchomieniu
systemd
, możesz użyć systemowej jednostki typuOneShot
. Na przykład utwórz/etc/systemd/system/foo.service
zawierające:Następnie uruchomić:
Zasadniczo jest to po prostu konwersja typowego zadania Upstart na systemowe (patrz Systemd dla użytkowników Upstart ).
Możesz uruchomić wiele poleceń z tego samego pliku usługi, używając wielu
ExecStart
wierszy:Polecenie należy zawsze podawać z pełną ścieżką. Jeśli dowolne polecenie nie powiedzie się, pozostałe nie zostaną uruchomione.
-
Przed ścieżką opowiada Systemd ignorować status wyjścia niezerową (zamiast uznając je awarii).Istotnych:
man 5 systemd.service
W przypadku sesji użytkownika możesz
~/.config/systemd
zamiast tego utworzyć jednostkę systemową . Powinno to działać od 16.04 r., Ale nie we wcześniejszych wersjach Ubuntu z systememd (ponieważ te nadal używały Upstart do sesji użytkowników). Jednostkami sesji użytkownika można sterować za pomocą tych samych poleceń, co w przypadku usług systemowych, ale z--user
dodaną opcją:Składnia powłoki
Zauważ, że w przeciwieństwie do Upstart, systemd nie uruchamia
Exec*
poleceń przez powłokę. Wykonuje pewne ograniczone rozszerzanie zmiennych i wiele poleceń (oddzielonych przez;
), ale to tyle, jeśli chodzi o składnię podobną do powłoki. W przypadku czegoś bardziej skomplikowanego, na przykład przekierowania lub potoki, wpisz polecenie wsh -c '...'
lubbash -c '...'
.1 W przeciwieństwie do długowiecznych demonów.
źródło
WantedBy
Stosowane tutaj, na przykład, sprawia, że zaczynają gdymulti-user.target
zostanie osiągnięta. Można użyćBefore
,After
,Requires
, itd. Patrzman systemd.unit
RemainAfterExit
zależy to od usługi, którą uruchomisz i jej pożądanego zachowania. Na przykład/bin/df -h
<s> będzie </s> powinien miećRemainAfterExit=no
.df
tym nic nieodłącznegoRemainAfterExit=no
. Chyba że chcesz wielokrotnie wykonywać polecenie przy każdym uruchomieniusystemctl start foo
.Istnieją różne sposoby automatycznego uruchamiania poleceń:
Dorobkiewicz system będzie wykonać wszystkie skrypty z której znajdzie konfigurację w katalogu
/etc/init
. Skrypty te będą uruchamiane podczas uruchamiania systemu (lub w odpowiedzi na pewne zdarzenia, np. Żądanie zamknięcia), a więc są miejscem uruchamiania poleceń, które nie wchodzą w interakcje z użytkownikiem; wszystkie serwery są uruchamiane przy użyciu tego mechanizmu.Możesz znaleźć czytelne wprowadzenie do: http://upstart.ubuntu.com/getting-started.html strony podręcznika użytkownika
man 5 init
iman 8 init
podać pełne szczegóły.Skrypt powłoki nazwany
.gnomerc
w katalogu domowym jest automatycznie pozyskiwany przy każdym logowaniu do sesji GNOME. Możesz tam wstawiać dowolne polecenia; zmienne środowiskowe ustawione w tym skrypcie będą widoczne dla każdego programu uruchomionego w sesji.Pamiętaj, że sesja nie rozpoczyna się, dopóki
.gnomerc
skrypt nie zostanie zakończony; dlatego jeśli chcesz automatycznie uruchomić jakiś długo działający program, musisz dołączyć&
do wywołania programu, aby odłączyć go od działającej powłoki.Opcja menu System -> Preferencje -> Aplikacje startowe pozwala określić, które aplikacje powinny być uruchamiane po rozpoczęciu sesji graficznej (Ubuntu predefiniuje całkiem sporo) oraz dodawać lub usuwać je według własnego gustu. Ma to prawie ten sam cel i zakres
.gnomerc
skryptu, z tym wyjątkiem, że nie musisz znaćsh
składni (ale nie możesz też użyć żadnejsh
konstrukcji programowej).źródło
.gnomerc
najwyraźniej działa przed załadowaniem Unity iStartup Applications
najwyraźniej działa po załadowaniu Unity. Musiałem uruchomić program, który znajduje się na pasku menu Unity, co w tym przypadku zrobiło ogromną różnicę!sudo update-rc.d myscript.sh defaults
, gdzie /etc/init.d/myscript.sh jest twoim skryptem, uruchamia go również podczas uruchamiania..desktop
tutaj można umieścić plik, który zostanie wykonany przy uruchomieniu.Przykładowy
.desktop
plik:Wstawianie i podawanie następującego
.desktop
pliku :$HOME/.config/autostart
chmod +x
Tutaj
"</path/to/script>"
jest zastąpiony ścieżką do twojegoscript.sh
(zwykle zalecane, aby
/usr/local/bin
można go było wykonać bezpośrednio poleceniem powiedzmyscript
zastąpiony"</path/to/script>"
).Przykładowy przykład
script.sh
:Wynik:
.desktop
plik zostanie uruchomiony, z$HOME/.config/autostart
którego wykona skryptExec=
Dlatego możesz uruchomić żądany skrypt powłoki podczas uruchamiania!
źródło
Dla prostych rzeczy możesz dodać polecenie w System-> Preferencje-> Sesje wskazujące lokalizację twojego skryptu.
Alternatywnie możesz dodać go do /etc/init.d/rc.local lub zrobić upstart, jeśli jest to coś na niższym poziomie .
Więcej informacji na https://help.ubuntu.com/community/UbuntuBootupHowto
źródło
cron
odpowiedź zaimplementowana inna niż najczęściej głosowanaTa odpowiedź wciąż używa,
cron
ale używa innej metody niż najczęściej głosowana odpowiedź. Działa to od wersji Ubuntu 16.04, ale prawdopodobnie jest obsługiwane znacznie wcześniej. Po prostu zacząłem używaćcron
do uruchamiania zadań, gdy komputer uruchamia się od 16.04.Kiedy działa
cron
?W komentarzach ktoś zapytał „kiedy oni biegną?”. Możesz powiedzieć w syslog / journalctl:
Jedną z rzeczy, na które należy zwrócić uwagę, jest
cron
wysłanie wiadomości e-mail o statusie uruchomionych zadań i@reboot
zadań uruchomionych, aby wczesny menedżer sieci i poczta e-mail nie były uruchomione, chyba że wprowadziszsleep
polecenie do skryptu (ów).Gdzie umieścić swoje skrypty
Umieść swoje skrypty w katalogu
/etc/cron.d
:Jak wygląda skrypt?
Oto kilka skryptów skonfigurowanych do uruchamiania każdego rozruchu:
źródło
@reboot
.crontab -e
co niektórzy uważają za jedną z czarnych sztuk ze względu na interfejs podobny do vima. Z drugiej strony odpowiedź ta może spodobać się tym, których mózgi są w pewien sposób okablowane. Nie wszyscy jesteśmy odlewani z tej samej formy. Z drugiej strony ta odpowiedź ma już jeden głos w dół, więc pozwolimy demokracji pójść jej kursem.crontab -e
przywołuje wspomnienia gwiazdek („*”) na minuty, godziny itp., Dla których zawsze uważałem, że muszę szukać instrukcji w Google. Nadal znajduję używanie/etc/cron.d
i/etc/cron.daily
mój wybór. Zwłaszcza, że odzwierciedla/etc/udev/rules.d
i/etc/systemd/system-sleep
metody. Wygląda na to, że dobrze pasuje.W tym celu powinieneś użyć upstart . Upstart jest używany w procesach Ubuntu, które są uruchamiane automatycznie. Jest to ulepszone rozwiązanie, takie jak stare skrypty init.d System-V. Pozwala także na wprowadzenie wstępnych warunków do uruchomienia skryptu (tj. Czy potrzebujesz sieci działającej? Itp.)
źródło