= ntpshmmon(1)
:author: Eric S. Raymond
:date: 26 February 2021
:email: <esr@thyrsus.com.>
:keywords: gps, ntpshmmon, ntp, ntpd, pps, shm
:manmanual: GPSD Documentation
:mansource: GPSD, Version {gpsdver}
:robots: index,follow
:sectlinks:
:toc: macro
:type: manpage
:webfonts!:

include::../www/inc-menu.adoc[]

== NAME

ntpshmmon - capture samples from gpsd or other ntpd refclock sources

== SYNOPSIS

*ntpshmmon* [OPTIONS]

*ntpshmmon* -h

*ntpshmmon* -V

== DESCRIPTION

This program monitors the shared-memory segments updated by gpsd 8 , and
possibly other refclock sources, as a way of communicating with *ntpd*,
the Network Time Protocol daemon. It reads these in exactly the way an
*ntpd* instance does. It can be run concurrently with *ntpd* without
interfering with *ntpd*'s normal operation.

*ntpshmmon* requires root privileges to access the root only NTP0 and
NTP1.  Running as a normal user will only allow access to NTP2 and NTP3.
cause loss of functionality.

This program runs forever, or until a termination option is matched, or
until interrupted, generating sample reports to standard output. Each
line consists of whitespace-separated textual fields.

Here is an example of the beginning of a report file:

----
ntpshmmon version 3.18
#      Name   Seen@                Clock                Real               L Pre
sample NTP2 1424926256.443030206 1424926256.115869233 1424926256.000000000 0  -1
sample NTP3 1424926256.443060517 1424926255.995430821 1424926256.000000000 0 -20
sample NTP3 1424926256.995747347 1424926256.995422728 1424926257.000000000 0 -20
sample NTP2 1424926257.112433572 1424926257.111936726 1424926257.000000000 0  -1
sample NTP3 1424926257.996221153 1424926257.995410232 1424926258.000000000 0 -20
sample NTP2 1424926258.107769409 1424926258.107451006 1424926258.000000000 0  -1
sample NTP3 1424926258.995647636 1424926258.995406476 1424926259.000000000 0 -20
----

The output always begins with a header line expressing the version of
the output format; the version line begins with "ntpshmmon version" and
is followed by a numeric version field.

The remainder of the file is either comments or sample lines. A comment
line begins with a # and should be ignored by programs that interpret
this format.

The fields of a sample line are as follows:

[arabic]
. The keyword "sample"
. The NTP unit from which it was collected.
. Collection time of day, seconds.
. Receiver time of day, seconds.
. Clock time of day, seconds.
. Leap-second notification status.
. Source precision (log(2) of source jitter).

In these fields, "clock time" is the high-precision system clock time
measured by the source and "receiver time" is from the receiver. Both
times are in UTC. It is normal for the seconds part of receiver time to
coincide with the seconds part of collection time and for the
nanoseconds part of receiver time to be zero.

If the *-o* option is used, the "Seen@" column is replaced with the
"Offset" column. The "Offset" is the difference between "Clock" and
"Real" times.

== OPTIONS

*-?*, *-h*, *--help*::
  Display program usage and exit.
*-n COUNT*, *--count COUNT*::
  Set maximum number of samples to collect to COUNT.
*-o*, *--offset*::
  Replace the "Seen@" column with the "Offset" column. The "Offset" is
  the difference between "Clock" and "Real" times.
*-s*, *--rmshm*::
  Remove all SHM segments used by GPSD. This option will normally only
  be of interest to GPSD developers.
*-t SECONDS*, *--seconds SECONDS*::
  Set maximum time to collect samples in seconds to SECONDS.
*-v*, *--verbose*::
  Enable verbose status messages.
*-V*, *--version*::
  Display program version and exit.

== RETURN VALUES

*0*:: on success.
*1*:: on failure

== SEE ALSO

*gpsd*(8), *gps*(1)

== RESOURCES

*Project web site:* {gpsdweb}

== COPYING

This file is Copyright 2013 by the GPSD project +
SPDX-License-Identifier: BSD-2-clause
