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