2017-06-07 3 views
1

Ich versuche, einen sehr langen Grep-Scan durch meine Dateien durchzuführen. Da Screen nach der Ausführung geschlossen wird, versuche ich in eine Protokolldatei zu schreiben, um die Ausgabe von grep zu speichern. Der folgende Befehl erschien:Grep in Bildschirm nicht speichern Ausgabe in Logfile

screen fgrep "needle" /mnt/Volume_volume/haystack/* >> /mnt/Volume_volume/log.txt 

Leider ist die Protokolldatei leer. Was schief gelaufen ist? Wird die Ausgabe des Bildschirms anstelle von grep gespeichert? Wie behebe ich das?

Antwort

4

Der von Ihnen geschriebene Befehl bedeutet: Führen Sie screen fgrep "needle" /mnt/Volume_volume/haystack/* aus und hängen Sie das Ergebnis dieses Befehls an die Datei /mnt/Volume_volume/log.txt an. Und der Bildschirm zeigt auf seiner Ausgabe, so dass Sie in der Protokolldatei erhalten.

Wenn Sie wirklich Bildschirm verwenden möchten, wäre der richtige Befehl so etwas wie dieses:

screen bash -c 'fgrep "needle" /mnt/Volume_volume/haystack/* >> /mnt/Volume_volume/log.txt' 

aber ich vermute einfach:

nohup fgrep "needle" /mnt/Volume_volume/haystack/* >> /mnt/Volume_volume/log.txt & 

auch für Sie funktionieren würde.