Jak zapobiec automatycznemu uruchamianiu usług Linux?

11

Niedawno przeprowadziłem migrację z systemu Windows do systemu Linux (xubuntu)

Jestem programistą i zainstalowałem wszystko, czego potrzebuję, LAMP. W systemie Windows wyłączałem wszystkie niepotrzebne usługi - nie potrzebuję ciągle działającej usługi Apache lub MySQL. Ilekroć potrzebowałem MySQL, używałem:

net start mysql

Jak zrobić to samo w systemie Linux?

  1. Wyłączyć automatyczne niepotrzebne demony?
  2. Uruchamianie ich tylko wtedy, gdy ich potrzebuję?
Aviv
źródło
3
Myślę, że powinieneś dołączyć dokładną wersję Ubuntu, której używasz. Nowe wersje ubuntu używają upstart, który ma swoje własne problemy.
vtest
Edycja: Używam najnowszej wersji Xubuntu 10.04, ale nie chcę tego używać i GUI, tylko z terminala. Wygląda na to, że @prhq ma coś w swojej odpowiedzi. Co jest na początku?
Awiw
Należy w innym miejscu, zarówno w przypadku błędu serwera, jak i uniksowego. Nadal jednak przydatne.
ripper234

Odpowiedzi:

11

W większości dystrybucji Linuksa możesz ręcznie uruchamiać / zatrzymywać usługi poprzez (jako root lub sudo) uruchamianie następujących poleceń:

# /etc/init.d/apache2 start
# /etc/init.d/mysqld start

# /etc/init.d/apache2 stop
# /etc/init.d/mysqld stop

Które usługi, które są uruchamiane automatycznie, są kontrolowane przez łącza plików w /etc/rc[runlevel].d/. Znajdź swój bieżący poziom pracy, używając polecenia „poziom pracy” jako root

# runlevel
N 2

Który tutaj oznacza runlevel 2 Teraz wystarczy usunąć te pliki z /etc/rc2.d/, których nie chcesz uruchamiać.

Usuwanie apache i MySQL na pulpicie jest zwykle w porządku, ale pamiętaj o usuwaniu innych usług.

hultqvist
źródło
3
Jest to raczej mylące, nawet jeśli powiedziałeś „większość dystrybucji”. Kwalifikowałbym twój przepis jako specyficzny dla dystrybucji.
vtest
Co miałeś na myśli? Mogę tylko myśleć o ArchLinux (ale ci użytkownicy powinni już wiedzieć, co robią). Oczywiście niektóre dystrybucje mają określone narzędzia, ale powyższa technika działa również na nich.
hultqvist
Całkiem dziwne, widzę plik o nazwie S91apache2 w katalogu /etc/rc2.d, myślę, że uruchamia on apache2 ... ale nie mogę znaleźć żadnego pliku dotyczącego MySQL. Gdzie mogę dowiedzieć się o tych automatycznie uruchamiających się demonach?
Aviv
Następnie serwer mysql może nie zostać skonfigurowany do automatycznego uruchamiania. Wygląda na to, że ta strona zawiera dobre wyjaśnienie: yolinux.com/TUTORIALS/LinuxTutorialInitProcess.html
hultqvist
Zauważ, że pod * BSD i drzewem Slackware znajduje się katalog /etc/rc.d/.
new123456
15

W przypadku wersji Ubuntu korzystających z systemd (15.04 i nowsze) użyj:

systemctl disable service

To wystarczy. Spowoduje to wyłączenie usługi i nie uruchomi się ponownie po ponownym uruchomieniu. Aby tymczasowo włączyć, po prostu uruchom usługę. Nie można włączyć .

Aby znaleźć nazwę usługi, użyj

service --status-all

Inne polecenia to:

systemctl start service- Użyj go, aby uruchomić usługę. Nie utrzymuje się po ponownym uruchomieniu

systemctl stop service- Użyj go, aby zatrzymać usługę. Nie utrzymuje się po ponownym uruchomieniu

systemctl restart service - Użyj go, aby ponownie uruchomić usługę

systemctl status service- Pokazuje status usługi. Informuje, czy usługa jest obecnie uruchomiona.

systemctl enable service- Włącza usługę, przy następnym uruchomieniu lub następnym uruchomieniu zdarzenia. Utrzymuje się po ponownym uruchomieniu.

systemctl disable service- Wyłącza usługę przy następnym restarcie lub następnym zdarzeniu stop. Utrzymuje się po ponownym uruchomieniu.

Nandesh
źródło
2
Szkoda, że ​​to nie jest zaakceptowana odpowiedź :). Dziękuję, zupełnie zapomniałem o tym poleceniu.
Nordes
8

Ubuntu 10.04 jest w trakcie przejścia między dwoma systemami zarządzania usługami: SysVinit (tradycyjny system, używany przez większość dystrybucji Linuksa) i Upstart (nowszy system wprowadzany przez Ubuntu i staje się dostępny w coraz większej liczbie dystrybucji).

Dostępne są skrypty zarządzania usługami SysVinit /etc/init.d. Możesz uruchomić usługę za pomocą /etc/init.d/SERVICENAME starti zatrzymać ją za pomocą /etc/init.d/SERVICENAME stop. To, czy usługa jest uruchamiana automatycznie podczas rozruchu, zależy od obecności dowiązań symbolicznych, w /etc/rc?.dktórych ?znajduje się cyfra od 2do 5( poziom uruchamiania ). Najłatwiejszym sposobem zapobiegania automatycznemu uruchamianiu usługi po uruchomieniu jest użycie update-rc.d SERVICENAME disable.

Pliki konfiguracyjne zarządzania usługą Upstart znajdują się w /etc/init. Możesz uruchomić usługę za pomocą start SERVICENAMEi zatrzymać ją za pomocą stop SERVICENAME. Plik konfiguracyjny /etc/init/SERVICENAME.confzawiera linię wskazującą, kiedy należy uruchomić usługę: start on …. Łatwym sposobem wyłączenia tych usług jest zmiana tej linii na start on never and (…). Jeśli nie chcesz edytować pliku, możesz również całkowicie wyłączyć usługę, nie myląc systemu pakowania, zmieniając jego nazwę tak, aby się nie kończyła .conf.

dpkg-divert --add --local --divert /etc/init/foo.conf.disabled --rename /etc/init/foo.conf

Począwszy od Ubuntu 10.04, Apache jest dostarczany ze skryptem SysVinit, a Mysql ze skryptem Upstart.

Gilles „SO- przestań być zły”
źródło
Czy edycja servicename.conf naprawdę jest preferowanym sposobem? Zwłaszcza, gdy aktualizacje mogą teoretycznie zaktualizować te pliki konfiguracyjne i zastąpić zmiany
Masse
@Masse: Nie zawsze jest to preferowany sposób, ale ma tę zaletę, że zawsze działa. Niektóre usługi wczytują plik /etc/defaulti mają tam START_FOOopcję, którą można wyłączyć, ale wiele z nich spodziewa się, że zostaną uruchomione, jeśli zostaną zainstalowane. Aktualizacje nie zastąpią twoich zmian bez pytania, ponieważ są to wszystkie pliki konfiguracyjne.
Gilles 'SO - przestań być zły'
Łał. To wydaje się dużym krokiem wstecz.
Masse
@Masse: Pliki konfiguracyjne powinny być edytowane przez administratora. Ale jeśli nie chcesz tego robić, możesz także użyć dpkg-divertdo zmiany nazwy pliku usługi. Jednak jeśli to zrobisz, nie będziesz mógł wyraźnie uruchomić usługi.
Gilles „SO- przestań być zły”