名前でPIDを取得する

名前でPIDを取得する

Linuxを実行している閉じた環境でAutopilotを実行しており、優先順位を変更する必要があるカーネルスレッドがあります。私はこれのためにカーネルをパッチしたくありません。このスレッドは、SPIドライバがハードウェアを検出したときに最初に作成され、名前はspi0です。この質問を2つの部分に分けることができます。 [spi0]というスレッドのPIDを取得するのに助けが必要です。chrtPIDがあればそれをSCHED_FIFOとしてマークし、それに応じて優先順位を設定するのは簡単です。

$ ps -ef | grep '\[spi0\]'
root       203     2  2 Aug28 ?        00:59:19 [spi0]

答え1

Unix Stack Exchangeでタグを検索しながら、pidofおよびpgrep。シェルスクリプトにキャプチャされたこの出力ははるかに簡単です。

$ pidof -s spi0
203

または、プロセス名と正確に一致するものを取得し、そのプロセスのPIDを返します。最も古い一致プロセスはpgrep

$ pgrep -x -o spi0
203

したがって、スケジューラ全体の調整は次のようになります。

$ sudo chrt -f -p 10 "$(pidof -s spi0)"
$ sudo chrt -p "$(pidof -s spi0)"
pid 203's current scheduling policy: SCHED_FIFO
pid 203's current scheduling priority: 10

関連情報