GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ausgabe von ps aux | beobachten grep blah in tmux funktioniert nicht?

Ausführen

watch "COLUMNS= ps aux | grep TheProcessYouWatch"

Erläuterung:watch setzt bestimmte zusätzliche env-Variablen, nämlich COLUMNS und LINES . Dies kann leicht durch den Vergleich von env | grep COLUMNS überprüft werden und watch 'env | grep COLUMNS' .

Wenn COLUMNS eingestellt ist, ps kürzt seine Ausgabe auf so viele Zeichen in einer Zeile, selbst wenn die Ausgabe an grep geleitet wird (oder sonst was). (ps , warum tust du mir das an?). Erzwingen von COLUMNS innerhalb von watch leer sein Der Befehl von reicht aus, um ps zu erstellen funktionieren wie OP (und ich) erwartet.

Übrigens, um watch zu vermeiden und grep Prozesse, die Teil Ihrer überwachten Ausgabe sind, sollten Sie erwägen, [] hinzuzufügen so:

watch "COLUMNS= ps aux | grep [T]heProcessYouWatch"

(Natürlich würde ich empfehlen, sich mit pgrep vertraut zu machen zu. Andere Antworten werden dabei hilfreich sein.)


Wie in der Fragebearbeitung und der Antwort von xzfc erwähnt, scheint das Problem mit dem Zeilenumbruch von tmux zusammenzuhängen. Für etwas, das einem Drop-in-Ersatz von ps aux | grep [q]uote näher kommt , wenn Sie keine Benutzerinformationen benötigen, versuchen Sie:

$ pgrep -af [q]uote
392 bash -c sleep 5 && echo quote
399 bash -c sleep 5 && echo second quote

$ watch pgrep -af [q]uote

Die -a Flag sorgt dafür, dass die Ausgabe die Befehlszeilenargumente enthält, während -f lässt Sie die Befehlszeilenargumente sowie nur den Prozessnamen durchsuchen.


ps ist ein Dienstprogramm, das eine für Menschen lesbare Ausgabe erzeugt, und sich darauf zu verlassen, dass für Menschen lesbarer Text erfasst wird, ist eine schlechte Idee. Sie sollten pgrep myShittyProcess verwenden statt ps aux | grep myShittyProcess . pgrep erzeugt eine bloße Liste von PIDs, und wenn Sie eine weniger langweilige Ausgabe wünschen, können Sie pgrep übergeben 's Ausgabe an ps :

ps -opid,user,args -p `pgrep myShittyProcess`

Um diesen Einzeiler mit watch zu verwenden Sie sollten es in ' ' einschließen (nicht " " ), um eine vorzeitige Substitution von Shell-Befehlen zu verhindern:

watch 'ps -opid,user,args -p `pgrep myShittyProcess`'

Linux
  1. 256 Farben in Tmux zum Laufen bringen?

  2. Warum liefert Grep -o -w unter Mac OS X nicht die erwartete Ausgabe?

  3. Linux – Kopfhörer funktioniert nicht Linux Mint 18?

  4. Warum funktioniert `exit &` nicht?

  5. Linux – Hören Sie auf, die Ausgabe eines bestimmten Programms zu beobachten, nachdem Sie den Watch-Befehl verwendet haben?

Vim läuft nicht in Tmux?

Eleganter ps aux | grep -v grep

tmux Strg+B funktioniert nicht

Beobachten Sie die Ausgabe eines Befehls, bis eine bestimmte Zeichenfolge beobachtet wird, und beenden Sie dann

Automatische Wiederholung funktioniert nicht

Beenden Sie die Überwachung der Ausgabe eines bestimmten Programms, nachdem Sie den Befehl watch verwendet haben?