#!/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的字符串长度限制?
发布于 2022-11-17 05:54:02
正如在man pgrep中所解释的,
用于匹配的进程名仅限于
/proc/pid/stat输出中的15个字符。使用-f选项与完整的命令行/proc/pid/cmdline进行匹配。
“系统解决”有16个字符,因此它不符合这一限制。如果您运行pgrep -f systemd-resolved,您将找到该进程。
https://unix.stackexchange.com/questions/725237
复制相似问题