/ / Wie funktioniert das Ausschalten (oder Anhalten, Neustarten usw.), wenn eine Verkn├╝pfung zu systemctl besteht? - debian, systemd

Wie funktioniert das Ausschalten (oder Anhalten, Neustarten usw.), wenn eine Verkn├╝pfung zu systemctl besteht? - debian, systemd

Ich verwende Debian Stretch. Wenn ich es tue file /sbin/reboot (oder ein verwandter Befehl), der besagt, dass er mit einem Symbol verkn├╝pft ist /bin/systemctl Soweit ich wei├č, ohne irgendwelche Parameter.

Wie geht das? systemctl wei├č, dass ich neu starten m├Âchte? Pr├╝ft es argv[0] und kommt ein schalter / fall in den code?

Es funktioniert auch, wenn ich es anderswo laufen lasse (ln --symbolic /bin/systemctl ~/bin/reboot beispielsweise).

Antworten:

1 f├╝r Antwort Ôäľ 1

Pr├╝ft es argv[0] und kommt ein schalter / fall in den code?

Lesen Sie den Code und finden Sie es heraus. Aber ich bin sicher, die allgemeine Antwort lautet: Ja, so etwas.


Dies ist ein bekannter Trick. Nehmen Sie als Beispiel BusyBox. Von Wikipedia:

Typische Computerprogramme haben eine separate Bin├Ąrdatei(ausf├╝hrbare) Datei f├╝r jede Anwendung. BusyBox ist eine einzelne Bin├Ąrdatei, die ein Konglomerat aus vielen Anwendungen ist, auf die jeweils zugegriffen werden kann, indem die einzelne BusyBox-Bin├Ąrdatei mit verschiedenen Namen (unterst├╝tzt durch eine symbolische Verkn├╝pfung oder eine feste Verkn├╝pfung f├╝r jeden unterschiedlichen Namen) auf eine bestimmte Art und Weise mit geeigneten Namen aufgerufen wird Argumente.

Bash ist ein weiteres Beispiel. Von man bash:

Ob bash wird mit dem Namen aufgerufen shversucht es, das Startverhalten historischer Versionen von nachzubilden sh so nah wie m├Âglich und gleichzeitig dem POSIX-Standard entsprechend.

Pr├╝fen /bin/sh in Ihrem Debian-Stretch. Es ist ein Symlink zu (wahrscheinlich) ... dash. Diese Seite erkl├Ąrt:

Bis zu Debian Lenny, dem Standard /bin/sh Schale war bash. Beginnend mit Debian Squeeze wird die Standard-Shell sein dash.