Launchctl - Submit-Befehl statt ausführbar

770
Zocker3333

Ich weiß, dass es möglich ist, den Pfad eines Programms über zu starten

launchctl submit -l label [-p ausführbare Datei] [-o Pfad] [-e Pfad] - Befehl [Argumente]

Kann man statt eines Programms auch einen Befehl übergeben? Sagen wir also, dass launchd "command" in "path" ausführt.

0
Und auf welchen "Befehl" könnten Sie sich genau beziehen? Wenn es sich um eine integrierte Shell handelt, muss eine Shell ausgeführt werden. Wenn eine Shell ausgeführt werden muss, können Sie einfach ein Shell-Skript verwenden. Daniel B vor 9 Jahren 0
@DanielB Ich erstelle ein Programm, das jeden Befehl verwendet, den der Benutzer beim Start ausführen möchte. Das Erstellen eines Shell-Skripts ist dafür eine ziemlich schwierige Problemumgehung Zocker3333 vor 9 Jahren 0
Ich verstehe es nicht Bitte geben Sie ein vollständiges Beispiel für die Verwendung eines "Programms" und ein weiteres Beispiel für die Verwendung eines "Befehls". Daniel B vor 9 Jahren 0
@DanielB Mein Programm hat also eine API, Sie können mein Programm dann mit der Option zum Deaktivieren oder Aktivieren eines Startelements aufrufen. Wenn Sie eines aktivieren möchten, geben Sie einen Befehl an, der dann beim Start ausgeführt werden sollte . Im Grunde bekommt mein Programm einen Befehl und dann muss es diesen Befehl starten, damit er beim Start ausgeführt wird. Ein Beispielbefehl könnte "npm start" sein. Wenn also jemand "./myprogram --enable --command" npm start "aufruft, muss mein Programm" npm start "zum Starten aufrufen. Edit: Natürlich auch mit dem Pfad, dies ist nur ein Beispiel Zocker3333 vor 9 Jahren 0

1 Antwort auf die Frage

1
Zocker3333

Okay, es stellt sich heraus, dass es eigentlich ganz einfach ist. Ich konnte die Übersicht des Befehls einfach nicht lesen. Um einen startd-Dienst zu erstellen, der ausgelöst werden soll, z. B. "mkdir / usr / local / test", müssen Sie nur einen Dienst wie diesen einreichen:

launchctl submit -l my-startup-program mkdir /usr/local/test 

Und Sie können es so entfernen:

launchctl remove my-startup-program