ログしようとしています。プロセス開始時間cronjobによって開始されました@reboot
。現在使用していますが、ps -p $$ -o ltime=
問題が発生しました。
マイコンピュータ(Raspberry Pi)がネットワークに接続してcronが起動したら、NTPアップデートをプルダウンしてシステムクロックを調整します。更新後に変更が返される時間ですlstart
(もちろんこれは意味があります)。
問題は、2つの異なる開始時間があり、監視でプロセスが再起動されたように見えることです。
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=)))