GNU/Linux >> Znalost Linux >  >> Linux

Jak změnit pořadí spouštění/zavádění služeb Linuxu?

Řešení 1:

Místo ručního provádění, jak je navrženo v jiných odpovědích, můžete také změnit init skript. Stačí do záhlaví přidat takový řádek:

# chkconfig: 35 90 10

Tím dostanete pokyn chkconfig přidat službu do úrovní běhu 3 a 5 se počáteční pozicí 90 a zabíjecí pozicí 10.

Řešení 2:

Pořadí můžete změnit přejmenováním symbolických odkazů v /etc/rcX.d/, kde x bude vaše úroveň běhu.

Uvidíte spoustu souborů začínajících na Sxx nebo Kxx. S odkazy jsou sledovány během spouštění, zatímco K jsou analyzovány pro vypnutí. Xx zde představuje objednávku.

Ale toto pořadí je nastaveno z nějakého důvodu, takže buďte opatrní při jejich změně. Například. ntpd by se měl spustit až po inicializaci síťového subsystému.

Řešení 3:

Chcete si přečíst něco o vašich runlevelech a adresářích rc.d. Uvnitř adresářů rc.d můžete najít odkazy S a K, jako S20apache K10apache, což je v podstatě to, co nařizuje spouštění/vypínání skriptů.

Na této architektuře se provádějí určité změny, ale většina linuxů ji stále používá.

Řešení 4:

Pokud jste sem dorazili, je pravděpodobné, že máte dvě služby, kde jedna závisí na druhé, ale protože začínají ve špatném pořadí, ta se závislostí se nespustí. Návrhy na úpravu symbolických odkazů jsou informativní, pokud jde o ilustraci toho, jak probíhá spouštěcí sekvence, a fungovaly by v pořádku, dokud někdo neprovedl „chkconfig on“ na vaší službě, kdy by se symbolické odkazy znovu vytvořily tak, jak byly původně. Opravdu se chcete vypořádat s problémem na úrovni init skriptu, což je ve skutečnosti mnohem méně komplikované. Bude také konzistentní napříč různými úrovněmi běhu. Pravděpodobně nebudete muset přidávat řádek "# chkconfig", jak je navrženo v odpovědi 4, protože podobný řádek tam již pravděpodobně bude.

Použiji příklad serveru se systémem Openldap (slapd) s backendem databáze MySQL (mysqld). Konfigurace tohoto páru a důvod, proč byste to mohli chtít, je úplně jiný příběh.

Při bootování se Openldap nespustí, protože závisí na MySQL a spouštěcí sekvence se pokouší spustit před ním - slapd má pozici 27 a mysqld má pozici 64

Příslušné symbolické odkazy v /etc/rc3.d/ jsou

S27slapd -> ../init.d/slapd 
and
S64mysqld -> ../init.d/mysqld

Hledám hodnoty nastavené ve dvou init skriptech:

[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73 

Upravil jsem řádek chkconfig v /etc/rc.d/init.d/slapd, aby měl počáteční pozici vyšší než v /etc/rc.d/init.d/mysqld (vybral jsem 85)

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73

Provedu "chkconfig slapd on" a znovu zkontroluji symbolické odkazy

[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx  1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx  1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd

Nyní, když se tento server spustí, mysqld se spustí před slapd a vše je v pořádku se světem.


Linux
  1. Jak změnit název hostitele v Linuxu

  2. Jak změnit uživatelské jméno v Linuxu

  3. Jak změnit název hostitele v systému Linux

  1. Jak změnit port SSH v Linuxu

  2. Linux – Jak změnit zapomenuté heslo roota?

  3. Jak změnit Shell v Linuxu

  1. Jak změnit název hostitele na Redhat 7 Linux

  2. Jak změnit uživatelské heslo v Linuxu

  3. Jak změním swapovací oddíl v Linuxu?