簡體   English   中英

我在shell腳本中運行程序。 我怎么知道它是否已加載? (Linux)的

[英]I run a program in a shell script. How do i know if it has loaded? (Linux)

我寫了一個運行python程序的shell腳本。 然后,我想使用xdotool將文件加載到程序中。 現在,這是我的代碼:

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

我真的不喜歡僅等待10秒鍾以便加載程序的解決方案。 有沒有更好的辦法?

這真的取決於。 如果program.py應該完成,請繼續使用xdotool然后您可能要使用&&而不是& 單個&表示您希望命令執行,然后盡快移至下一個命令,而無需等待其完成。 浮雕&&表示您要等待執行完成,然后僅在錯誤出口為零時才繼續執行。 您也可以只刪除&或使用; 如果您要運行下一個命令,而與program.py的成功無關。 這就是我要得到的:

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

如果應該在運行xdotool命令時繼續運行program.py ,但是在繼續之前需要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都同時運行。 如果那是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM