로그하려고 하는데프로세스 시작 시간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=)))