Isso salva o timestamp e o último PID para arquivar cada segundo no Bash:
if [ -r /proc/sys/kernel/ns_last_pid ]
then
while true
do
while read
do
if [ "$REPLY" != "$old" ]
then
printf '%(%s)T %d\n' -1 "$REPLY"
old="$REPLY"
fi
done < /proc/sys/kernel/ns_last_pid
read -t 1 || true
done > pids.log
fi
Problemas:
- Não tenho certeza se
ns_last_pid
é o número correto. A documentação não está clara para mim:The last pid allocated in the current (the one task using this sysctl lives in) pid namespace.
-
/proc/sys/kernel/ns_last_pid
é apenas disponível no Linux 3.3 e mais recente -
POSIX
read
não tem a opção-t
. - Não é possível usar
sleep
,cat
ou outros não-incorporados, pois eles usariam PIDs adicionais.