Linux-Init-Skript Was bringt 0 <& - &>?

7

Ich möchte meine eigenen init.dSkripte schreiben , um mehrere Dienste zu steuern, die auf meinem LinuxServer ausgeführt werden. Ich bin online auf ein Beispiel gestoßen, das Folgendes enthielt:

nohup $EXEC_SCRIPT 0<&- &> $LOG_FILE & echo $! > $PID_FILE

Von dem, was ich verstehe:

  • nohupFängt das hangupSignal ab
  • $EXEC_SCRIPT ist eine Variable, die den auszuführenden Befehl enthält
  • 0<&- &> Ich bin noch nie darauf gestoßen
  • $LOG_FILEähnlich, $EXEC_SCRIPTenthält jedoch den Pfad der Protokolldatei
  • &beginnt sich $LOG_FILEim Hintergrund anzumelden?
  • $! ist die PID des letzten Hintergrundbefehls
  • >schreibt das Ergebnis von $!an die$PID_FILE

Ich kann es mit diesem Wissen durcharbeiten, aber das 0<&- &>wirft mich völlig ab. Ich mag es nicht, Dinge aufzunehmen, die ich zuerst zumindest teilweise nicht verstehe.

Chris Edwards
quelle

Antworten:

8

Dies sind Weiterleitungen.

  • 0<&- schließt den Dateideskriptor 0 (Standardeingabe).
  • &> leitet sowohl stdout als auch stderr um (in diesem Fall in die Protokolldatei)

Bist du sicher, dass es echovorher keine gab $!? $!würde als Befehl interpretiert werden und höchstwahrscheinlich zu a führen

-bash: 18552: command not found
Choroba
quelle
Sie haben Recht, es gab ein echovorheriges $!Dankeschön für die Erklärung
2

& <- schließt den Dateideskriptor. Grundsätzlich kann die Suche nach diesen kleinen "&" Atomen bei Google jedoch schmerzhaft sein! Hintergrundinformationen finden Sie auf dieser Website zur Bash-Umleitung.

Immer lernen
quelle