Incomputing, astatus key is akeyboard key that causes anoperating system and/or aprogram to output status information on aterminal 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.[1] Older implementations produced only a quick one-line status report for the current job when the status key was pressed.[2] Newer implementations support sending asignal to the current process to allow the application to report on status as well.[3]
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."[4]
RSTS/E is documented as having CTRL/T (control-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:[5][6][2]
18 GARP::KB32 SYSTAT+BAS4F ^C(0R) 11(16)K+ 16K 3.3(+5)
| Field | Value |
|---|---|
| Job number | 18 |
| Node name | GARP |
| Keyboard number | KB32 |
| Program or Operation | SYSTAT |
| Run-time system name | BAS4 |
| Job state | ^C(0R) |
| Program size in words | 11 |
| Maximum size in words | (16)K |
| Run-time system size in words | +16K |
| Amount of CPU time used | 3.3 |
| CPU time since the last CTRL/T | (+.5) |
OnTOPS-10 when the CTRL/T (control-T) key is pressed, themonitor 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.[7]
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.[7]
| Field | Value |
|---|---|
| Incremental day time | DAY: :05:43 |
| Incremental run time | RUN:0.48 |
| Incremental disk reads | RD:75 |
| Incremental disk writes | WR:8 |
| Program name | SOS |
| Amount of memory program is using | 12+19p |
| Context number | Ctx:1 |
| Job state code | ^C |
| Program Counter | PC:400275 |
| Job state, INPUT WAIT or OUTPUT WAIT | (only when CTRL/T is used at USER level) |
TOPS-20 reports a shorter list of information than its predecessors:[9]
09:36:35 TEST Running at 404157 Used 0:00:35.8 in 0:30:39, Load 4.04
| Field | Value |
|---|---|
| Time | 09:36:35 |
| Name | TEST |
| Status | Running at 404157 |
| Used CPU-time | Used 0:00:35.8 |
| Logged-in-time | in 0:30:39 |
| Load average | Load 4.04 |
ITS copied the idea fromTOPS-20,[10] but used the key sequenceControl+_J.[11]
19:29:10 3 RMS HACTRN EMACS1 130566
| Field | Value |
|---|---|
| Time | 19:29:10 |
| Job index | 3 |
| User name | RMS |
| Job name | HACTRN |
| System name | EMACS1 |
| User program counter | 130566 |
OpenVMS has a status key which can be customized and works with remote processes.[12] The default output includes these items:[1]
NODE22::SMITH 16:21:04 (DCL) CPU=00:03:29.39 PF=14802 IO=18652 MEM=68
| Field | Value |
|---|---|
| Node and process name | NODE22::SMITH |
| Time of day | 16:21:04 |
| Active image name | (DCL) |
| Processor time used | CPU=00:03:29.39 |
| Accumulated page faults | PF=14802 |
| I/O operations | IO=18652 |
| Frames in use | MEM=68 |
4.3BSD-Reno,[13][14][15]BSD systems derived from that version, andOSF/1 have a status key which defaults to Ctrl-T and can be assigned to any key.[3][16] It sendsSIGINFO 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.[17][18]
load: 0.10 cmd: sleep 1594 [nanslp] 1.33r 0.00u 0.00s 0% 1864k
| Field | Value |
|---|---|
| Five minute load average | load: 0.10 |
| Command name | cmd: sleep |
| Process ID | 1594 |
| Wait channel name or lock name | [nanslp] |
| Elapsed real time | 1.33r |
| Elapsed user CPU time | 0.00u |
| Elapsed system CPU time | 0.00s |
| Percentage of CPU | 0% |
| Program memory resident set size | 1864k |
BecausemacOS has a kernel,XNU, with code fromMach andFreeBSD,[19] the terminal driver supports the BSD status key.[20][21][22]
load: 3.04 cmd: sleep 719 waiting 0.00u 0.00s
| Field | Value |
|---|---|
| Five minute load average | load: 3.04 |
| Command name | cmd: sleep |
| Process ID | 719 |
| Wait channel name or lock name | waiting |
| Elapsed user CPU time | 0.00u |
| Elapsed system CPU time | 0.00s |
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.
BBN Lisp which runs on anSDS 940 had a status key which was implemented in theLisp which ran on an OS, rather than in the OS kernel itself.[23]
Control-TPrint Time. Causes an immediateprintout of the total execution time(in clock ticks) for the job, (evenduring garbage collections), i.e.clock[2], (p. 14.22). A series ofsuch printouts should show increasingnumbers if the program is using anyCPU time. Of course, the program isnot using CPU time if it is waitingfor input. This information mayserve to help the user determine ifhis LISP and/or the time sharing sys-tem has crashed.
#define SIGINFO 29 /* information request */
add ^T prototype
^T
stty(1) – BSD General CommandsManualThe BSD portion of the OS X kernel is derived primarily from FreeBSD
#define CSTATUS CTRL('t')
#define SIGINFO 29 /* information request */
Report on state of foreground process group.