#!/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
프로세스를 찾을 수 있습니다.