gpt4 book ai didi

Bash 等待进程启动

转载 作者:行者123 更新时间:2023-11-29 08:55:57 25 4
gpt4 key购买 nike

我想对 Bash 说,等待流程开始/开始。例如,我正在尝试通过这种方式:

notepad=`pidof notepad.exe`
until [ $notepad > 0 ]
do
taskset -p 03 $notepad
renice -n 5 -p $notepad
sleep 5
renice -n 0 -p $notepad
done

我有以下问题:

  1. 为什么这会生成一个名为“0”的文件(该文件为空) 我不想创建新文件,只需等待 PID 检查执行即可。

  2. 这是一个循环,但如果 2 个命令正确执行,则 1 次 我该如何继续做下去???

  3. 为此最好使用“until or while” ???

  4. wait Process Start 或 Begin 的另一个想法 ???

最佳答案

您的代码存在多个问题:

  1. 如果没有进程,pidof 不会打印 0 或 -1,所以你的逻辑是错误的
  2. 如果有多个进程,pidof 可以返回多个 pid,这会破坏您的比较
  3. > 必须在 [ ] 中进行转义,否则您的代码相当于 [ $notepad ] > 0,指向一个文件。
  4. > 甚至不是正确的运算符。您需要 -gt,但如第 1 点和第 2 点所述,您不应该比较数字。
  5. until 运行循环直到条件为真。它不会等待条件变为真,然后运行循环。

这是你应该做的:

# Wait for notepad to start
until pids=$(pidof notepad)
do
sleep 1
done

# Notepad has now started.

# There could be multiple notepad processes, so loop over the pids
for pid in $pids
do
taskset -p 03 $pid
renice -n 5 -p $pid
sleep 5
renice -n 0 -p $pid
done

# The notepad process(es) have now been handled

关于Bash 等待进程启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com