pgrep이 systemd-resolved를 찾을 수 없는 이유는 무엇입니까?

pgrep이 systemd-resolved를 찾을 수 없는 이유는 무엇입니까?

#!/usr/bin/env bash
echo "pgrep not finding systemd-resolved has bitten many times."
if [ -z $(pgrep systemd-resolved) ]; then 
  echo -e "systemd-resolved not found by pgrep, trying another way.\n"; 
  ps aux | egrep -i '(DNS|HOST|DH|RESOLV|systemd-resolved)' | egrep -v 'grep -E'; 
fi;
systemd-resolved not found by pgrep, trying another way:    
systemd+     **914**  0.0  0.0  26196  4048 ?        Ss   Nov12   0:02 /lib/systemd/**systemd-resolved**
rjt        73300  0.0  0.0   9228  2160 pts/2    S+   23:02   0:00 grep -E --color=auto -i (DNS|HOST|DH|RESOLV|systemd-resolved)

저는 다양한 연령대의 다양한 시스템에서 작업해 왔습니다. 백엔드 이름 확인 시스템과 이름 확인자가 다루는 내용을 이해해야 합니다. 그래서 나는 종종 pgrep을 사용하여 모든 DNS 관련 프로세스를 찾습니다.

pgrep의 문자열 길이 제한인 것 같나요?

답변1

설명된 대로man pgrep,

일치에 사용되는 프로세스 이름은 출력에 나타나는 15자로 제한됩니다 /proc/pid/stat. -f전체 명령줄을 일치시키려면 이 옵션을 사용합니다 /proc/pid/cmdline.

"systemd-resolved"에는 16자가 있으므로 이 제한을 위반합니다. 실행하면 pgrep -f systemd-resolved프로세스를 찾을 수 있습니다.

관련 정보