it-swarm.com.de

Einen Befehl als Hintergrundprozess/-service ausführen

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:

  1. Ich möchte, dass der Befehl bei jedem Neustart des Systems im Hintergrund gestartet und ausgeführt wird.
  2. Ich möchte es in der Lage sein, es nach Bedarf zu starten und zu stoppen, genauso wie man es mit 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

12

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.

21
Sorpigal

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 .

24
MattMatt

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

3
Anentropic

Für eine erweiterte Jobsteuerung mit Bash sollten Sie die Befehle jobsbg 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.

1
rahmu

Verwenden Sie Nohup, während Sie die Ausgabe an/dev/null richten

Nohup command &>/dev/null &

0
philip mudenyo