通过名称获取PID

通过名称获取PID

我正在运行 Linux 的封闭环境中运行自动驾驶仪,并且我有一个需要更改其优先级的内核线程。我不想为此修补内核。该线程是在 SPI 驱动程序探测其硬件时在启动早期创建的,并命名为 spi0。我可以把这个问题分成两部分,我需要帮助获取名为 [spi0] 的线程的 PID,chrt一旦我有了 PID,将其标记为 SCHED_FIFO 并相应地设置优先级就足够容易了。

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

答案1

在 Unix 堆栈交换上搜索标签时,我发现了pidofpgrep。这些在 shell 脚本中捕获的输出要简单得多:

$ 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

相关内容