Ich muss mehrere Befehle mit ausführen nohup
. Jeder Befehl sollte nach dem vorherigen Befehl ausgeführt werden.
Ich habe diesen Befehl als Beispiel verwendet:
nohup wget $url && wget $url2 > /dev/null 2>&1 &
Dieser Befehl funktionierte jedoch nicht.
Welchen Befehl soll ich für diesen Zweck verwenden?
shell
command-line
nohup
Ehsan
quelle
quelle
Wäre es nicht viel einfacher, Ihre Befehlsliste in einer separaten Shell-Datei, z. B. command.sh, ohne Nohup zu erstellen?
Dann rufst du an:
quelle
Andere haben bereits darüber geantwortet
nohup
. Als praktische Randnotiz: Ich empfehle, solche Dinge innerhalb einerscreen
oder einertmux
Sitzung zu tun . Auf diese Weise können Sie die Verbindung trennen und später wieder herstellen, um die Ausgabe und das Endergebnis anzuzeigen.quelle
Es wäre einfacher so:
Dies kann jedoch zu Problemen führen, wenn die URLs Sonderzeichen enthalten, sodass Sie für eine sicherere Option Folgendes verwenden können:
quelle
sh -c
ist über getrennte Argumente, die über die Positionsparameter zugegriffen werden kann ($0
,$1
, ...). Es gibt keine einfache Möglichkeit, Argumente für das Parsen von Zeichenfolgen richtig in Anführungszeichen zu setzen. Ihr Versuch, Anführungszeichen zu verwenden, schlägt fehl, wenn$url
selbst Anführungszeichen enthalten sind. Versuchen Sie esa='problem"'; sh -c "echo \"$a\""
selbst und sehen Sie - Sie sollten einen Syntaxfehler erhalten, dash -c
versucht wird, auszuführenecho "problem""
.$url
und Weise bemerken und$url2
verwendet werden.