加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bash等待进程启动

发布时间:2020-12-15 19:01:57 所属栏目:安全 来源:网络整理
导读:我试图对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”的
我试图对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次
我怎么能继续做?
>为此更好地使用“直到或”?
>等待过程开始或开始的另一个想法???

您的代码存在多个问题:

>如果没有进程,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读