tmux에서 "ps aux | grep blah" 출력을 보는 것이 작동하지 않습니까?

tmux에서 "ps aux | grep blah" 출력을 보는 것이 작동하지 않습니까?

watch "ps aux | grep myShittyProcess"나는 이것을 tmux 세션에서 실행하려고합니다 . 이 프로세스는 myShittyProcesstmux 세션에서도 시작되었습니다. ps aux감시 명령 없이 작동합니다 . 하지만 시계에 넣자마자 실행이 실패합니다. 이것을 작동시키는 방법은 무엇입니까?

-- 편집하다 -

tmux의 크기를 전체 화면으로 조정하면 작동하는 것으로 나타났습니다. ps출력 래핑 과 관련이 있으며 grep래핑된 컨텍스트 내에서 찾을 수 없습니다.

답변1

질문 편집에서 언급했듯이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프로세스 이름뿐 아니라 명령줄 인수도 검색할 수 있습니다.

답변2

달리다

watch "COLUMNS= ps aux | grep TheProcessYouWatch"

설명: watch특정 추가 환경 변수, 즉 COLUMNS및 를 설정합니다 LINES. 이는 env | grep COLUMNS과 를 비교하여 쉽게 확인할 수 있습니다 watch 'env | grep COLUMNS'.

COLUMNS이 설정되면 출력 ps이 파이프로 연결되더라도 grep(또는 다른 항목으로) 출력을 한 줄의 해당 문자만큼 자릅니다. ( ps, 나 한테 왜 이래?). 의 명령 COLUMNS내에서 강제로 비워두는 것만으로도 OP(및 I)가 예상한 대로 작동하기에 충분합니다.watchps

그런데 시청한 출력의 일부가 되는 것을 방지 watch하고 처리하려면 다음과 같이 추가하는 것을 고려해보세요.grep[]

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

(물론 익숙해지는 것이 좋습니다 pgrep. 다른 답변이 도움이 될 것입니다.)

답변3

ps사람이 읽을 수 있는 출력을 생성하는 유틸리티이며, 사람이 읽을 수 있는 텍스트를 수집하는 데 의존하는 것은 좋지 않습니다. pgrep myShittyProcess대신 사용해야 합니다 ps aux | grep myShittyProcess. pgreppid의 순수 목록을 생성하고 덜 지루한 출력을 원할 경우 pgrep의 출력을 다음으로 전달할 수 있습니다 ps.

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

해당 단일 라이너를 사용하려면 초기 쉘 명령 대체를 방지하기 위해 (not ) watch로 묶어야 합니다 .' '" "

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

관련 정보