Jak mogę skonfigurować usługę do uruchamiania podczas uruchamiania?

244

Mam demona, który działa poprawnie, jeśli uruchomię go ręcznie za pomocą servicepolecenia:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

ale nie jest skonfigurowany do automatycznego uruchamiania po ponownym uruchomieniu komputera.

Jak skonfigurować go tak, aby uruchamiał się automatycznie, nawet jeśli nikt nie jest zalogowany na komputerze?

Ricardo Reyes
źródło
@ user154721 Jakie argumenty podałeś update-rc.d, aby autostart działał? Próbowałem różnych opcji, ale nie miałem szczęścia.
BennyTheBen,
Programy autostartu są konfigurowane w autostartmanifestach lub w *.serviceplikach w kilku lokalizacjach, a także w init.dlub crontab. Zobacz: unix.stackexchange.com/a/525845/43233
Noam Manos

Odpowiedzi:

281
sudo update-rc.d minidlna defaults

Powinno to dodać usługę do systemu automatycznego uruchamiania. Ale jeśli dostaniesz:

System start/stop links for /etc/init.d/minidlna already exist.

Wykonaj polecenie

sudo update-rc.d minidlna enable

PS : Aby uzyskać więcej informacji, zajrzyj na stronę podręcznika dla update-rc.d, wpisując polecenieman update-rc.d

LassePoulsen
źródło
7
dzięki, ale co, jeśli otrzymam ten wynik podczas uruchamiania tego polecenia ?:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes
1
jeśli minidlna nie pisze do żadnego pliku dziennika, nie znajdziesz go gdziekolwiek. Czy może się nie powieść, ponieważ po uruchomieniu nie ma połączenia sieciowego? Spróbuj sprawdzić konfigurację, jeśli to możliwe, włącz debugowanie i / lub logowanie, aby dowiedzieć się, co jest nie tak.
LassePoulsen
8
@ RicardoReyes służy sudo update-rc.d -f minidlna removedo usuwania istniejących linków.
Dogweather,
5
Pojawia się poniżej błędu update-rc.d: /etc/init.d/usermanage: plik nie istnieje
Rizwan Patel
2
Też mam ten sam błąd update-rc.d: /etc/init.d/mongod: file does not exist. Potem sudo systemctl enable mongod.servicepracował dla mnie.
odkrywca
36

Czasami musisz uruchomić skrypt podczas uruchamiania, na przykład uruchom konfigurację iptables podczas uruchamiania. Dzięki temu nie musisz uruchamiać skryptu ręcznie przy każdym ponownym uruchomieniu.

Możesz uruchomić skrypt podczas uruchamiania systemu Ubuntu, dodając go do /etc/init.d/rc.localpliku. Spójrz na poniższe kroki.

  1. Otwórz /etc/rc.localplik za pomocą tego polecenia:

    vim /etc/rc.local
    
  2. Dodaj tam skrypt, który chcesz uruchomić podczas procesu rozruchu, na przykład:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. Przejrzyj komentarze zawarte w tym pliku i upewnij się, że wyjście 0 znajduje się na końcu.

  4. Zapisz pliki. A twój skrypt będzie działał podczas rozruchu.

hhlp
źródło
2
Komentarze /etc/init.d/rc.local w Ubuntu 12.04 mówią: „Krótki opis: Uruchom /etc/rc.local, jeśli istnieje”, więc może dodanie skryptu do /etc/rc.local byłoby lepszym pomysłem?
Sanghyun Lee
Czy ta metoda wyda komendę „shutdown” dla usługi, czy po prostu zabije proces podczas zamykania systemu operacyjnego?
Vadim Chekan
Vadim, rc.local jest uruchamiany przy starcie systemu, po wyłączeniu nic się nie osiąga. Proces najprawdopodobniej zostałby zabity przez system operacyjny podczas zamykania.
Weboide,
1
FYI: Różnica między rc.localvs dodając to init, że rc.local jest wykonywany na końcu sekwencji startowej startowych, a nie jako jego części
BobTuckerman
35
  • Aby uruchomić demona podczas uruchamiania:

    update-rc.d service_name defaults
    
  • Usuwać:

    update-rc.d -f service_name remove
    

defaults => domyślne poziomy uruchamiania 2,3,4 i 5

Przykład:

update-rc.d tomcat7 defaults
Lakal Malimage
źródło
1
Gdy wykonam to polecenie, otrzymuję komunikat „System start / stop links dla /etc/init.d/tomcat7 już istnieje”. jednak po ponownym uruchomieniu nie uruchamia się tomcat, zawsze muszę wykonać polecenie „usługa tomcat7 start”.
John Little
w moim przypadku domyślna aktualizacja sudo-rc.d myservice kończy się zawsze bez danych wyjściowych, a usługa nie uruchamia się podczas uruchamiania lub z usługą sudo myservice start, która również kończy się cicho. sudo /etc/init.d/myservice start działa jednak
axk
13

Od wersji Ubuntu 15.10 (odpowiednio. Debian 8 „jessie”) musisz użyć następującego polecenia, aby skonfigurować usługę minidlnado uruchamiania podczas uruchamiania:

sudo systemctl enable minidlna.service

I aby wyłączyć go ponownie od momentu uruchomienia:

sudo systemctl disable minidlna.service

Działa to ze wszystkimi odniesieniami do nazw usług, które można znaleźć ls /lib/systemd/system/*.service.

Tanius
źródło