为什么 pid 号这么大以及运行“file”命令是什么?

为什么 pid 号这么大以及运行“file”命令是什么?

我在良好的硬件上安装了 Ubuntu 20.04.2,并安装了 Mate 和所有更新的软件包。

仅运行 7 天后,进程标识符 (pid) 就已达到 800,000。

我如何确定哪个进程启动如此频繁导致 PID 变得如此大?

的输出dump-acct表示出现了数千次file,偶尔会ping出现命令。

发生了什么事?我怎样才能弄清楚是什么启动了这么多进程?

需要运行哪些系统进程file以及为什么?

答案1

开源系统监视器一瞥/usr/bin/file每秒执行一次命令N进行更新。这是file系统会计日志中数千次出现的根源。

通过运行 Glances 4 个更新周期并与以下输出结果进行验证,这一点非常清楚:dump-acct /var/log/account/pacct

根据这个解释,所有这些条目很可能没有邪恶的来源file

这个问题导致我监控进程数的增长率。这是一个监控 pid 速率的简单 bash 脚本:

loop_cnt=0
loop_cnt_max=10000
sleep_time=60 #5 # (seconds)

ppl=2  # ppl--> processes per loop from this script; remove this many new processes in the rate estimate

pid_cnt=`sysctl -n kernel.ns_last_pid`
let pid_cnt=$pid_cnt-1 # 1st loop only

while [ "$loop_cnt" -le "$loop_cnt_max" ];
 do
     pid_cnt_last=$pid_cnt
     pid_cnt=`sysctl -n kernel.ns_last_pid`
     let delta_pid=($pid_cnt - $pid_cnt_last - $ppl) # get pid delta over the last loop interval
     let pid_rate=$delta_pid/$sleep_time
     pid_rate=`bc <<< "scale=2; $delta_pid/$sleep_time"` # floating point arithmetic
     echo 'pid_cnt=' $pid_cnt ', an increase of' $delta_pid,' over the last' $sleep_time, ' seconds,  pid_rate=' $pid_rate '(pid/s),    cnt = ' $loop_cnt ', and cnt_max = ' $loop_cnt_max
     let loop_cnt=loop_cnt+1
     
     sleep $sleep_time
done

相关内容