ジョブとドキュメントをプリント・システムで適切に管理できるように,それらのさまざまな側面を考慮する必要があります。一般に,次の 3 種類の属性が,ジョブとドキュメントの管理の異なる側面を反映しています。
印刷された出力に現れるデータに関係なく,ジョブやドキュメントのオブジェクト自体に影響を与える属性。このような処理には,プリント・デバイスに使用される給紙トレイと排出トレイの設定があります。
スプーラとスーパバイザがプリント・データの処理方法を決定する属性。このような属性には翻訳フィルタがあります。
実際に印刷された出力の体裁と内容を決定する属性。このような属性には,それぞれの用紙にページがどのようにレイアウトされるかに影響を与えたり,セパレータ・ページがドキュメント間に出力されるかどうかを決定したりするものがあります。
ユーザが通常実行するジョブとドキュメントの処理には,次のものが含まれます。
ジョブとドキュメントの違いを理解することは非常に重要です。1 つのジョブには複数のドキュメントを含めることができ,それぞれのドキュメントに対して多くの異なる処理指示を含めることができます。
7.1.1 ジョブの印刷
印刷処理は,1 つ以上のファイルを印刷する要求から,ジョブ・オブジェクトとドキュメント・オブジェクトを作成します。スプーラはそれぞれのプリント要求に対してジョブ・オブジェクトを作成するとともに,単一のプリント要求の一部として,ユーザが指定する各ファイルに対して 1 つのドキュメント・オブジェクトを作成します。このため,ジョブ・オブジェクトには,1 つ以上のドキュメント・オブジェクトが含まれます。
それぞれのジョブに対して,スプーラは一意のジョブ識別子 (job-identifier
) を割り当て,これは,ジョブの一時停止などのジョブ処理が実行されるときにジョブを特定するために使用されます。
プリント要求は
pdpr
コマンドを使用して作成されます。pdpr
コマンドの構文は次のとおりです。
pdpr
[-f file_name
]
[-n copies
]
[-N notification_method
]
[-p logical_printer_name
]
[-t job_name
]
[files
]
次に示すのは,pdpr
コマンドを使用してプリント要求を実行する例です。
省略時の論理プリンタ (PDPRINTER) でファイル mail-file.txt を印刷するには,次のコマンドを使用します。
# pdpr mail-file.txt
プリンタ pr_doc1 でファイル mail-file.txt を印刷するには,次のコマンドを使用します。
# pdpr -p pr_doc1 mail-file.txt
ファイル 'front-page.ps' を片面で,ファイル 'ch1.ps' と 'ch2.ps' を両面で印刷するには,次のコマンドを使用します。
# pdpr -x sides=1 -f front-page.ps -x sides=2 ch1.ps ch2.ps
プリント要求を実行し,そのジョブを指定した日付と時刻が来るまでは印刷しないように指定することができます。また,設定処理あるいは変更処理によって,ある時刻の後に印刷を指定することもできます。
印刷を大量のジョブの後の時刻に指定して,印刷量の少ない間に印刷できるようにすることもあります。
時刻と日付を指定するときには,次の構文を使用します。
dd:mm:yyyy:hh:mm:ss
ジョブの印刷時刻を設定すると,スプーラは次の処理を行います。
属性
current-job-state
を保留 (held) に設定します。
属性
job-state-reasons
に値
job-print-after-specified
を追加します。
指定した印刷時刻が過ぎると,スプーラはジョブをスケジューリングし,current-job-state
を処理待ち (pending) に変更します。
次の例は,ジョブに対して印刷時刻を指定する方法を示しています。
ジョブを実行するときにジョブの印刷時刻を指定するには,次のコマンドを使用します。
# pdpr -x job-print-after=31:12:1998:12:59:59\ book1.ps
ジョブを実行し,その後で,1998 年 1 月 25 日午前 7:00 以降に印刷するようにジョブを変更するには,次のコマンドを使用します。
# pdmod -x 'job-print-after=25:01:1998:07:00' \ red_spl:1258
同一のスプーラ上の異なるプリンタに対して,実行済みのプリント・ジョブを再実行することができます。
ジョブが次のいずれかの状態の場合にのみ,再実行することができます。
pending (処理待ち)
held (保留)
paused (一時停止)
retained (保持)
terminating (後処理中) (この状態が
job-state-reasons
属性の
documents-needed
を含まない場合)
ジョブの状態が
completed
(完了),processing
(処理中),printing
(印刷中) のいずれかの場合は,ジョブを再実行することはできません。
ジョブを再実行するには,pdresubmit
コマンドを使用します。このコマンドの構文は次のとおりです。
pdresubmit
[-c job
]
[logical_printer_name=name
]
[object_instance
]
object-instance は,ジョブ識別子またはキュー名です。個々のジョブを再実行することも,キュー内のすべてのジョブを別の論理プリンタに対して再実行することもできます。
次に示すのは,pdresubmit
コマンドを使用してジョブを再実行する例です。
ジョブ 2000 をプリンタ lpx0001 に対して再実行するには,次のコマンドを使用します。
# pdresubmit -c job lpx0001 2000
指定したキュー内のすべてのジョブを再実行するには,まず,キューを使用不能にしてから,再実行操作を行う必要があります。キュー qpx0001 からすべてのジョブを論理プリンタ lpx0001 に対して再実行するには,次のコマンドを使用します。
# pddisable -c queue qpx0001 # pdresubmit -c queue lpx0001 qpx0001
この操作を実行すると,スプーラが次の処理を行うことに注意してください。
処理待ち (pending),一時停止 (paused),保留 (held) 状態のすべてのジョブを,指定されたキューから消去し,それらを指定したターゲット論理プリンタに対して再実行します。
正常に再実行できないジョブに対しては警告を返します。これらのジョブは手動で再実行する必要があります。
この例では,両方のプリンタが同一のスプーラに関連付けられている必要があります。
pdresubmit コマンドは非同期であることに注意してください。このコマンドは,サーバが処理を完了する前にプロンプトを返します。
7.1.4 ジョブの昇格
ジョブの昇格とは,ジョブをキューの先頭に移動することです。ジョブの昇格によって,そのジョブは,実行時刻に関係なく,昇格されていないジョブの前に印刷されます。1 回に昇格できるのは 1 つのジョブだけですが,同一のキューで複数のジョブを昇格すると最後に昇格されたジョブが,最初に印刷されます。
現在印刷中のジョブは,昇格されたジョブを含むキューに関連付けられたそれぞれの物理プリンタで,正常に印刷を続行します。スプーラは,現在のジョブの印刷を完了し,別のジョブを扱うことのできる最初の物理プリンタに,最後に昇格されたジョブを割り当てます。
current-job-state
が
pending
(処理待ち) または
held
(保留) のジョブは昇格することができます。
キューの状態は,ready
(処理可能) または
paused
(一時停止) のいずれかである必要があります。
管理者とオペレータは
pdpromote
コマンドを使用してジョブを昇格できます。エンド・ユーザはジョブを昇格できません。pdpromote
コマンドのフォーマットは次のとおりです。
pdpromote
[-m message_text
]
[server_name:job_id
]
次に示すのは
pdpromote
コマンドの使用例です。
スプーラ sx0001_spl でジョブ 2249 を昇格するには,次のコマンドを使用します。
# pdpromote sx0001_spl:2249
ジョブを一時停止すると,ジョブは印刷のために物理プリンタに渡されません。キュー内の他のジョブは一時停止されたジョブを残して渡されます。
処理待ち (pending) または保留 (held) 状態のジョブだけが一時停止できます。つまり,印刷が始まったジョブは一時停止できません。ジョブを一時停止するときには,次の点に注意してください。
1 つのジョブ内で特定のドキュメントを一時停止することはできません。一時停止するのはジョブ全体です。
ジョブは再開されるまで再スケジューリングすることはできません。
ジョブが印刷のためにスーパバイザに既に渡されていた場合,操作は失敗します。
pdpause
コマンドを使用してジョブを一時停止します。このコマンドのフォーマットは次のとおりです。
pdpause
[-c job
]
[-m message_text
]
[server_name:job_id
]
次に示すのは,pdpause
コマンドを使用してジョブを一時停止する例です。
次のコマンドを使用して spooler1 でジョブ 11224 を一時停止し,ジョブが一時停止された理由を示すメッセージを含めます。
# pdpause -c job -m "Job will be printed later"\ spooler1:11224
一時停止されたジョブは
pdresume
コマンドを使用して再開できます。一時停止されたジョブを再開すると,そのジョブのスケジューリングや印刷ができるようになります。
pdresume
コマンドのフォーマットは次のとおりです。
pdresume
[-c class_name
]
[-m message_text
]
[job_id
]
次に示すのは,pdresume
コマンドを使用してジョブを再開する例です。
次のコマンドを使用すると,ジョブ 11224 が再開されます。
# pdresume -c job spooler1:11224
スプーラが印刷のためにジョブをスケジューリングしないように,ジョブを保留にすることができます。job-hold 属性を true に設定することで,ジョブを保留にできます。
ジョブを保留にすると,スプーラは,次の処理を行います。
属性 current-job-state を held に設定します。
属性 job-state-reasons に値 job-hold-set を追加します。
ジョブの保留は,次のイベントのいずれか 1 つが発生しない限り,ジョブが無期限に保留状態になることを除けば,ジョブの一時停止と似ています。
job-hold
属性を false に設定したとき。スプーラはジョブをスケジューリングして,その
current-job-state
を pending (処理待ち) に設定できます。
以前に設定したジョブ破棄時刻が過ぎたとき。スプーラは保留にされたジョブを削除します。
関連付けられたキューまたはスプーラをクリーン処理したとき。スプーラは,held 状態のジョブを含めて,そのキューまたはスプーラにあるすべてのジョブを削除します。
次に示すのは,ジョブを保留状態にする例です。
ジョブの所有者は,pdmod
コマンドを使用して,スプーラ sx0001_spl にあるジョブ番号 2002 を保留状態にすることができます。
$ pdmod -x 'job-hold=yes' sx0001_spl:2002
管理者またはオペレータは,pdset
コマンドを使用して,前の例と同一のジョブを保留にできます。
# pdset -x 'job-hold=yes' sx0001_spl:2002
ジョブの保留を解除するには,次の例のように
pdset
コマンドまたは
pdmod
コマンドを使用します。
# pdset -x 'job-hold=no' sx0001_spl:2002 # pdmod -x 'job-hold=no' sx0001_spl:2002
ジョブの印刷が完了した後に,指定した期間だけ,スプーラにジョブを保持させることができます。保持されたジョブは,再実行またはチェックのために利用することができます。
ジョブを保持すると,スプーラは次の処理を行います。
ジョブが完了した後でも,ジョブ・オブジェクト,その属性,そのドキュメントを保持します。
属性
current-job-state
を retained に設定します。
ジョブは,次のいずれかのイベントが起こるまで,保持 (retained) 状態のままになります。
保持期間が満了したとき。このとき,スプーラは保持されたジョブを削除します。
関連付けられたキューまたはスプーラをクリーン処理したとき。このとき,スプーラは,保持 (retained) 状態にあるジョブを含めて,キューまたはスプーラ内にあるすべてのジョブを削除します。
pdmod
,pdset
,pdrm
コマンドのいずれかを使用して,ジョブを保持することができます。エンド・ユーザは
pdmod
コマンドと
pdrm
コマンドを使用して,所有するジョブに保持期間を設定できます。管理者とオペレータは,pdset コマンドを使用して任意のジョブの保持期間を設定できます。
次に示すのは,これらのコマンドを使用してジョブを保持する例です。
スプーラ sx0001_spl にジョブ番号 3021 を 24 時間保持するには,次のいずれかのコマンドを実行します。
# pdrm -r '24:00' sx0001_spl:3021 # pdmod -x "job-retention-period=24:00" sx0001_spl:3021 # pdset -c job -x "job-retention-period=24:00" sx0001_spl:3021
pdrm
コマンドを使用すると,ジョブが再実行のために保持されていても,ジョブが取り消されて,キューから消去されることに注意してください。
7.1.9 ジョブの破棄
ジョブが特定の時刻までに印刷されない場合,スプーラがそのジョブを削除するように指定できます。属性
job-discard-time
で時刻を指定します。
ジョブ破棄時刻になったときに,スプーラはジョブが印刷されたかどうかや,ジョブの状態に関わらず,ジョブを削除します。
ジョブ破棄時間を指定するために,エンド・ユーザは
pdmod
コマンドを使用することができ,また,管理者とオペレータは
pdset
コマンドを使用することができます。次に,ジョブ破棄時刻を設定する例を示します。
1998 年 1 月 2 日午後 5:00 にジョブ 3021 を破棄するには,次のコマンドのいずれかを入力します。
# pdmod -x "job-retention-period=02:01:1998:17:00:00" 3021 # pdset -c job \ -x "job-retention-period=02:01:1998:17:00:00" 3021