GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So beschleunigen Sie den Linux-Startvorgang mithilfe von Startpar-Befehlsbeispielen

In einem typischen Szenario werden während des Startvorgangs die Runlevel-Systemstartskripts nacheinander ausgeführt.

Ein bestimmtes Runlevel-Startskript wird nicht ausgeführt, bis das vorherige Skript vollständig ausgeführt wurde. Wenn ein bestimmter Dienst während des Starts aus irgendeinem Grund hängen bleibt, kann es eine Weile dauern, bis das Zeitlimit überschritten wird und mit dem nächsten Startskript fortgefahren wird.

Das Dienstprogramm Startpar wird verwendet, um mehrere Run-Level-Skripts parallel auszuführen. Dies hilft, den Startvorgang Ihres Servers zu beschleunigen.

Das Startpar-Dienstprogramm ist Teil des sysvinit-Pakets.

Die allgemeine Syntax für startpar ist unten angegeben:

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

Das Folgende sind die verschiedenen Optionen von startpar:

  • -p Nummer des parallel laufenden Prozesses.
  • -i Ändern Sie den Gewichtungsfaktor des Prozessblocks. Der Standardwert ist 800.
  • -t Timeout zum Leeren des Puffers eines Skripts, wenn keine Ausgabe erfolgt ist.
  • -T Globales Zeitlimit. Es wird verwendet, um die Pufferausgabe vorheriger Skripte zu leeren .
  • -a Argumente, die allen Skripten zur Verfügung gestellt werden sollen.
  • -M Schaltet startpar in den „make“-Modus.
  • -P Vorherigen Runlevel angeben
  • -N Nächstes Runlevel angeben

Wenn startpar die Run-Level-Skripte ausführt, wird die Ausgabe der Skripte gepuffert, um ein kontrolliertes Schreiben in Protokollierungseinrichtungen zu ermöglichen.

Wenn andere Skripte parallel laufen, wartet es auf den Abschluss des Loggings und schreibt dann die Daten vom Buffer in den Logging-Bereich. Die Optionen –t und –T werden verwendet, um das Löschen dieser Puffer abhängig von der Zeit seit der letzten Ausgabe zu steuern, die im Puffer erfasst wurde.

Auf meinem System habe ich folgende Version von startpar:

# startpar -v
startpar version 0.54

Der Startpar-Befehl kann in einem „Make“-Modus mit der Option –M verwendet werden. In diesem Modus verwendet startpar die folgenden Dateien, um zu entscheiden, wie die Startskripte ausgeführt werden sollen.
/etc/init.d/.depend.start
/etc/init.d/.depend.stop

Hier ist ein Beispiel für eine .depend.start-Datei:

# 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

Im „make“-Modus verwendet startpar die Datei .depend.start, um herauszufinden, welche abhängigen Dienste gestartet werden müssen, um einen bestimmten Dienst zu starten.

Wenn in der obigen Ausgabe startpar im Startmodus mit der Option make ausgeführt wird, werden die abhängigen Skripte zuerst gestartet, bevor die Skripte parallel ausgeführt werden.

Hier ist ein Beispiel, wie das Startpar im Make-Modus während der Systemstartsequenz verwendet werden kann,

# 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"

Im obigen Beispiel wird startpar mit der Gesamtzahl von 4 Prozessen ausgeführt, die parallel mit einem Timeout von 20 Sekunden ausgeführt werden, globales Timeout 3 Sekunden, um den Pufferbereich zu leeren, -M im Make-Modus mit „Start“-Option, um den Start anzuzeigen in der Startsequenz verwendet werden.

Dies wird /etc/init.d/.depend verwenden. start-Datei, um die voneinander abhängigen Skripte zu überprüfen. –P ist der vorherige Runlevel –N ist der neue Runlevel.

Hier ist ein weiteres Beispiel für die Verwendung von startpar, nur um 2 Skripte parallel auszuführen. Sie können dieses Skript auch auf /etc/init.d/rc definieren, um sicherzustellen, dass diese Skripte bei Bedarf parallel während des Systemstarts gestartet werden.

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

In einigen Linux-Distributionen können Sie das System auch so einrichten, dass es die Option startpar in der Datei /etc/init.d/rc verwendet.

Ändern Sie in der rc-Datei einfach den Wert „CONCURRENCY=SHELL“ auf „CONCURRENCY=STARTPAR“, wodurch die Abhängigkeiten automatisch berechnet und die entsprechenden Skripte parallel gestartet werden sollten.

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

Linux
  1. So starten Sie Linux über die Befehlszeile neu

  2. Wie beendet man einen Prozess unter Linux mit dem Befehl?

  3. So kombinieren Sie Ping und Traceroute unter Linux mithilfe von MTR-Befehlsbeispielen

  4. So navigieren Sie in der Linux-Befehlszeile mithilfe der Tastenkombination (Linux Ctrl-Befehlsbeispiele)

  5. renice-Befehlsbeispiele in Linux

So verwenden Sie den Grep-Befehl unter Linux + Nützliche Grep-Beispiele

So erstellen Sie Screenshots unter Linux mit Scrot

30 Top-Befehlsbeispiele für die Überwachung unter Linux

Killall-Befehl in Linux mit Beispielen

So booten Sie in die Linux-Befehlszeile

Wie man einen Prozess unter Linux beendet