LINUX.ORG.RU

узнать START процесса не используя ps


0

0

Всем привет.

Есть один девайс c линуксом на борту, платформа ARM. Нужно узнать время старта процесса и убить его если длительность выполнения превышает 30 сек. ps выводит только поля PID USER VSZ STAT COMMAND и все. никаких аргументов для ps не предусмотрено. т.е. ps обрезана.

Каким способом можно еще узнать время запуска процесса? PID можно узнать через ps. А дальше?

Ответ на: комментарий от Sylvia

В status времени нет, скорее, в каком-нибудь stat или statm. Да можно элементарно исходники top посмотреть, чтобы узнать, где он время берет.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Sylvia

Спасибо, но как тут узнать время старта?

например:

cat /proc/511/stat

вывод:
511 (bluetooth) S 1 511 511 0 -1 4194624 345 0 2 0 107 165 0 0 20 0 1 0 2514 2568192 269 4294967295 32768 388528 3196579456 3196575604 1074999316 0 0 4099 24580 3221821604 0 0 17 0 0 0 0 0 0

а где тут время старта? Я думал,что это - 1074999316, но тут 2004 год :)))

ElectroNik ★★
() автор топика
Ответ на: комментарий от Deleted

простой и элегантный вариант )
без копания в файлах

Sylvia ★★★★★
()
Ответ на: комментарий от ElectroNik

не команда а функция, раз уж тему создали в development

man 2 stat

Sylvia ★★★★★
()

Смотри man proc. Там написано как расшифровать /proc/[number]/stat

goose
()
Ответ на: комментарий от Sylvia

нет. хмм, а имело бы смысл. может быть, когда-нибудь
руки дойдут...

# sleep 1000 &
[1] 31441
# pid=`pidof sleep`
# ls -ld /proc/$pid
dr-xr-xr-x 7 root root 0 2010-04-12 14:25 /proc/31441
# sleep 60
# ls -ld /proc/$pid
dr-xr-xr-x 7 root root 0 2010-04-12 14:25 /proc/31441
# echo 7 >>/proc/sys/vm/drop_caches
# ls -ld /proc/$pid
dr-xr-xr-x 7 root root 0 2010-04-12 14:27 /proc/31441

обратите внимание, что время поменялось.

idle ★★★★★
()
Ответ на: комментарий от idle

иными словами. /proc/pid создается только тогда, когда
/bin/ps or whatever туда «смотрит», {a,c,m}time отражают
состояния inode, и не зависят от task->start_time.

кроме того, при нехватке памяти shrink_slab() может почистить
dcache/inodes (как в предыдущем примере), в следующий раз
/proc/pid будет создан заново.

смотреть нужно в /proc/pid/stat, как уже сказали.

idle ★★★★★
()

скомпилируй утилитку timeout и через нее запускай нужный процесс.

sdio ★★★★★
()
Ответ на: комментарий от idle

смотреть нужно в /proc/pid/stat, как уже сказали.

Вот только время в поле starttime отсчитывается от загрузки системы, т.е. где-то еще и момент загрузки надо узнать.

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.