Получить время начала процесса независимо от обновлений 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=))) 
  • Как я могу привязать strace к процессу, который не находится в выходе ps?
  • Понимание «vncserver -list» в отношении процессов Xvnc
  • Перевод флагов GNU ps в стандартные флаги
  • вывод ps отличается при запуске из командной строки и скрипта
  • Как получить pid для последнего фонового приложения
  • Почему `htop` показывает больше процессов, чем` ps`
  • Как найти идентификатор процесса команды, запущенной в другом терминале?
  • Почему значение VSIZE в верхней части отличается от значения VSZ (размер виртуального набора) в ps?
  • Получает ли этот диспетчер процесс зомби?
  • Как определить, какая среда рабочего стола установлена ​​из оболочки?
  • Команда «ps» не возвращает запрос
  • Linux и Unix - лучшая ОС в мире.