Ich möchte einen Prozess wie einen Daemon aus einem Skript ausführen und konfigurieren.
Meine Shell ist unter Cygwin zsh emuliert und der Daemon ist SFK , ein einfacher FTP-Server.
Für das, was hier zählt, kann das Skript startserv.sh
wie folgt verfasst werden:
#!/bin/sh
read -s -p "Enter Password: " pw
user=testuser
share=/fshare
cmd="sfk ftpserv -user=$user -pw=$pw -usedir $share=$share"
$cmd &
Nachdem das Skript ausgeführt wurde startserv.sh
, wird es angehalten (beendet?), Ohne dass eine Eingabeaufforderung angezeigt wird.
CTRL+ Cbeendet sowohl das Skript als auch den Hintergrundjobprozess;
Wenn Sie Enterdas Skript beenden, bleibt der Vorgang im Hintergrund.
Wie auch immer, ich kann es nur über ps
und nicht über sehen. jobs
Wenn ich den Vorgang abschließen möchte, muss ich ein brutales kill -9
Signal senden , was ich zu Gunsten von CTRL+ vermeiden möchte C.
Eine Alternative wäre, das gesamte Skript im Hintergrund auszuführen. 'Wäre', aber der read
Befehl kann die Benutzereingabe nicht abrufen, wenn das Skript ausgeführt wird als startserv.sh &
.
Beachten Sie, dass ich einen kurzlebigen Server benötige, keinen echten Daemon . Das heißt, dass der Serverprozess nach dem Ende des Skripts im Hintergrund ausgeführt werden soll, um einfache interaktive Shell-Aufgaben (mit einem Gast einer virtuellen Maschine) auszuführen. Ich brauche den Prozess, um die Hülle zu überleben. nohup
scheint daher nicht angebracht.
bgproc="$!"
undcommand "$bgproc"
ergreifen Sie dann die entsprechende Aktion. Siehe auch stackoverflow.com/questions/1908610/…