У меня Ubuntu 20.04.2 на хорошем оборудовании с Mate и всеми обновленными пакетами.
Идентификаторы процесса (pid) находятся в диапазоне 800 000 после всего лишь 7 дней безотказной работы.
как определить, какой процесс запускается так часто, что PID становятся такими большими?
Вывод dump-acct
указывает тысячи вхождений файла
, а иногда команды ping
.
Что происходит и как я могу выяснить, что запускает так много процессов?
Какой системный процесс должен запускать файл
и почему?
системный монитор с открытым исходным кодом смотрит выполняет команду / usr / bin / file
каждые N
секунд для обновления. это было источником тысяч вхождений файла
в журнал системного учета.
это было довольно четко проверено путем просмотра 4 циклов обновления и проверки результатов работы dump-acct / var / log / account / pacct
с этим объяснением, вероятно, не было никакого гнусного источника все эти записи файла
.
эта проблема заставила меня отслеживать скорость увеличения номера процесса. это простой сценарий bash для отслеживания скорости pid:
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