Bash: Stellen Sie einen Job in den Hintergrund und beenden Sie das Protokoll

7

Wie funktioniert die Escape-Funktion, sodass &der erste Befehl im Hintergrund ausgeführt wird?

# foo param1 param2 >> run.out &; tail -f run.out
Paul Tarjan
quelle

Antworten:

16

Lassen Sie einfach das Semikolon fallen:

# foo param1 param2 >> run.out & tail -f run.out
katriel
quelle
6
Es hilft, sich das kaufmännische Und als eine Variante des Semikolons vorzustellen, das es wirklich ist.
Teddy
1

Sie müssen den Hintergrundbefehl in () eingeben.

(ls -R / >>/tmp/list & ); tail -f /tmp/list

Leider ist dies wirklich ein Hintergrund. Sie können% 1 nicht an die PID senden.

TomOnTime
quelle
0

Sie könnten nohup verwenden:

nohup cmd & 

tail -f nohup.out
Stephan
quelle
0

Ich bin auch auf diese Frage gestoßen und habe sie folgendermaßen gelöst:

`foo param1 param2 >> run.out &` ; tail -f run.out

Ich weiß nicht, ob die Semantik anders ist.

Für diesen speziellen Fall ist auch Folgendes nützlich:

foo param1 param2 | tee -a run.out
Steve Bennett
quelle