Uruchamiaj program automatycznie przy starcie w systemie Linux Ubuntu [zamknięty]

140

Potrzebowałbym programu do uruchamiania za każdym razem, gdy uruchamiam mój Ubuntu Linux. Musiałbym więc dodać go do mojej listy programów startowych. Tylko jeden problem: musiałbym to zrobić przez terminal.

Matteo Monti
źródło
23
@Flexo Tej odpowiedzi nie ma w żadnym z podanych przez Ciebie linków. +1 do tego pytania i odpowiedzi
Francisco Valdez
2
W rzeczywistości odpowiedź tutaj pochodzi z pierwszego z tych pytań.
Wilson F
4
Aby to zrobić w prosty, przenośny sposób, możesz użyć Cron. Uruchom, crontab -eaby edytować plik crontab użytkownika; dodaj @reboot commanddo uruchomienia commandna każdym rozruchu.
appas
2
Nie wiem, czy to duplikat, czy nie, ale to pierwsze trafienie w Google ..
Vladimir Verleg

Odpowiedzi:

178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

Skrypt powinien teraz rozpocząć się podczas rozruchu. Zauważ, że ta metoda działa również z dowiązaniami twardymi i symbolicznymi ( ln).

Edytować

Na tym etapie procesu rozruchu PATH nie jest jeszcze ustawiona, dlatego ważne jest, aby w całym procesie były używane ścieżki bezwzględne. ALE, jak wskazano w komentarzach Steve'a HHH, jawne zadeklarowanie pełnej ścieżki pliku ( /etc/init.d/filename) dla polecenia update-rc.d nie jest poprawne w większości wersji Linuksa. Na stronie podręcznika dla update-rc.d , drugim parametrem jest skrypt umieszczony w /etc/init.d/*. Zaktualizowany powyższy kod, aby to odzwierciedlić.

Kolejna edycja

Jak wskazano w komentarzach (autorstwa Charlesa Brandta), /filenamemusi to być skrypt inicjalizacyjny. Dostarczono również dobry szablon - https://github.com/fhd/init-script-template .

Kolejny link do innego artykułu, aby uniknąć możliwego gnicia linków (choć byłoby smutne, gdyby GitHub umarł) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

yetAnother Edit

Jak wskazano w komentarzach (autorstwa Russella Yana), Działa to tylko w domyślnym trybie update-rc.d.

Zgodnie z instrukcją update-rc.d, może on działać w dwóch trybach: "maszyny używające trybu starszego będą miały plik /etc/init.d/.legacy-bootordering", w którym to przypadku musisz przekazać sekwencję i konfigurację poziomu działania poprzez argumenty wiersza poleceń.

Równoważny argument ustawiony dla powyższego przykładu to

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .

Dave Lasley
źródło
1
Podobnie jak FYI, opcja „defaults” umieszcza link do uruchomienia skryptu na poziomach uruchamiania 2, 3, 4 i 5. (i umieszcza link do zatrzymania na 0, 1 i 6)
Dave Lasley
5
Właśnie wypróbowałem to w Ubuntu Server 12.04 LTS, ale w 12.04 nie możesz mieć prefiksu /etc/init.d. Po prostu sudo update-rc.d filename defaults.
Steve HHH,
1
@puk Zarówno dowiązania twarde, jak i dowiązania symboliczne będą działać z tą metodą
Dave Lasley
14
Chciałem tylko dodać, że / nazwa pliku w tym przypadku powinna być skryptem inicjującym. Oto szablon do uruchomienia własnego niestandardowego skryptu startowego
Charles Brandt
1
Czytanie tego - unix.stackexchange.com/questions/28679/… - wraz z odpowiedzią będzie pomocne
Arjun Sreedharan