NTP 업데이트에 관계없이 프로세스 시작 시간 가져오기

NTP 업데이트에 관계없이 프로세스 시작 시간 가져오기

로그하려고 하는데프로세스 시작 시간cronjob 에 의해 시작되었습니다 @reboot. 현재 사용하고 있는데 ps -p $$ -o ltime=문제가 생겼습니다.

내 컴퓨터(Raspberry Pi)가 네트워크에 연결되어 cron이 시작된 후 NTP 업데이트를 풀다운하고 시스템 시계를 조정합니다. 업데이트 후 변경 사항이 반환되는 시간입니다 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.

답변1

경과 시간을 초 단위로 요청할 수 있습니다.

ps -p $$ -o etimes=

시스템이 현재 시간을 어떻게 생각하든 상관없이 이는 항상 정확하고 비교할 수 있습니다.

이를 현재 가동 시간(초 단위의 첫 번째 값으로 저장됨)에서 빼서 상수 시작 값으로 변환할 수 있습니다 /proc/uptime.

echo $(($(cut -d. -f1 < /proc/uptime) - $(ps -p $$ -o etimes=)))

관련 정보