Status key


In computing, a status key is a keyboard key that causes an operating system and/or a program to output status information on a terminal when it is pressed. In the event that a program on a terminal produces no indications that it is running, typing the status key will reveal the program's state and activity. Older implementations produced only a quick one-line status report for the current job when the status key was pressed. Newer implementations support sending a signal to the current process to allow the application to report on status as well.

Operating system-level implementations

Several different operating systems have a status key feature implemented in the kernel or other low-level component.

TENEX

has the feature since at least 1971: "Another terminal Interrupt character, control-T is serviced by the EXEC. It interrupts a user's EXEC process to type out total CPU and console time used, and status of the fork being run under the EXEC."

DEC RSTS/E

is documented as having CTRL/T as a status key at least as far back as 1977 and it continued to have one into at least the 1980s. Typing the status key results in output that is represented by the following example:
18 GARP::KB32 SYSTAT+BAS4F ^C 11K+ 16K 3.3
FieldValue
Job number18
Node nameGARP
Keyboard numberKB32
Program or OperationSYSTAT
Run-time system nameBAS4
Job state^C
Program size in words11
Maximum size in wordsK
Run-time system size in words+16K
Amount of CPU time used3.3
CPU time since the last CTRL/T

DEC TOPS-10

On TOPS-10 when the CTRL/T key is pressed, the monitor prints status information pertaining to the job on the terminal. Typing CTRL/T displays a job's progress without interrupting its execution. No representation of a control-T character is displayed on the terminal, just the status information.
DAY: :05:43 RUN:0.48 RD:75 WR:8 SOS 12+19p ^C Ctx:1 PC:400275
Incremental values in the table below indicate that the value is the accumulation since login or last CTRL/T whichever was shortest.
FieldValue
Incremental day timeDAY: :05:43
Incremental run timeRUN:0.48
Incremental disk readsRD:75
Incremental disk writesWR:8
Program nameSOS
Amount of memory program is using12+19p
Context numberCtx:1
Job state code^C
Program CounterPC:400275
Job state, INPUT WAIT or OUTPUT WAIT

DEC TOPS-20

reports a shorter list of information than its predecessors:
09:36:35 TEST Running at 404157 Used 0:00:35.8 in 0:30:39, Load 4.04
FieldValue
Time09:36:35
NameTEST
StatusRunning at 404157
Used CPU-timeUsed 0:00:35.8
Logged-in-timein 0:30:39
Load averageLoad 4.04

MIT ITS

copied the idea from TOPS-20, but used the key sequence .
19:29:10 3 RMS HACTRN EMACS1 130566
FieldValue
Time19:29:10
Job index3
User nameRMS
Job nameHACTRN
System nameEMACS1
User program counter130566

VSI OpenVMS

has a status key which can be customized and works with remote processes. The default output includes these items:
NODE22::SMITH 16:21:04 CPU=00:03:29.39 PF=14802 IO=18652 MEM=68
FieldValue
Node and process nameNODE22::SMITH
Time of day16:21:04
Active image name
Processor time usedCPU=00:03:29.39
Accumulated page faultsPF=14802
I/O operationsIO=18652
Frames in useMEM=68

BSD UNIX

, BSD systems derived from that version, and OSF/1 have a status key which defaults to Ctrl-T and can be assigned to any key. It sends SIGINFO to the current process which is ignored by default but can be configured to call a function which can display status information from the program.
load: 0.10 cmd: sleep 1594 1.33r 0.00u 0.00s 0% 1864k
FieldValue
Five minute load averageload: 0.10
Command namecmd: sleep
Process ID1594
Wait channel name or lock name
Elapsed real time1.33r
Elapsed user CPU time0.00u
Elapsed system CPU time0.00s
Percentage of CPU0%
Program memory resident set size1864k

macOS

Because macOS has a kernel, XNU, with code from Mach and FreeBSD, the terminal driver supports the BSD status key.
load: 3.04 cmd: sleep 719 waiting 0.00u 0.00s
FieldValue
Five minute load averageload: 3.04
Command namecmd: sleep
Process ID719
Wait channel name or lock namewaiting
Elapsed user CPU time0.00u
Elapsed system CPU time0.00s

Application-level implementations

It addition to implementing a status key in the kernel or related OS component, some applications have features that allow you to press a key to view the application's status.

SDS-940 running BBN Lisp in 1969

Lisp which runs on an SDS 940 had a status key which was implemented in the Lisp which ran on an OS, rather than in the OS kernel itself.

Control-T
Print Time. Causes an immediate
printout of the total execution time
for the job,, i.e.
clock,. A series of
such printouts should show increasing
numbers if the program is using any
CPU time. Of course, the program is
not using CPU time if it is waiting
for input. This information may
serve to help the user determine if
his LISP and/or the time sharing sys-
tem has crashed.