termscu(1)

πŸ’… termscu(1) β€” the OFFIS DCMTK girlies' guide to yeeting a server

okay so bestie, welcome to termscu πŸ’– this is a manual page straight out of the OFFIS DCMTK crew, and honestly? it's kind of a menace. it's the DICOM termination SCU β€” like, an SCU that shows up specifically to end things. main character energy but make it a shutdown 😭


🌸 SYNOPSIS

termscu [options] peer port

three things: your options, your peer, your port. that's the whole vibe check. ✨


πŸŽ€ DESCRIPTION

so termscu implements a Service Class User (SCU) for DCMTK's very own private Shutdown SOP Class. private as in, this isn't some standard-issue thing β€” it's DCMTK's own little secret handshake 🀫

here's the tea: it tries to negotiate this private Shutdown SOP Class with a Service Class Provider (SCP). and then β€” if the SCP actually implements this feature β€” the SCP will immediately shutdown after refusing the association. yes fr fr, the refusal is the point. it's giving "you're not on the list, also we're closing" πŸ’€

the practical upshot? you can use this application to shut down some of DCMTK's server applications. lowkey iconic. πŸ‘‘


πŸ¦‹ PARAMETERS

  • peer β€” hostname of DICOM peer
  • port β€” tcp/ip port number of peer

✨ OPTIONS ✨

general options

  • -h, --help β€” print this help text and exit
  • --version β€” print version information and exit
  • --arguments β€” print expanded command line arguments
  • -q, --quiet β€” quiet mode, print no warnings and errors
  • -v, --verbose β€” verbose mode, print processing details
  • -d, --debug β€” debug mode, print debug information
  • -ll, --log-level [l]evel: string constant β€” pick your level l for the logger, from (fatal, error, warn, info, debug, trace)
  • -lc, --log-config [f]ilename: string β€” use config file f for the logger

network options

IP protocol version:

  • -i4, --ipv4 β€” use IPv4 only (default)
  • -i6, --ipv6 β€” use IPv6 only
  • -i0, --ip-auto β€” use DNS lookup to determine IP protocol

application entity titles:

  • -aet, --aetitle [a]etitle: string β€” set my calling AE title (default: ECHOSCU)
  • -aec, --call [a]etitle: string β€” set called AE title of peer (default: ANY-SCP)

other network options:

  • -pdu, --max-pdu [n]umber of bytes: integer (4096..131072) β€” set max receive pdu to n bytes (default: 16384)

🧚 NOTES

DICOM Conformance

termscu supports the following SOP Classes as an SCU β€” yes, there's exactly one, she's an only child πŸ’…

  • PrivateShutdownSOPClass β€” 1.2.276.0.7230010.3.4.1915765545.18030.917282194.0

(that OID is a lot, i know. copy it, don't retype it, bestie 😭)


🌈 LOGGING

okay so log levels β€” the amount of logging output from the various command line tools and the underlying libraries can be set by you 🌸 by default, only errors and warnings get written to the standard error stream. that's the baseline.

  • --verbose also reports informational messages, like processing details. the "what's happening rn" tier πŸ‘€
  • --debug gets you more detail on internal activity, e.g. for debugging purposes. the "why is this happening rn" tier.
  • --log-level lets you select other logging levels.
  • in --quiet mode only fatal errors are reported. and ngl, in those very severe error events, the application will usually terminate. it's not dramatic, it's just over πŸ’€

for more details on the different logging levels, see the documentation of module "oflog".

and if you want your logging output written to a file (optionally with logfile rotation), or to syslog on Unix, or to the event log on Windows β€” that's what --log-config is for ✨ this configuration file also lets you direct only certain messages to a particular output stream, and filter certain messages based on the module or application where they're generated. there's an example configuration file provided in <etcdir>/logger.cfg πŸŽ€


πŸ“ COMMAND LINE

all the command line tools use this notation for parameters: square brackets enclose optional values (0-1), three trailing dots mean multiple values are allowed (1-n), and a combo of both means 0 to n values. periodt.

command line options are distinguished from parameters by a leading '+' or '-' sign, respectively. usually, order and position of command line options are arbitrary (i.e. they can appear anywhere). however, if options are mutually exclusive, the rightmost appearance is used πŸ‘‘ this behavior conforms to the standard evaluation rules of common Unix shells. no cap.

also! you can specify one or more command files using an '@' sign as a prefix to the filename (e.g. @command.txt). such a command argument gets replaced by the content of the corresponding text file (multiple whitespaces are treated as a single separator unless they appear between two quotation marks) prior to any further evaluation.

🫢 heads up: a command file cannot contain another command file. no inception, sorry.

this simple but effective approach lets you summarize common combinations of options/parameters and avoids longish and confusing command lines β€” an example is provided in file <datadir>/dumppat.txt πŸ’–


πŸ¦‹ ENVIRONMENT

termscu will attempt to load DICOM data dictionaries specified in the DCMDICTPATH environment variable. by default β€” i.e. if DCMDICTPATH isn't set β€” the file <datadir>/dicom.dic will be loaded, unless the dictionary is built into the application (default for Windows).

the default behavior should be preferred, and DCMDICTPATH only used when alternative data dictionaries are required. DCMDICTPATH has the same format as the Unix shell PATH variable in that a colon (":") separates entries. on Windows systems, a semicolon (";") is used as a separator.

the data dictionary code will attempt to load each file specified in DCMDICTPATH. and it is an error if no data dictionary can be loaded 😭


Copyright (C) 2005-2026 by OFFIS e.V., Escherweg 2, 26121 Oldenburg, Germany.


so that's the whole page, bestie πŸ’œ go forth and shut things down responsibly (or don't, but like, know what you're doing first πŸ™ˆ).

Version 3.7.1 🌸 Sat Oct 17 2026 09:34:01 β€” mwah, that's the version and date, catch you on the flip side βœ¨πŸŽ€

πŸ“¦ where this page comes from