Ein Problem bei Ihrem ersten Befehl besteht darin, dass Sie stderr an die Position stdout umleiten (wenn Sie das $ in ein & geändert haben, wie im Kommentar vorgeschlagen) und dann stdout in eine Protokolldatei umleiten, ohne dass dabei das umgeleitete stderr mitgezogen wird . Sie müssen dies in der anderen Reihenfolge tun, indem Sie zuerst stdout an den gewünschten Ort senden und dann stderr an die Adresse senden, an der stdout sich befindet
some_cmd > some_file 2>&1 &
und dann können Sie das & aktivieren, um es in den Hintergrund zu stellen. Auf Jobs kann mit dem jobs
Befehl zugegriffen werden . jobs
zeigt Ihnen die laufenden Jobs und nummeriert sie. Sie könnten dann über die Jobs sprechen, indem Sie ein% gefolgt von der Zahl wie kill %1
oder so verwenden.
Auch ohne die & am Ende des Befehls mit suspendieren können Ctrlz, verwenden Sie den bg
Befehl im Hintergrund zu setzen und fg
sie wieder in den Vordergrund zu bringen. In Kombination mit dem jobs
Befehl ist dies mächtig.
Um den obigen Teil über die Reihenfolge zu klären, schreiben Sie die Befehle. Angenommen, stderr ist die Adresse 1002, stdout ist die Adresse 1001 und die Datei ist 1008. Der Befehl liest von links nach rechts, so dass das erste, was er in Ihnen sieht, ist, 2>&1
was stderr zur Adresse 1001 verschiebt, und dann sieht, > file
welches stdout zu 1008 verschiebt. Es wird nicht alles auf 1001 gezogen und auf 1008 verschoben, sondern es wird einfach auf stdout verwiesen und in die Datei verschoben.
Umgekehrt wird stdout auf 1008 verschoben und dann stderr auf den Punkt, auf den stdout zeigt, ebenfalls 1008. Auf diese Weise können beide auf die einzelne Datei verweisen.
2>$1
soll wohl sein2>&1
.