誰でも特定のユーザーのすべてのプロセスを終了できます。

誰でも特定のユーザーのすべてのプロセスを終了できます。

共有サーバーでは、他のユーザー(ルートアクセス権もありません)がリソースを必要とするたびに優先度の低いユーザーのプロセスを終了できるように、優先度の低いユーザーを残したいと思います。

そのようなことは許されますか?

答え1

他のユーザーにプロセス終了権限を付与する〜のように優先順位の低いユーザーは通過

sudo -u lowpriouser /bin/kill PID

ユーザーはroot権限がない限り、自分のプロセスにのみシグナルを送信できます。sudo -uファイルに正しく設定されたユーザーを使用すると、sudoers優先順位の低いユーザーのアイデンティティを想定してプロセスを終了できます。

たとえば、

%killers ALL = (lowpriouser) /bin/kill

killersこれにより、グループ内のすべてのユーザーがそれを実行できるようになり/bin/killますlowpriouser

sudoersシステムのマニュアルも参照してください。


OpenBSDシステムでは、doas次のように構成された基本ユーティリティを使用して同じ操作を実行できます。

permit :killers as lowpriouser cmd /bin/kill

それから

doas -u lowpriouser /bin/kill PID

マニュアルを見るdoasそしてdoas.conf

答え2

これらのプロセスを終了しないでください。優先順位が低い場合、リソースはほとんど消費されません。

実際に優先順位を下げるには、優先順位を手動で変更するか、autonice私が数年前にDEC OSF / 1(c.1994)用に作成したのと同じデーモンを使用してください。ランニングタイムが増えるから。

編集するというパッケージがあります。andこの機能は最新のUnicesに提供されています。

答え3

間違った角度から近づいていると思います。あるプロセスが低優先順位設定(CPU、I / O)で実行されている場合、実行スケジュールがないため、他のプロセスに大きな影響はありません。メモリ使用量の場合、メインメモリが不足していてプロセスが長期間実行されるように予約されていない場合(たとえば、CPUおよびI / O制約のため)、「クリーン」ページが削除され、「ダーティ」ページがコミットまたは交換され、それ以上プロセスのパフォーマンスに影響を与えません。

結論:正しい優先順位設定と十分なスワップスペースを使用すると、より重要なタスクのための「スペース」を作成するために優先順位の低いタスクを終了する必要はありません。代わりに、カーネルは後者のために前者をスリープモードに切り替えます。 。

関連情報