Я запускаю программу в сценарии оболочки. Как я узнаю, что он загружен? (Linux)
Я написал сценарий оболочки, который запускает программу на Python. Затем я хочу загрузить файл в программу с помощью xdotool. Прямо сейчас это мой код:
#!/bin/bash
cd ~/Folder
python program.py &
sleep 10
WID=$(xdotool search --onlyvisible program)
....
Мне действительно не нравится мое решение просто ждать 10 секунд, чтобы программа загрузилась. Есть ли способ лучше?
1 ответ
Это действительно зависит. Если program.py
должен закончить, а затем перейти к xdotool
тогда вы можете использовать &&
вместо &
, Один &
означает, что вы хотите выполнить команду, а затем переходите к следующей команде как можно скорее, не дожидаясь ее завершения. Добул &&
означает, что вы хотите дождаться завершения выполнения, а затем продолжить, только если у вас есть выход с нулевой ошибкой. Вы также можете просто удалить &
или использовать ;
если вы хотите выполнить следующую команду независимо от 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.py
а также xdotool
оба работают в одно и то же время. Если это то, что вы искали.