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`'