특정 프로그램의 PID를 찾는 방법은 무엇입니까?

특정 프로그램의 PID를 찾는 방법은 무엇입니까?

프로그램 이름과 일치하는 PID를 검색하는 Bash 스크립트를 작성하고 싶습니다(사용하거나 ps ax | grep <PROGRAM>유사한 이름일 수도 있음).Pixelb의 ps_mem스크립트. ps_memRAM 사용량을 평가하려면 쉼표로 구분된 PID 목록(공백 없음)이 필요합니다. 불행히도 프로그램 이름으로 프로세스를 검색하는 유일한 방법은 다음 ps ax | grep <PROGRAM>과 같은 것을 반환하는 것입니다(GitHub의 Atom 텍스트 편집기 예).

 7365 pts/2    S      0:00 /bin/bash /usr/bin/atom /home/fusion809/GitHub/fusion809.github.io
 7367 pts/2    Sl     2:09 /usr/share/atom/atom --executed-from=/home/fusion809/GitHub/fusion809.github.io --pid=7354 /home/fusion809/GitHub/fusion809.github.io
 7369 pts/2    S      0:00 /usr/share/atom/atom --type=zygote --no-sandbox
 7404 pts/2    Sl    69:11 /usr/share/atom/atom --type=renderer --js-flags=--harmony --no-sandbox --lang=en-GB --node-integration=true --enable-delegated-renderer --num-raster-threads=2 --gpu-rasterization-msaa-sample-count=8 --content-image-texture-target=3553 --video-image-texture-target=3553 --disable-accelerated-video-decode --disable-webrtc-hw-encoding --disable-gpu-compositing --channel=7367.0.1287479693 --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd
 7469 pts/2    S      0:02 /usr/share/atom/atom --eval require('/usr/share/atom/resources/app.asar/src/compile-cache.js').setCacheDirectory('/home/fusion809/.atom/compile-cache'); require('/usr/share/atom/resources/app.asar/src/task-bootstrap.js');
10094 pts/2    Sl     0:31 /usr/share/atom/atom --type=renderer --js-flags=--harmony --no-sandbox --lang=en-GB --node-integration=true --enable-delegated-renderer --num-raster-threads=2 --gpu-rasterization-msaa-sample-count=8 --content-image-texture-target=3553 --video-image-texture-target=3553 --disable-accelerated-video-decode --disable-webrtc-hw-encoding --disable-gpu-compositing --channel=7367.1.769162379 --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd
11799 pts/2    S      0:01 /usr/share/atom/atom --eval require('/usr/share/atom/resources/app.asar/src/compile-cache.js').setCacheDirectory('/home/fusion809/.atom/compile-cache'); require('/usr/share/atom/resources/app.asar/src/task-bootstrap.js');
18686 pts/2    Sl     0:02 /usr/share/atom/atom --eval require('/usr/share/atom/resources/app.asar/src/compile-cache.js').setCacheDirectory('/home/fusion809/.atom/compile-cache'); require('/usr/share/atom/resources/app.asar/src/task-bootstrap.js');
31761 pts/6    S+     0:00 grep --colour=auto atom

보시다시피 이는 허용되는 구문과는 거리가 멀습니다 ps_mem. Bash 스크립트의 출력에서 ​​PID를 추출하는 방법이 있습니까? 아니면 Bash 스크립트에서 지정된 프로그램의 PID를 허용 가능한 형식으로 가져오는 방법이 있습니까 ps_mem?

답변1

pidof 명령은 주어진 프로세스 이름에 의해 소개된 PID를 반환합니다.

엔터티에 따르면 프로세스 이름인 잠재적 PID에 해당하는 쉼표로 구분된 PID 목록을 얻으려고 합니다. PIDof 명령은 이 정보를 얻을 수 있지만 공백으로 구분된 PID 목록입니다. tr 명령을 사용하면 출력 pid에서 다른 문자(이 경우 쉼표 명령)로 구분된 공백에 해당하는 문자를 자를 수 있습니다. 다음과 같이 할 수 있습니다:

pidof <process_name> | tr '\ ' ',' 

답변2

pgrep과 tr은 어떻습니까? 마지막 쉼표에 문제가 있는지 확실하지 않습니다.

$ pgrep chrome | tr '\n' ,
1960,1981,1982,1984,1987,2008,2047,2079,2103,2107,2117,2123,2219,4132,4559,

관련 정보