名前 | 形式 | 機能説明 | オプション | オペランド | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目 | 注意事項
prctl [-P] [-t [basic | privileged | system]] [-n name [-srx] [-v value] [-e | -d action] [-p pid]] [-i idtype] id...
prctl ユーティリティーを使用すると、システム上のアクティブなプロセス、タスク、またはプロジェクトに関連付けられている資源制御に対して、確認や変更を行うことができます。これを使えば、指定されたエンティティー上の基本制限や特権付き制限にアクセスできます。
Solaris オペレーティングシステムの現行リリースでサポートされている資源制御については、resource_controls(5) を参照してください。
-s、-r、-x、-v、-d、-e のいずれのオプションも指定されなかった場合、その呼び出しは取得処理とみなされます。それ以外の場合、それは変更処理とみなされます。
次のオプションを指定できます。
-v、-t、および -p で指定された資源制御値に対し、指定された action を無効 (-d) または有効 (-e) にします。-v、-t、-p のいずれかのオプションが指定されなかった場合、すべての値、特権、または受取人 pid に一致します。たとえば、-v のみが指定された場合、それに一致する値を持つ最初の資源制御が変更されます。その際、すべての特権と受取人 pid に一致します。一致する資源制御値が見つからなかった場合には、あたかも -s が指定されたかのように、新しい値が追加されます。
アクション:
このアクションは -d でのみ使用できます。これは、すべてのアクションを無効化します。これは、deny 大域フラグを持つ資源制御値では失敗します。
プロセス、タスク、プロジェクト、またはゾーンからの資源要求が資源制御値を超えた場合に、資源制御がその要求を拒否しようとすることを示します。no-deny 大域フラグを持つ資源制御では、deny アクションは有効にできません。deny 大域フラグを持つ資源制御では、deny アクションは無効にできません。
このアクションは -d でのみ使用できます。これは、signal アクションを無効にします。
signal=signum アクションの signum は、シグナル番号 (またはシグナルの文字列表現) です。no-local-action 大域フラグを持つ資源制御上に signal アクションを設定すると、失敗します。送信可能なシグナルは限られています。詳細については、「注意事項」を参照してください。
ID オペランドのタイプを指定します。有効な idtype は、process、task、project、または zone です。また、pid、taskid、projid、および zoneid も使用できます。-i オプションが省略された場合のデフォルトの ID タイプは、process です。
変更処理の場合、ID オペランドが所属するエンティティーが、ターゲットエンティティーになります。たとえば、-i process を指定して特定のプロジェクト資源制御を設定した場合、指定された各プロセス引数が所属するプロジェクト上にその資源制御が設定されます。
取得処理の場合、ID オペランドが所属するすべてのエンティティーの資源制御が、一覧表示されます。たとえば、-i task taskid と指定した場合、そのタスクのタスク資源制御、プロジェクト資源制御、およびゾーン資源制御に加え、そのタスクが所属するプロジェクトとゾーンの資源制御も一覧表示されます。
取得または設定する資源制御の名前を指定します。name が指定されなかった場合、すべての資源制御が取得されます。
-s、-r、-x、-d、-e のいずれかを使ってタスク、プロジェクト、またはゾーンの基本資源制御値を操作する場合、-p を使って受取人 pid を指定することができます。特定のタスク、プロジェクト、またはゾーン上で 1 つ以上の新しい基本資源制御を設定する際に、-i idtype オプションの引数が process でない場合には -p オプションが必要となります。
資源制御値をセミコロン区切り形式で表示します。
最初の資源制御値 (-t privilege に一致するもの) を、-v オプションで指定された新しい値で置き換えます。
新しい資源制御値を設定します。
このオプションは、 必ず -v とともに指定してください。
ユーザーが -t オプションを指定しなかった場合、基本特権が使用されます。基本のタスク資源制御、プロセス資源制御、またはゾーン資源制御を設定する場合、-p が必要になります。-e または -d も併せて指定された場合、新しい rctl へのアクションの設定も行われます。
-v が指定され、かつ -e、-d、-r、-x のいずれも指定されなかった場合、以前のリリースとの互換性を維持する目的でこのオプションが暗黙のうちに仮定されます。
資源制御値の設定時に大きな値を表現するために使用可能な単位修飾子や倍率については、resource_controls(5) を参照してください。
設定する資源制御タイプを指定します。「lowerable」フラグが設定された資源制御でない限り、特権付き資源制御を変更できるのは、root と同等の特権を持つユーザー (または setuid プログラム) による呼び出しだけです。RCTL_GLOBAL_LOWERABLE フラグについては、rctlblk_set_value(3C) を参照してください。タイプが指定されなかった場合、basic が仮定されます。取得処理では、タイプが指定されなかった場合、system を含むすべての資源制御タイプの値が表示されます。
設定処理用として、資源制御の値を指定します。value が指定されなかった場合、指定されたタイプのうち、最小の値を持つ資源制御に対して、変更 (削除、アクションの有効化、またはアクションの無効化) が実行されます。
資源制御値の設定時に大きな値を表現するために使用可能な単位修飾子や倍率については、resource_controls(5) を参照してください。
指定された資源制御値を削除します。削除オプションが指定されなかった場合の prctl のデフォルト操作は、値や特権の一致した資源制御値を変更するか、指定された特権を使って新しい値を挿入することです。一致条件の詳細については、setrctl(2) を参照してください。
-d、-e、-v、-x のいずれのオプションも指定されなかった場合、その呼び出しは取得処理とみなされます。
次のオペランドを指定できます。
問い合わせるエンティティー (process、task、project、zone のいずれか) の ID。呼び出し元のユーザーの資格が特権付きでなく、かつ問い合わせ対象のエンティティーが所有している資格が異なっている場合、処理が失敗します。id が指定されなかった場合、エラーメッセージが返されます。
次の例では、現在のシェルが所属するタスクの現在の資源制御設定を表示しています。
example$ ps -o taskid -p $$ TASKID 8 example$ prctl -i task 8 136150: /bin/ksh NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT task.max-cpu-time system 18.4Es inf none - task.max-lwps system 2.15G max deny - project.max-contracts privileged 10.0K - deny - project.max-locked-memory privileged 127MB - deny - project.max-port-ids privileged 8.19K - deny - project.max-shm-memory privileged 508MB - deny - project.max-shm-ids privileged 128 - deny - project.max-msg-ids privileged 128 - deny - project.max-sem-ids privileged 128 - deny - project.max-crypto-memory privileged 508MB - deny - project.max-tasks system 2.15G max deny - project.max-lwps system 2.15G max deny - project.cpu-shares privileged 1 - none - zone.max-lwps system 2.15G max deny - zone.cpu-shares privileged 1 - none - |
次の例では、ある既存プロジェクト上の特定の制御の値を表示、置換、および確認しています。
example# prctl -n project.cpu-shares -i project group.staff project: 10: group.staff NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.cpu-shares privileged 1 - none - system 65.5K max none - example# prctl -n project.cpu-shares -v 10 -r -i project group.staff example# prctl -n project.cpu-shares -i project group.staff project: 10: group.staff NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT project.cpu-shares privileged 10 - none - system 65.5K max none - |
次の例では、project.max-locked-memory 資源を使用しています。
最初に、id -p を使用して、現在のシェルが所属しているプロジェクトを検出します。
/home/garfield> id -p uid=77880(garfield) gid=10(staff) projid=10(group.staff) |
変更を行う前に、ターゲットプロジェクトを使用して資源の制限値を識別します。
/home/garfield> prctl -n project.max-locked-memory -i project \ group.staff project 10: group.staff project.max-locked-memory privileged 256MB - deny - system 16.0EB max deny - current limit is 256 Megabytes. |
次に、ターゲットプロジェクトに対して、project.max-locked-memory の制限を 300M バイトに調整します。
# prctl -n project.max-locked-memory -v 300M -r -i project group.staff |
変更後の資源の制限値が、新しい値 300M バイトを示しています。
# prctl -n project.max-locked-memory -i project group.staff project 10:group.staff project.max-locked-memory privileged 300MB - deny - system 16.0EB max deny - |
次の属性についての詳細は、マニュアルページの attributes(5) を参照してください。
属性タイプ |
属性値 |
---|---|
使用条件 |
SUNWesu |
インタフェースの安定性 |
下記を参照 |
コマンド行の構文は開発中 (Evolving) です。人間が読める形式の出力は不安定 (Unstable) です。機械可読な出力は開発中 (Evolving) です。
ローカルアクションを許可する資源制御ブロック上に設定可能な有効なシグナルは、SIGABRT、SIGXRES、SIGHUP、SIGSTOP、SIGTERM、および SIGKILL です。これに加え、CPU 時間関連の制御は SIGXCPU シグナルを発行でき、ファイルサイズ関連の制御は SIGXFSZ シグナルを送信できます。
名前 | 形式 | 機能説明 | オプション | オペランド | 使用例 | 終了ステータス | ファイル | 属性 | 関連項目 | 注意事項