NTPQ(1)
๐ NAME ๐
ntpq โ the standard NTP query program. Yep bestie, you found the NTPsec ntpq(1) page, and we're doing this together ๐ซถ
โจ SYNOPSIS โจ
ntpq [-46adhinpkwWu] [-c command] [host] [...]
๐ฆ DESCRIPTION ๐ฆ
Okay so picture this: ntpq is the utility program you use to monitor what the NTP daemon ntpd is doing and figure out its performance. It talks in the standard NTP mode 6 control message formats, which are defined in Appendix B of the NTPv3 specification RFC 1305. NTPv4 uses those exact same formats โ some variable names just changed and new ones got added. Heads up tho: everything described on this page is for the NTPv4 variables ๐
You can run the program either in interactive mode or drive it entirely from command line arguments. Requests to read and write arbitrary variables can be assembled, and you get both raw and pretty-printed output options. It can also grab and print a list of peers in a common format by sending multiple queries to the server โ very main character of it โจ
If one or more request options are included on the command line when ntpq is executed, each of the requests gets sent to the NTP servers running on each of the hosts you gave as command line arguments โ or on localhost by default. If no request options are given, ntpq will try to read commands from standard input and execute them on the NTP server running on the first host given on the command line, again defaulting to localhost when no other host is specified. And ntpq will prompt you for commands if standard input is a terminal device ๐
ntpq uses NTP mode 6 packets to talk to the NTP server, which means it can query any compatible server on the network that permits it. Big note tho: since NTP is a UDP protocol, this communication will be somewhat unreliable ๐ญ โ especially over large distances in terms of network topology. ntpq makes one attempt to retransmit requests, and will time requests out if the remote host isn't heard from within a suitable timeout time.
Also, in contexts where a host name is expected: a -4 qualifier preceding the host name forces DNS resolution to the IPv4 namespace, while a -6 qualifier forces DNS resolution to the IPv6 namespace. Periodt.
For examples and usage, see the NTP Debugging Techniques page (debug.html).
For a simpler near-real-time monitor, see ntpmon(1) โ she's chill like that ๐ธ
๐ OPTIONS ๐
Command line options are described following, bestie. Specifying the command line options -c or -p will cause the specified query (queries) to be sent to the indicated host(s) immediately ๐ฅ Otherwise, ntpq will attempt to read interactive format commands from standard input.
-4,--ipv4โ Force DNS resolution of following host names on the command line to the IPv4 namespace.-6,--ipv6โ Force DNS resolution of following host names on the command line to the IPv6 namespace.-a num,--authentication=numโ Enable authentication with the numbered key ๐-c cmd,--command=cmdโ The following argument is interpreted as an interactive format command and gets added to the list of commands to be executed on the specified host(s). You can give multiple-coptions, no cap.-d,--debugโ Increase debugging level by 1.-D num,--set-debug-level=numโ The debug level is set to the following integer argument.-l filename,--logfile=filenameโ Log debugging output to the specified file.-h,--helpโ Print a usage message summarizing options and exit.-n,--numericโ Output all host addresses in numeric format rather than converting to the canonical host names. Tiny caveat: you may get hostnames anyway for peers in the initialization phase before DNS has resolved the peer name ๐-p,--peersโ Print a list of the peers known to the server as well as a summary of their state; this is equivalent to thepeersinteractive command. Therefidfield is as described under "Event Messages and Status Words" in the NTP documentation on the Web.-k filename,--keyfile=filenameโ Specify a keyfile.ntpqwill look in this file for the key specified with-a.-V,--versionโ Print the version string and exit.-w,--wideโ Wide mode: if the host name or IP Address doesn't fit, write the full name/address and indent the next line, so columns line up. The default truncates the name or address (kinda rude of it ngl).-W num,--width=numโ Force the terminal width. Only relevant for composition of the peers display.-u,--unitsโ Display timing information with units.
๐ง INTERNAL COMMANDS ๐ง
Interactive format commands consist of a keyword followed by zero to four arguments. You only need to type enough characters of the full keyword to uniquely identify the command โ she's not gonna make you spell the whole thing out ๐
The output of a command is normally sent to standard output, but optionally the output of individual commands may be sent to a file by appending a >, followed by a file name, to the command line. Some interactive format commands are executed entirely within the ntpq program itself and don't result in NTP mode 6 requests being sent to a server. Those are described following:
? [command_keyword],help [command_keyword]โ A?by itself prints a list of all the command keywords known tontpq. A?followed by a command keyword prints function and usage information about that command.addvars name [ = value] [...]; rmvars name [...]; clearvarsโ The arguments to this command consist of a list of items of the formname = value, where the= valueis ignored and can be omitted in read requests.ntpqmaintains an internal list in which data to be included in control messages can be assembled and sent using thereadlistandwritelistcommands described below. Theaddvarscommand allows variables and optional values to be added to the list. If more than one variable is to be added, the list should be comma-separated and not contain white space. Thermvarscommand can be used to remove individual variables from the list, while theclearlistcommand removes all variables from the list.authenticate [yes | no]โ Normallyntpqdoesn't authenticate requests unless they're write requests. The commandauthenticate yescausesntpqto send authentication with all requests it makes. Authenticated requests causes some servers to handle requests slightly differently ๐ The commandauthenticatewithout arguments causesntpqto display whether or notntpqis currently authenticating requests.cookedโ Display server messages in prettyprint format โจdebug more | less | offโ Turns internal query program debugging on and off.noflake,+doflake probabilityโ Disables or enables the dropping of control packets byntpqfor testing. Probabilities0and1should be certainly accepted and discarded respectively. No default, but0.1should be a one in ten loss rate ๐ฌlogfile <stderr> | filenameโ Displays or sets the file for debug logging.<stderr>will send logs to standard error.delay millisecondsโ Specify a time interval to be added to timestamps included in requests which require authentication; this is used to enable (unreliable) server reconfiguration over long delay network paths or between machines whose clocks are unsynchronized. The server does not now require timestamps in authenticated requests, so this command may be obsolete ๐ซexitโ Exitntpq.host nameโ Set the host to which future queries will be sent. The name may be either a DNS name or a numeric address.hostnames [yes | no]โ Ifyesis specified, host names are printed in information displays. Ifnois specified, numeric addresses are printed instead. The default isyesunless modified using the command line-nswitch.keyid keyidโ This command specifies the key number to be used to authenticate configuration requests; this must correspond to a key ID configured with thecontrolkeycommand in the server'sntp.conf.keytypeโ Specify the digest algorithm to use for authenticated requests, with defaultMD5. The keytype must match what the server is expecting for the specified key ID.ntpversion 1 | 2 | 3 | 4โ Sets the NTP version number whichntpqclaims in packets. Defaults to2. Note that mode 6 control messages (and modes, for that matter) didn't exist in NTP version 1 ๐passwdโ This command prompts for a password to authenticate requests. The password must match what the server is expecting. Passwords longer than 20 bytes are assumed to be hex encoding.quitโ Exitntpq.rawโ Display server messages as received and without reformatting. The only formatting/interpretation done on the data is to transform non-ASCII data into a printable (but barely understandable) form ๐timeout millisecondsโ Specify a timeout period for responses to server queries. The default is about5000milliseconds. Note that sincentpqretries each query once after a timeout, the total waiting time for a timeout will be twice the timeout value set โฐunitsโ Toggle whether times in the peers display are shown with units.versionโ Print the version of thentpqprogram.
๐ CONTROL MESSAGE COMMANDS ๐
Association IDs are used to identify system, peer and clock variables. System variables are assigned an association ID of zero and system name space, while each association is assigned a nonzero association ID and peer namespace. Most control commands send a single mode 6 message to the server and expect a single response message. The exceptions are the peers command, which sends a series of messages, and the mreadlist and mreadvar commands, which iterate over a range of associations.
associationsโ Display a list of mobilized associations in the form
ind assid status conf reach auth condition last_event cnt
okay so that's the header line of the spreadsheet you're staring at whenever peers or associations spits out a table ๐
here's what each column is actually saying:
indโ the index on this list. just the row number bestie, it's giving "seat number" ๐๏ธassidโ the association ID. this is the one you'll actually type into other commands, so likeโฆ remember it ๐statusโ the peer status word (decode.html#peer). the whole vibe of the peer in one word โจconfโyesmeans persistent,nomeans ephemeral. like a situationship vs. a real one ๐reachโyesmeans reachable,nomeans unreachable. can you text them back or not ๐authโ one ofok,yes,badandnone. genuinely four separate moods ๐conditionโ the selection status (peek at the select field of the peer status word,decode.html#peer). this is the "are we actually choosing them" field ๐last_eventโ the event report (see the event field of the peer status word,decode.html#peer). literally the receipts of what last happened ๐cntโ the event count (see the count field of the peer status word,decode.html#peer). how many times it's happened, no cap ๐ข
authinfo โ displays the authentication statistics. auth stats, served fresh ๐
clockvar assocID [name [ = value [...] ][...], cv assocID [name [ = value [...] ][...] โ displays a list of clock variables for those associations that support a reference clock. it's giving "clock lore" ๐ฐ๏ธ note that cv is just the short cute name for the same thing.
:config [...] โ sends the remainder of the command line, including whitespace, to the server as a run-time configuration command, in the same format as the configuration file. the leading colon? yeah that's the whole point, it's the "this is a config command" flag ๐
โ ๏ธ heads up bestie: this command is experimental until further notice and clarification. and authentication is, of course, required ๐
config-from-file filename โ sends each line of filename to the server as run-time configuration commands, in the same format as the configuration file.
โ ๏ธ same energy: this one is also experimental until further notice and clarification, and authentication is required. don't say i didn't warn you ๐ซถ
ifstats โ displays statistics for each local network address. authentication is required for this one ๐
iostats โ displays network and reference clock I/O statistics. both flavours, all the numbers ๐
kerninfo โ displays kernel loop and PPS statistics. as with all other ntpq output, the times are in milliseconds. and the precision value displayed is in milliseconds as well โ which, lowkey important, is unlike the precision system variable ๐ญ don't mix them up.
lassociations โ does the exact same thing as the associations command, except it displays mobilized and unmobilized associations. the deluxe version, both bins, no gatekeeping ๐ฆ
lpeers [-4 | -6] โ prints a peer spreadsheet for the appropriate IP version(s). dstadr (associated with any given IP version). pick your fighter: -4 or -6 ๐
monstats โ displays monitor facility statistics. the monitor's whole personality, quantified ๐
direct โ okay so normally, the mrulist command retrieves an entire MRU report (which might be more than one MRU span), sorts it, and then presents the result. but ๐ฌ attempting to fetch that entire report can genuinely fail on a server so loaded that none of its MRU entries age out before they're shipped. with this option? each segment gets reported as it arrives. streaming era, we love to see it โจ
mrulist [limited | kod | mincount=count | mindrop=drop | minscore=score | maxlstint=seconds | minlstint=seconds | laddr=localaddr | sort=sortorder | resany=hexmask | resall=hexmask | limit=limit | addr.num=address] โ obtains and prints traffic counts collected and maintained by the monitor facility. this is your "who is using or abusing my server" detective arc ๐ iconic for tracking that.
so, except for sort=sortorder, all these options are filters on the list ntpd hands back. let's go through them:
limitedandkodโ return only entries representing client addresses from which the last packet received triggered either discarding or a KoD response. messy behaviour, flagged ๐ฉaddr.num=โ adds specific addresses to retrieve whenlimit=1. values of0to15are supported fornum. it's also used internally withlast.num=hextimeto select the starting point for retrieving a continued response ๐frags=fragsโ limits the number of datagrams (fragments) in the response. newerntpqversions use this instead oflimit=when retrieving multiple entries ๐งฉlimit=โ limits the MRU entries returned per response.mincount=countโ filters out entries that have received fewer thancountpackets ๐ฆmindrop=dropโ filters out entries that have dropped fewer thandroppackets due to rate limiting ๐ซminscore=scoreโ filters out entries with a score less thanscore๐ฏmaxlstint=secondsโ filters out entries where no packets have arrived withinsecondsโณminlstint=secondsโ filters out entries with a packet has arrived withinseconds๐laddr=localaddrโ filters out entries for packets received on any local address other thanlocaladdr๐resany=hexmaskandresall=hexmaskโ filter entries containing none or fewer than all, respectively, of the bits inhexmask, which must begin with0xโ ๏ธ like, actually must. don't skip the0x.
and now the limit= special case because it's genuinely a whole thing:
๐limit=1is special. instead of fetching beginning with the supplied starting points (provided by alast.xandaddr.xwhere0 โ x โ 15, default the beginning of time) newer neighbor, it fetches the supplied entries. this enables fetching multiple entries from given IP addresses (provided byaddr.x=entries where0 โ x โ 15).
when limit is not one and frags= is provided, the fragment limit controls ๐๏ธ
๐ธ NOTE: a singlemrulistcommand may cause many query/response rounds, allowing limits as low as3to potentially retrieve thousands of entries in responses. tiny limit, massive haul. it's giving "small bag, infinite pockets" ๐ญโจ
Okay so the sortorder defaults to lstint, and it can be any of addr, count, avgint, lstint, score, drop โ or any of those with a minus sign (hyphen) in front to reverse the sort order. ๐
The output columns are:
lstintโ interval in s between the receipt of the most recent packet from this address and the completion of the retrieval of the MRU list byntpq. โฑ๏ธavgintโ average interval in s between packets from this address. ๐rstrโ restriction flags associated with this address. Most are copied unchanged from the matchingrestrictcommand, however0x400(kod) and0x20(limited) flags are cleared unless the last packet from this address triggered a rate control response. ๐ฆrโ rate control indicator, either a period,LorKfor no rate control response, rate limiting by discarding, or rate limiting with a KoD response, respectively. ๐mโ packet mode. ๐ฆvโ packet version number. ๐ขcountโ packets received from this address. ๐งฎscoreโ packets per second (averaged with exponential decay). โจdropโ packets dropped (or KoDed) from this address. Always0unless arestrict ... limitedline applies to the address. ๐rportโ source port of last packet from this address. ๐remote addressโ DNS name, numeric address, or address followed by claimed DNS name which could not be verified in parentheses. ๐
mreadvar assocID assocID [ variable_name [ = value[ ... ], mrv assocID
assocID [ variable_name [ = value[ ... ]
Perform the same function as the readvar command, except for a range of association IDs. This range is determined from the association list cached by the most recent associations command. ๐ซถ
opeersโ obtain and print the old-style list of all peers and clients showingdstadr(associated with any given IP version), rather than therefid. ๐passociationsโ perform the same function as theassociationscommand, except that it uses previously stored data rather than making a new query. ๐peersโ display a list of peers in the form
tally remote refid st t when pool reach delay offset jitter
The variables are giving:
tallyโ single-character code indicating current value of theselectfield of the peer status word (decode.html#peer). โญremoteโ host name (or IP address) of server. ๐ธrefidโ association ID or kiss code (decode.html#kiss). ๐stโ stratum. ๐ชtโu: server (ufor unicast),l: local (reference clock),p: Pool name,1-8NTS server with this number of cookies stored. ๐ชwhenโ sec/min/hr since last received packet. โณpollโ poll interval (log2 s). ๐reachโ reach shift register (octal). ๐งdelayโ roundtrip delay. ๐ฐ๏ธoffsetโ offset of server relative to this host. ๐jitterโ jitter. ๐ฆ
The t column has strange encodings due to historical use by old code. If you are looking at an old server, you might also see: s: symmetric (peer), server, B: broadcast server,
okay so the tally code โ that one little character hanging out in the front of every peer line โ is literally the peer's whole vibe check ๐ here's the decoder ring, no cap:
- (blank) โ discarded as not valid ๐
xโ discarded by intersection algorithm.โ discarded by table overflow (not used โ yeah it's just sitting there, historical icon behavior ๐)-โ discarded by the cluster algorithm+โ included by the combine algorithm โจ#โ backup (more thantos maxclocksources)*โ system peer ๐ main character energyoโ PPS peer (when the prefer peer is valid)
apeersโ shows ur peers like:
[tally]remote refid assid st t when pool reach delay offset jitter
and this is exactly like peers, except the refid gets shown in hex format and the association number (assid) also shows up. extra data, same slay ๐
rpeersโ shows the peer list but with the columns flipped around, like:
st t when pool reach delay offset jitter refid tally remote
pstatsassocID โ stats for the peer with thatassocID. per-peer receipts fr fr ๐readvarassocID[ name ] [,...]/rvassocID[ name ] [,...]โ shows the variables you asked for. ifassocIDis zero you're reading from the system variables<#system>name space; otherwise you're in the peer variables<#peer>name space. theassocIDis required because the same name can legitimately live in both spaces, bestie, they're different rooms in the same house ๐ if you don't include aname, it dumps all the operative variables in that name space โ and in that one specific case, if you leave off theassocID, it just assumes zero. multiple names get comma separators with no whitespace, ty. also heads up: time values come out in milliseconds and frequency values in parts-per-million (PPM). some NTP timestamps show up asYYYYMMDDTTTTwhereYYYYis the year,MMthe month of the year,DDthe day of the month, andTTTTthe time of day ๐reslistโ shows the access control (restrict) list forntpq. ๐timerstatsโ displays interval timer counters. tick tick tick โฑ๏ธwritelistassocID โ writes the system or peer variables that are in the variable list.writevarassocIDname = value [,...]โ writes the variables you specify. ifassocIDis zero it's the system variables<#system>name space, otherwise peer variables<#peer>name space. again,assocIDis required since the same name can occur in both spaces. don't @ me, that's just how it is ๐ซถsysinfoโ operational summary. the tl;dr of ur whole setup โจsysstatsโ prints the statistics counters that live in the protocol module. quick note tho: the relationships among these counters can look unlikely, and that's not a bug โ a packet can get flagged for inclusion in exception statistics in more than one way, like by having both a bad length and an old version at the same time. so yeah, numbers can double-dip ๐mssntpinfoโ summary of the MS-SNTP traffic to a Samba server. this literally will not work unless the server you're looking at was built with the--enable-mssntpoption, so check before u spiral ๐ญntsinfoโ summary of the NTS state, covering both the NTS client and the NTS server components (yes, the original says "the the", we love a typo icon ๐). heads up: the format of the output text may change as this feature gets developed. this command is experimental until further notice and clarification. consider urself warned ๐ง
๐ AUTHENTICATION ๐
four commands need you to authenticate to the server: config-from-file, config, ifstats, and reslist. an authkey file has to be in place and a control key declared in ntp.conf for any of these to work. no credentials, no entry, sorry bestie ๐ช
if you're running as root โ or you otherwise have read access to the authkey and ntp.conf file โ ntpq will mine the required credentials for you, like it's doing the homework so you don't have to ๐
otherwise you'll get prompted to enter a key ID and password.
credentials, once entered, are retained and used for the whole duration of your ntpq session. no re-typing, we love efficiency ๐ธ
๐ฉบ STATUS WORDS AND KISS CODES ๐ฉบ
the current state of the operating program is shown in a set of status words maintained by the system โ and by each association, separately. these words get displayed in the rv and as commands, both in hexadecimal and decoded into short tip strings โจ the codes, tips, and short explanations live on the Event Messages and Status Words page (decode.html). that page also has a list of system and peer messages, and the code for the most recent of those is included in the status word.
info that comes out of protocol machine state transitions gets displayed using an informal set of ASCII strings called kiss codes (decode.html#kiss). the original purpose was for kiss-o'-death (KoD) packets that a server sends to tell the client about some unusual condition ๐ they're now displayed, when appropriate, in the reference identifier field in various billboards. iconic behavior honestly ๐
โจ SYSTEM VARIABLES โจ
Okay bestie, so these are the system variables that can show up in the rv billboard ๐ โ and yeah, not every single one is displayed in every configuration, because of course it isn't ๐
.
statusโ system status word<decode.html#sys>versionโ NTP software version and build timeprocessorโ hardware platform and versionsystemโ operating system and versionleapโ leap warning indicator(0-3)stratumโ stratum(1-15)precisionโ precision(log2 s)rootdelayโ total roundtrip delay to the primary reference clockrootdispโ total dispersion to the primary reference clockpeerโ system peer association IDtcโ time constant and poll exponent(log2 s)(3-17)mintcโ minimum time constant(log2 s)(3-10)clockโ date and time of dayrefidโ reference ID or kiss code<decode.html#kiss>reftimeโ reference timeoffsetโ combined offset of server relative to this hostsys_jitterโ combined system jitterfrequencyโ frequency offset(PPM)relative to hardware clockclk_wanderโ clock frequency wander(PPM)clk_jitterโ clock jittertaiโ TAI-UTC offset(s)leapsecโ NTP seconds when the next leap second is/was insertedexpireโ NTP seconds when the NIST leapseconds file expires
Heads up, bestie: not all variables are displayed in some configurations ๐.
And the jitter/wander tea โ: the jitter and wander statistics are exponentially-weighted RMS averages. The system jitter is defined in the NTPv4 specification; the clock jitter statistic is computed by the clock discipline module. No cap, that's literally the whole breakdown ๐.
โจ PEER VARIABLES โจ
Okay so this next bit is the receipts ๐
โ every variable that shows up in the rv billboard for each association. Heads up bestie: not all of these get displayed in some configurations. That's just how it is, no cap.
associdโ the association ID ๐statusโ the peer status word, and yes there's more tea atdecode.html#peersrcadrsrcportโ source (remote) IP address and port ๐ธdstadrdstportโ destination (local) IP address and port ๐ฆleapโ leap indicator, ranging0-3stratumโ stratum, ranging0-15precisionโ precision, inlog2 srootdelayโ total roundtrip delay to the primary reference clock โฑ๏ธrootdispโ total root dispersion to the primary reference clockrefidโ reference ID or kiss code, more atdecode.html#kiss๐reftimeโ reference timereachโ reach register, in octalunreachโ unreach counterhmodeโ host mode, ranging1-6pmodeโ peer mode, ranging1-5hpollโ host poll exponent, inlog2 s, ranging3-17ppollโ peer poll exponent, inlog2 s, ranging3-17headwayโ headway (see Rate Management andrate.htmlthe Kiss-o'-Death Packet)"flashโ flash status word, details atdecode.html#flashโกoffsetโ filter offsetdelayโ filter delaydispersionโ filter dispersionjitterโ filter jitterbiasโ fudge for asymmetric links/paths
๐ CLOCK VARIABLES ๐
And these are the clock variables, living their best life in the cv billboard for each association that has a reference clock ๐ฐ๏ธ. Same disclaimer fr fr: not every variable makes an appearance in some configurations.
associdโ the association IDstatusโ the clock status word, extra lore atdecode.html#clockdeviceโ device descriptiontimecodeโ ASCII time code string (specific to device) ๐คpollโ poll messages sentnoreplyโ no reply ๐badformatโ bad formatbaddataโ bad date or time ๐fudgetime1โ fudge time 1fudgetime2โ fudge time 2stratumโ driver stratumrefidโ driver reference IDflagsโ driver flags ๐ฉ
๐ฆ COMPATIBILITY ๐ฆ
okay bestie, here's the tea on how this version behaves differently from the old-school ntpq you might know ๐
- when listing refids, addresses of the form
127.127.x.xare no longer automatically interpreted as local refclocks like they were in older versions ofntpq. instead, a clock-format display is requested by the NTPsec daemon when appropriate (by setting thesrcaddrpeer variable). this means that when you use it to query legacy versions ofntpd, which don't know how to request this, this program will do a slightly wrong thing ๐ญ - in older versions, the
typevariable associated with a reference clock was a numeric driver type index. it's been replaced byname, a shortname for the driver type โจ - in older versions, no count of control packets was listed under
sysstats๐ซถ - the
-O(--old-rv) option of legacy versions has been retired โ it's gone, periodt ๐
๐ KNOWN LIMITATIONS ๐
ngl, there are some quirks you should know about before you @ me ๐
- it's possible for a
":config unpeer"command to fail silently, yielding"Config Succeeded", if it's given a peer identifier that looks like a driver type name or a hostname not present in the peer list. the error will, however, be reported in the system log ๐ - the
configcommand cannot be used to change a server's default restrictions ๐ซ - under some circumstances python 2 cannot emit unicode. when true, the display of units is downgraded to non-unicode alternatives. one place you're likely to encounter this is when diverting output through a pipe. attempts have been made to force the use of UTF-8, all of which break the command history feature ๐ญ
- when using the
-uoption, very old xterms may fail to renderยตcorrectly. if this happens, be sure your xterm is started with the-u8option, or theutf8resource', and that your console font contains the UTF-8ยตcharacter. also confirm yourLANGenvironment variable is set to a UTF-8 language, like this:export LANG=en_US.utf8๐ง - timestamp interpretation in this program is likely to fail in flaky ways if the local system clock has not already been approximately synchronized to UTC. querying a server based in a different NTP era than the current one is especially likely to fail โฐ
- this program will behave in apparently buggy and only semi-predictable ways when fetching MRU lists from any server with sufficiently high traffic ๐
- the problem is fundamental. the Mode 6 protocol can't ship (and your client cannot accept) MRU records as fast as the daemon accepts incoming traffic. under these circumstances, the daemon will repeatedly fail to ship an entire report, leading to long hangs as your client repeatedly re-sends the request. eventually the Mode 6 client library will throw an error indicating that a maximum number of restarts has been exceeded ๐ต
- to avoid this problem, avoid monitoring over links that don't have enough capacity to handle the monitored server's entire NTP load ๐
- you may be able to retrieve partial data in very high-traffic conditions by using the
directoption ๐
lowkey important: if your link is struggling, don't expect MRU lists to behave. the protocol is doing its best, but physics said no ๐
โจ EXIT STATUS โจ
one of the following exit values will be returned, bestie:
0(EXIT_SUCCESS) โ successful program execution ๐1(EXIT_FAILURE) โ the operation failed or the command syntax was not valid ๐
xoxo, your ntpq bestie ๐
โ brought to you by NTPsec, dated 2026-10-21 ๐ซถ
๐ฆ where this page comes from
- fedora 43: ntpsec 1.2.6-1.fc43 ยท NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- fedora 43: ntpsec 1.2.6-1.fc43 ยท NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- fedora 44: ntpsec 1.2.6-1.fc44 ยท NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- fedora 44: ntpsec 1.2.6-1.fc44 ยท NTP AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause AND ISC AND Apache-2.0 AND Beerware
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms