# shp-status command

The shp-status command displays status information about printers
 shared with UNIX, started by the startshp command.

**For Windows:** Not supported

## Syntax

```
shp-status {(options}
```

## Parameter(s)

| options | t{n} | Displays trace information. If the n is not specified, all traces are shown, starting with the most recent. If the n is specified, only that number is shown for each printer. |
| --- | --- | --- |

## Description

The information below displays:

| VMname | Name of the D3 virtual machine, which uses the shared printer. |
| --- | --- |
| Prt | D3 printer number, as specified in the startshp command. |
| Port | D3 port number the printer process was started on. |
| PID | PID of the lppick process associated to the D3 printer process. This process acts as a filter between the D3 printer output, which is a continuous data stream, separated by end-of-job sequences, and the UNIX spooler, which accepts separate jobs. |
| Spooler command | UNIX command used to spool data. Note: Only the first 32 characters of the command display. |
| Status | Reports the activity or the D3 printer process and the existence of the lppick filter. The possible values are: |
| ok | Both processes are active. |
| prt ok | D3 printer is active and seems in a normal state. |
| prt err | D3 printer is active but appears in a wrong state. |
| prt dead | D3 printer process has been killed. |
| lp ok | lppick process is active. |
| lp dead | lppick process has been killed. For normal operations, the status should be ok. However, if the filter process gets killed, the output of the D3 printer process cannot be sent to UNIX. Issuing the startshp command again should clear the situation and restart the necessary processes. |

 If the t option is used, the trace information recorded displays, starting
 with the newest trace entry. This information displays:

| trace# | Trace number in decimal. | |
| --- | --- | --- |
| date | Date. | |
| time | D3 time displays. | |
| description | start job | Beginning of a job. |
| end job, size=n (-1,10) | End of the job. The n is the size in decimal. The values between parentheses are internal return codes. | |
| write data, size=n | Writes n bytes of data to the lp command. | |
| read error, errno=x | Encounters a read error on stdin. The x is the decimal value or errno. | |
| write error, errno=x, expsz=n, sz=m | Encounters a write error on stdout (to the lp command). | |
| x | Decimal value of errno. | |
| n | Number of bytes that was attempted to write. | |
| m | Actual number of bytes written. | |
| raw read, size=n,’ | Raw data reads from stdin (coming from the D3 printer). Nonprintable characters are replaced by a period. The n is the total size. This trace is available only when the trace level 3 is used. | |
| raw write, size=n,’ | Raw data writes on stdout (to the lp command). Nonprintable characters are replaced by a period. The n is the total size. This trace is available only when the trace level 3 is used. | |

 CAUTION:
 The fact that all the processes involved in sharing the printer are `ok` does
 not mean everything is well. There could be a problem in the D3 spooler. For example:

- Are the form queues assigned properly?

- Is the device associated to the form queue of the appropriate type, such as lp.unix?

- Is the D3 job queue full?

- Is the D3 printer active?

 Or, in the UNIX spooler:

- Is the UNIX command used in the startshp command correct?

- Is the UNIX spooler daemon active?

- For remote printers, is the network active?

 When used with a level 3 trace, the size of the trace file increases very rapidly. The trace
 is disabled by stopping the printer with a shp-kill.

## Example(s)

```
shp-status

VMname Prt Port PID Spooler command Status
------ --- --- ---- -------------------- ---------------
pick0 0 126 1763 ’exec lp -onobanner’ OK
dev 0 32 1765 ’exec cat >> xx’ prt OK lp DEAD
prod 0 44 345 ’exec lp -s’ prt ERR lp OK
```

 The first line indicates that the first shared printer is the printer 0 of the virtual machine
 pick0, started on the port 126, sending its data to the normal lp command,
 suppressing the banner. It appears to be ok.

 The second line indicates that the second shared printer is the printer 0 of the virtual
 machine dev, started on the port 32, sending its output to the UNIX file *xx*
 (on whatever directory the command startshp was issued on). The D3 printer
 process is still up, but the lppick filter is dead, possibly because the file
 *xx* was write protected, or may be because the UNIX file system is full.

 The third line indicates that the second shared printer is the printer 0 of the virtual
 machine prod, started on the port 44, sending its data to the normal lp
 command, suppressing lp messages. The D3 printer process is still up, but in
 an incorrect state, probably because a sp-kill command was issued, which sent
 the process back to logon, without terminating the UNIX process. The `lppick`
 process displays `ok`. To terminate a shared printer properly, use the TCL
 command shp-kill.

```
shp-status (t

VMname Prt Port PID Spooler command Status
------ --- --- ---- -------------------- ---------------
pick0 0 126 1763 ’exec lp -onobanner’ OK

 tr# Date.. Time.... Description
 3 03/03 13:14:00 nd job, size=1223
 2 03/03 13:13:55 start job
 1 03/03 13:14:00 start lppick
```

 Displays trace information.

---
Source: https://d3codex.com/tcl/shp-status-command/ - part of the D3Codex reference.
