我试图对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
我有以下问题:
>为什么这会生成一个名为“0”的文件(文件为空)
我不想创建一个新文件,只需等待PID检查执行.
>这是一个循环,但如果2个命令执行correclty,则为1次
我怎么能继续做?
>为此更好地使用“直到或”?
>等待过程开始或开始的另一个想法???
您的代码存在多个问题:
原文链接:https://www.f2er.com/bash/387105.html>如果没有进程,pidof不会打印0或-1,因此您的逻辑错误
>如果有多个进程,pidof可以返回多个pid,这会破坏您的比较
>>必须在[]中转义,否则您的代码相当于[$notepad]> 0,指向文件.
>>甚至不是合适的操作符.你想要-gt,但正如第1点和第2点所述,你不应该比较数字.
>直到运行循环直到条件为真.它不等待条件成为真,然后运行循环.
这是你应该怎么做的:
# 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