Вы можете использовать bc
, чтобы объединить две команды в ответе моба и узнать, сколько секунд прошло с начала процесса:
echo `date +%s` - `stat -t /proc/<pid> | awk '{print $14}'` | bc
редактирование:
От скуки в ожидании запуска длинных процессов вот что получилось после нескольких минут возни:
#file: sincetime
#!/bin/bash
init=`stat -t /proc/$1 | awk '{print $14}'`
curr=`date +%s`
seconds=`echo $curr - $init| bc`
name=`cat /proc/$1/cmdline`
echo $name $seconds
Если вы поместите это на свой путь и назовете это так:
с тех пор
будет напечатана командная строка процесса и секунды с момента его запуска. Вы также можете указать это на своем пути:
#file: greptime
#!/bin/bash
pidlist=`ps ax | grep -i -E $1 | grep -v grep | awk '{print $1}' | grep -v PID | xargs echo`
for pid in $pidlist; do
sincetime $pid
done
И чем, если вы запустите:
greptime <pattern>
где шаблонами является строка или расширенное регулярное выражение, он будет распечатывать все процессы, соответствующие этому шаблону, и секунды с момента их запуска. :)