Получить время начала процесса независимо от обновлений NTP

Я пытаюсь записать время начала процесса , @reboot с помощью @reboot cronjob. Я использую ps -p $$ -o ltime= настоящее время, но я столкнулся с уловкой.

Моя машина (Raspberry Pi) подключается к сети и отключает обновление NTP после запуска cron и настройки системных часов. Время, возвращаемое lstart изменяется после обновления (что, конечно, имеет смысл).

Проблема в том, что у меня есть два разных времени начала, и он выглядит как мой мониторинг, как будто процесс был перезапущен.

Поскольку указанное время начала изменяется при обновлении NTP-файла, кажется, что существует базовое понятие времени начала, на которое не влияют изменения системных часов (в противном случае он будет продолжать говорить о начале процесса в старом времени). Как я могу получить начальное время от процесса?

Выдержка из моих системных журналов:

 $ grep -e '@reboot' -e 'Time has been' -C 3 /var/log/syslog Apr 6 13:17:04 archer triggerhappy[386]: Error opening '/dev/input/event*': No such file or directory Apr 6 13:17:04 archer kernel: [ 6.721869] usbcore: registered new interface driver brcmfmac Apr 6 13:17:04 archer kernel: [ 6.930684] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: Dec 15 2015 18:10:45 version 7.45.41.23 (r606571) FWID 01-cc4eda9c Apr 6 13:17:04 archer cron[381]: (CRON) INFO (Running @reboot jobs) Apr 6 13:17:04 archer wpa_supplicant[376]: Successfully initialized wpa_supplicant Apr 6 13:17:04 archer dphys-swapfile[385]: want /var/swap=100MByte, checking existing: keeping it Apr 6 13:17:04 archer avahi-daemon[387]: Found user 'avahi' (UID 105) and group 'avahi' (GID 110). -- Apr 6 13:17:15 archer ntpd_intres[587]: DNS 2.debian.pool.ntp.org -> 65.182.224.39 Apr 6 13:17:15 archer ntpd_intres[587]: DNS 3.debian.pool.ntp.org -> 174.123.154.242 Apr 6 13:17:17 archer dhcpcd[403]: wlan0: no IPv6 Routers available Apr 6 13:53:40 archer systemd[1]: Time has been changed Apr 6 13:54:00 archer systemd[1]: Starting user-1000.slice. Apr 6 13:54:00 archer systemd[1]: Created slice user-1000.slice. Apr 6 13:54:00 archer systemd[1]: Starting User Manager for UID 1000... 

Обратите внимание на сдвиг во времени – до этого момента lstart сообщит 13:17:04 но после него сообщает 13:53:27 .

One Solution collect form web for “Получить время начала процесса независимо от обновлений NTP”

Вы можете запросить прошедшее время в секундах:

 ps -p $$ -o etimes= 

Это всегда будет точной и сопоставимой, независимо от того, что система думает о текущем времени.

Вы можете превратить его в неизменное начальное значение, вычитая его из текущего времени безотказной работы (хранящегося в секундах как первое значение в /proc/uptime ):

 echo $(($(cut -d. -f1 < /proc/uptime) - $(ps -p $$ -o etimes=))) 
  • Понимание «vncserver -list» в отношении процессов Xvnc
  • Linux + Solaris, как проверить последний процесс выполнения из списка процессов
  • Показывать пять процессоров, обрабатывающих процессы с `ps`
  • Убийство PGIDs, но proceses возрождаются, как я могу сделать это постоянным?
  • Как я могу предотвратить появление «grep» в результатах ps?
  • Какие процессы используются DRM?
  • Что такое «лидеры сессий» в `ps`?
  • Поиск строки и печать первого столбца первой строки с помощью awk
  • Перевод флагов GNU ps в стандартные флаги
  • Что означает ответ « + выход 1»?
  • Разница между выводами top и ps
  • Linux и Unix - лучшая ОС в мире.