да, слишком старые и все же слишком тяжелые вещи. Я попытался с помощью предложенного выше метода "stat", но что, если у меня вчера был "touch" -ed каталог PID proc? Это означает, что мой годовалый процесс показан со вчерашней отметкой времени. Нет, не то что мне нужно :(
В более новых, это просто:
ps -o etimes -p <PID>
ELAPSED
339521
так просто. Время присутствует в секундах. Делай то, что тебе нужно.
С некоторыми старыми коробками ситуация сложнее, потому что времени нет. Можно полагаться на:
ps -o etime -p <PID>
ELAPSED
76-03:26:15
который выглядит немного странным, поскольку он находится в формате дд-чч: мм: сс. Не подходит для дальнейшего расчета. Я бы предпочел это в считанные секунды, поэтому я использовал это:
ps -o etime -p <PID> --no-headers | awk -F '(:)|(-)' 'BEGIN{a[4]=1;a[3]=60;a[2]=3600;a[1]=86400;s=0};{for (i=NF;i>=1;i--) s=s+a[i]*$i}END{print s}'
339544