GNU/Linux >> Znalost Linux >  >> Linux

Jak zrychlit proces spouštění Linuxu pomocí příkladů příkazů Startpar

V typickém scénáři se během zaváděcího procesu spouštěcí skripty na úrovni běhu systému spouštějí jeden po druhém.

Spouštěcí skript konkrétní úrovně spuštění se nespustí, dokud nebude úplně proveden předchozí skript. Pokud určitá služba během spouštění z nějakého důvodu visí, může chvíli trvat, než vyprší časový limit a přejde k dalšímu spouštěcímu skriptu.

Obslužný program Startpar se používá k paralelnímu spouštění více skriptů na úrovni běhu. To pomáhá urychlit proces spouštění vašeho serveru.

Utilita Startpar je součástí balíčku sysvinit.

Obecná syntaxe pro startpar je uvedena níže:

startpar –p par –i iorate –t timeout –T global timeout –a arg prg1 prg2

startpar –p par –I iorate –t timeout –T global timeout –M boot|start|stop

Následují různé možnosti startpar:

  • -p Počet paralelně spuštěných procesů.
  • -i Změňte faktor vážení bloku procesu. Výchozí hodnota je 800.
  • -t Časový limit pro vyprázdnění vyrovnávací paměti skriptu, pokud nedošlo k žádnému výstupu.
  • -T Globální časový limit. Používá se k vyprázdnění výstupu z vyrovnávací paměti předchozích skriptů.
  • -a Argumenty, které mají být poskytnuty všem skriptům.
  • -M Přepněte startpar do režimu „make“.
  • -P Určuje předchozí úroveň spuštění
  • -N Určete další úroveň spuštění

Když startpar spouští skripty na úrovni běhu, výstup skriptů se ukládá do vyrovnávací paměti, aby bylo možné řízený zápis do protokolovacích zařízení.

Pokud paralelně běží další skripty, pak čeká na dokončení logování a poté zapisuje data z bufferu do logovací oblasti. Volby –t a –T se používají k řízení mazání těchto vyrovnávacích pamětí v závislosti na době od posledního výstupu zachyceného do vyrovnávací paměti.

V mém systému mám následující verzi pro startpar:

# startpar -v
startpar version 0.54

Příkaz Startpar lze použít v režimu „make“ pomocí volby –M. V tomto režimu startpar používá následující soubory k rozhodnutí, jak spustit spouštěcí skripty.
/etc/init.d/.depend.start
/etc/init.d/.depend.stop
/etc/init.d/.depend.boot

Zde je příklad souboru .depend.start:

# cat /etc/init.d/.depend.start
TARGETS = halt fbset lvm_wait_merge_snapshot microcode.ctl earlysyslog dbus acpid random purge-kernels reboot network haldaemon boot.clock syslog ford_tso_off Sts splash_early haveged rpcbind multipathd nfs smbfs kbd irq_balancer alsasound mcelog network-remotefs sshd java.binfmt_misc clamd logd gpm ntp single atd clamav-milter canna amavis cups nscd postfix xdm cron smartd
INTERACTIVE = kbd ntp single
network: dbus
haldaemon: dbus acpid
syslog: network earlysyslog
ford_tso_off: network
Sts: network
splash_early: syslog
haveged: syslog random
rpcbind: syslog
multipathd: syslog
nfs: rpcbind
.
.
.
.
mcelog: smbfs
network-remotefs: smbfs haldaemon

V režimu „make“ startpar používá soubor .depend.start ke zjištění, které závislé služby je třeba spustit, aby bylo možné spustit konkrétní službu.

Ve výše uvedeném výstupu, když je startpar spuštěn v režimu start pomocí volby make, jsou závislé skripty spuštěny jako první, než jsou skripty spuštěny paralelně.

Zde je příklad, jak lze startpar použít v režimu make během spouštěcí sekvence systému,

# startpar -p 4 -t 20 -T 3 -M start -P N -R 2
D-Bus already started. Not starting.
Starting acpid                    done
Re-Starting syslog services       done
Starting service at daemon        done
Starting sound driver             done
Starting cupsd                    done
Starting CRON daemon/usr/sbin/cron: can't lock /var/run/cron.pid, otherpid may be 3506: Resource temporarily unavailable
startproc:  exit status of parent of /usr/sbin/cron: 1
                                  done
Starting irqbalance                                                       unused
HAL already started. Not starting.
Starting mcelog... already running                                        done
Setting up network interfaces:
    eth0      device: Intel Corporation 82545EM Gigabit Ethernet Co
    eth0      IP address: 19.86.xxx.xxx/24                                done
    eth1      device: Intel Corporation 82545EM Gigabit Ethernet Co
    eth1      IP address: 19.86.xxx.xxx/24                                done
Setting up service network  .  .  .  .  .  .  .  .  .  .                  done
Hint: you may set mandatory devices in /etc/sysconfig/network/config
Setting up (remotefs) network interfaces:
Setting up service (remotefs) network  .  .  .  .  .  .  .  .  .  .       done
Initializing random number generator                                      done
Starting smartd                                                           unused
Disabling TSO on all interfaces and adding ETHTOOL_OPTIONS to nic config files  done
Re-Starting syslog services              done
Starting haveged daemon                  done
failed_service="alsasound"
skipped_service="irq_balancer smartd"

Ve výše uvedeném příkladu je spuštěn startpar s celkovým počtem 4 paralelně spuštěných procesů s časovým limitem 20 sekund, globálním časovým limitem 3 sekundy pro vyprázdnění oblasti vyrovnávací paměti, -M v režimu make s možností „start“ k označení spuštění. se používá ve startovní sekvenci.

To bude používat /etc/init.d/.depend. start file pro ověření skriptů, které jsou na sobě závislé. –P je předchozí úroveň běhu –N je nová úroveň běhu.

Zde je další příklad použití startpar pouze k paralelnímu spouštění 2 skriptů. Tento skript můžete také definovat na /etc/init.d/rc, abyste zajistili, že se tyto skripty v případě potřeby spouštějí paralelně během spouštění systému.

# startpar -p 4 -t 20 -T 3 -a start /etc/init.d/ypxfrd /etc/init.d/drbd
Starting rpc.ypxfrd              done
Starting DRBD resources:
.
.

Také v některých distribucích Linuxu můžete nastavit systém tak, aby používal volbu startpar v souboru /etc/init.d/rc.

V souboru rc stačí změnit hodnotu „CONCURRENCY=SHELL“ na „CONCURRENCY=STARTPAR“, což by mělo automaticky vypočítat závislosti a spustit příslušné skripty paralelně.

# vi /etc/init.d/rc
CONCURRENCY=STARTPAR

Linux
  1. Jak restartovat Linux pomocí příkazového řádku

  2. Jak zabít proces v Linuxu pomocí příkazu?

  3. 5 Praktické příklady příkazů linuxové fixační jednotky

  1. Jak kombinovat Ping a Traceroute v Linuxu pomocí příkladů příkazů MTR

  2. Jak se pohybovat v příkazovém řádku Linuxu pomocí klávesové zkratky (Příklady příkazů Linux Ctrl)

  3. Příklady použití příkazu dmsetup v Linuxu

  1. Jak změnit prioritu procesu pomocí příkladů Linux Nice a Renice

  2. Příklady příkazů kill v Linuxu

  3. Příklady příkazů pkill v Linuxu