Ich habe einen Shell-Befehl, den ich im Hintergrund ausführen möchte, und ich habe gelesen, dass dies durch Anhängen eines &
an den Befehl ausgeführt werden kann, der dazu führt, dass er als Hintergrundprozess ausgeführt wird, aber ich brauche mehr Funktionalität und wunderte mich wie geht es weiter:
service Apache2 start
tun kann.Wie kann ich das angehen? Gibt es ein Tool, mit dem ich einen Befehl als Dienst ausführen kann?
Ich bin ein bisschen verloren damit.
Vielen Dank
Sehen Sie sich den Befehl daemon an, mit dem aus beliebigen Prozessen Daemons werden können. Dadurch kann Ihr Skript als Daemon fungieren, ohne dass Sie viel zusätzliche Arbeit erledigen müssen. Der nächste Schritt ist das automatische Aufrufen beim Booten. Um die richtige Vorgehensweise zu kennen, müssen Sie Ihr Betriebssystem (oder für Linux Ihre Distribution) bereitstellen.
UNIX-Systeme können so viele Prozesse gleichzeitig verarbeiten, wie Sie benötigen (öffnen Sie einfach neue Shell-Fenster, wenn Sie sich in einer GUI befinden). Das Ausführen eines Prozesses im Hintergrund ist nur erforderlich, wenn Sie das aktuelle Shell-Fenster für andere Zwecke verwenden müssen Sobald Sie eine Anwendung oder einen Prozess ausgeführt haben, der ständig ausgeführt wird.
Um einen Befehl mit dem Namen command im Hintergrundmodus auszuführen, würden Sie Folgendes verwenden:
command &
Dies ist ein Sonderzeichen, das Sie nach dem Start des Prozesses zur Eingabeaufforderung zurückgibt. Es gibt andere Sonderzeichen, die andere Dinge tun. Weitere Informationen finden Sie hier hier .
Basierend auf diesem Artikel:
http://felixmilea.com/2014/12/running-bash-commands-background-properly/
... ein anderer guter Weg ist mit screen
zB:
screen -d -m -s "my session name" <command to run>
aus dem screen manual :
-d -m
Startbildschirm im getrennten Modus. Dadurch wird eine neue Sitzung erstellt, jedoch keine Verbindung zu ihr hergestellt. Dies ist nützlich für Systemstart-Skripts.
sie können Ihr Terminal schließen, der Prozess läuft weiter (im Gegensatz zu &
).
mit screen
können Sie die Sitzung später auch wieder anfügen
Für eine erweiterte Jobsteuerung mit Bash sollten Sie die Befehle jobs
bg
und fg
betrachten.
Es scheint jedoch, dass Sie nicht wirklich daran interessiert sind, den Befehl im Hintergrund auszuführen. Sie möchten den Befehl beim Start starten. Die Vorgehensweise variiert je nach verwendetem Unix-System. Versuchen Sie jedoch, die rc
-Dateifamilie (/etc/rc.local
beispielsweise auf Ubuntu) zu durchsuchen. Sie enthalten Skripte, die nach dem Init-Skript ausgeführt werden.
Verwenden Sie Nohup, während Sie die Ausgabe an/dev/null richten
Nohup command &>/dev/null &