注意事項

注意事項

Linuxは(まだ)POSIX.1標準に準拠していません。説明するプロセスのaは、renice「プロセスのすべてのシステム全体のスレッド」に影響します。pthreads(7) ドキュメント「スレッドは共通の良い価値を共有しません」。

しかし、時にはrenice特定のプロセスに関連する「すべてのもの」を持つのが便利かもしれません(例えば、Apacheサブプロセスとそのスレッドの両方)。だから、

  • reniceどうやって手に入れることができますか?特定のプロセスに属していますか?
  • reniceどうやって手に入れることができますか?サブプロセス特定のプロセスに属していますか?

私は非常に簡単な解決策を探しています。

わかりましたプロセスグループ時には役に立つかもしれませんが、私が望む仕事に常に合うわけではありません。より広い範囲または他のプロセスセットを含めることができます。

cgroup管理者を使用するsystemdことも役に立ちますが、それについて聞きたい場合でも主に「標準」ソリューションを探しています。

編集:また、man (7) pthreads「プロセス内のすべてのスレッドは同じスレッドグループに配置されます。スレッドグループのすべてのメンバーは同じPIDを共有します」と表示されます。それでは、renice独自のPIDなしで何かを持つことができますか?

ベストアンサー1

/proc/$PID/task特定のプロセスのすべてのスレッドを見つけるために使用できるので、次のことができます。

$ ls /proc/$PID/task | xargs renice $PRIO

reniceすべて特定のプロセスに属します。

同じ方法を/proc/$PID/task/$PID/children使用してすべての項目を見つけることができます。サブプロセス(または/proc/$PID/task/*/childrenすべてが必要な場合サブプロセスみんな与えられたプロセス)。

$ cat /proc/$PID/task/$PID/children | xargs renice $PRIO
$ cat /proc/$PID/task/*/children | xargs renice $PRIO

おすすめ記事