走る
watch "COLUMNS= ps aux | grep TheProcessYouWatch"
説明:watch 特定の追加の環境変数、つまり COLUMNS を設定します そして LINES .これは env | grep COLUMNS を比較することで簡単に確認できます と watch 'env | grep COLUMNS' .
COLUMNSのとき 設定されています、ps 出力が grep にパイプされている場合でも、出力を 1 行の文字数に切り捨てます。 (または他のもの)。 (ps 、 なぜあなたは私にこれを行うのですか?)。 COLUMNS を強制する watch 以内で空になる のコマンドは ps を作るのに十分です OP (および私) が期待するとおりに動作します。
ところで、 watch を避けるために と grep プロセスが監視対象の出力の一部である場合、[] を追加することを検討してください このように:
watch "COLUMNS= ps aux | grep [T]heProcessYouWatch"
(もちろん、pgrep に慣れることをお勧めします それも。他の回答がこれに役立ちます。)
質問の編集と xzfc の回答で述べたように、この問題は tmux の行の折り返しに関連しているようです。 ps aux | grep [q]uote のドロップイン置換に近いもの 、ユーザー情報が必要ない場合は、次を試してください:
$ pgrep -af [q]uote
392 bash -c sleep 5 && echo quote
399 bash -c sleep 5 && echo second quote
$ watch pgrep -af [q]uote
-a フラグは出力にコマンドライン引数を含めますが、 -f プロセス名だけでなく、コマンド ライン引数も検索できます。
ps 人間が読める出力を生成するユーティリティであり、人間が読めるテキストを grep することに依存するのは悪い考えです。 pgrep myShittyProcess を使用する必要があります ps aux | grep myShittyProcess の代わりに . pgrep pid の裸のリストを生成します。退屈な出力を減らしたい場合は、pgrep を渡すことができます の ps への出力 :
ps -opid,user,args -p `pgrep myShittyProcess`
watch でそのワンライナーを使用するには ' ' で囲む必要があります (" " ではありません) ) 初期のシェル コマンドの置換を防ぐため:
watch 'ps -opid,user,args -p `pgrep myShittyProcess`'