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 jobsBefehl zugegriffen werden . jobszeigt Ihnen die laufenden Jobs und nummeriert sie. Sie könnten dann über die Jobs sprechen, indem Sie ein% gefolgt von der Zahl wie kill %1oder so verwenden.
Auch ohne die & am Ende des Befehls mit suspendieren können Ctrlz, verwenden Sie den bgBefehl im Hintergrund zu setzen und fgsie wieder in den Vordergrund zu bringen. In Kombination mit dem jobsBefehl 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>&1was stderr zur Adresse 1001 verschiebt, und dann sieht, > filewelches 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>$1soll wohl sein2>&1.