我用shell脚本运行程序。我如何知道它是否已加载?(Linux操作系统)

2024-03-29 11:37:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个运行python程序的shell脚本。然后我想使用xdool将一个文件加载到程序中。现在这是我的密码:

#!/bin/bash
cd ~/Folder
python program.py &
sleep 10
WID=$(xdotool search --onlyvisible program)
....

我真的不喜欢我的解决方案只是等待10秒,以便程序加载。有更好的办法吗?你知道吗


Tags: 文件py程序脚本bash密码bincd
1条回答
网友
1楼 · 发布于 2024-03-29 11:37:56

这要看情况了。如果program.py应该完成,然后继续xdotool,那么您可能希望使用&&而不是&。一个&意味着您希望执行命令,然后尽快转到下一个命令,而不必等待它完成。dobule &&意味着您要等待执行完成,然后只有在零错误退出时才继续。如果要运行下一个命令而不管program.py是否成功,也可以删除&或使用;。我的意思是:

#!/bin/bash
cd ~/Folder
python program.py &&
WID=$(xdotool search  onlyvisible program)
...

如果program.py应该在运行xdotool命令时继续运行,但是在继续之前需要program.py进入某个就绪状态,那么您使用&是正确的,但是您需要以某种方式监视program.py,并从中得到一个信号,表明可以继续。一种古老的方法是让program.py创建/触摸/编辑一个文件,当检测到该文件时继续。一个更先进的方法是使用网络套接字或类似的,但如果你真的不需要做任何花哨的事情,我建议你不要这样做。不管怎样,如果你让program.py创建一个信号文件,比如说/tmp/.program_signalfile,当一切就绪时,你所要做的就是:

#!/bin/bash
cd ~/Folder
python program.py &
until [ -f /tmp/.program_signal_file ]
do
    sleep 1
done
WID=$(xdotool search  onlyvisible program)
rm /tmp/.program_signal_file
...

在最后一个解决方案中,program.pyxdotool同时运行。如果那是你要找的。你知道吗

相关问题 更多 >