Я пытался найти свой путь, но не могу найти ответ. В моем файле .sh я называю исполняемый файл (который работает нормально), но он, кажется, блокирует остальную часть сценария. Я знаю, что вы можете запускать сценарии из терминала в качестве фона, но я не знаю, как запускать исполняемый файл асинхронно. Может кто-то указать мне правильное направление, поскольку я новичок в сценариях оболочки? И заранее благодарю за любой вклад.
if [ -d "/usr/lib/kega-fusion" ];
then
echo "Directory /usr/lib/kega-fusion exists " ;
if [ -d "/usr/lib/kega-fusion/logs"];
then
>> /usr/lib/kega-fusion/logs/log.sh && echo `logging successful discovery of directory at $date`
cd /usr/lib/kega-fusion/ && ./Fusion
else
echo "making logs directory"
echo 'supass' | sudo -kS mkdir -p /usr/lib/kega-fusion/logs
echo "Creating log.sh"
echo 'supass' | sudo -kS touch /usr/lib/kega-fusion/logs/log.sh
echo "Updating permissions"
echo 'supass' | sudo -kS chmod 755 /usr/lib/kega-fusion/;
echo 'supass' | sudo -kS chmod 755 /usr/lib/kega-fusion/logs/;
echo 'supass' | sudo -kS chmod 722 /usr/lib/kega-fusion/logs/log.sh;
echo "Appending new log date"
echo 'supass' | sudo -kS >> /usr/lib/kega-fusion/logs/log.sh && echo `logging successful discovery of directory at $date`
cd /usr/lib/kega-fusion/ && ./Fusion && echo "why doesnt this line run?"
WID = `xdotool search "Fusion 3.63x"`
echo $WID
fi
fi
Любая команда или процесс, который вы выполняете с помощью & amp; Символ в конце строки отправляется на задний план, что позволяет вашему сценарию переходить к следующему шагу, пока вы добавляете '& amp;' продолжает делать свое дело в фоновом режиме.
Например, при выполнении в сценарии оболочки это приводит к появлению строки с таймером сна ПОСЛЕ строки непосредственно под ней. Потому что он имеет & amp; в конце строки он отсылается сам по себе для продолжения работы, в то время как скрипт продолжает идти по линии, занимаясь другими делами. Через 5 секунд после запуска последней строки появляется команда «echo», которая есть у меня во второй строке.
echo "This is a test"
sleep 5 && echo "This is a test of the sleep functionality" &
echo "This should appear before the sleep test"
Так или иначе, добавьте '& amp;' на все, что вы хотите запустить в фоновом режиме, пока скрипт продолжает делать свое дело. Возможно, вы даже захотите перенаправить вывод этих команд в пользовательский текстовый файл или файл журнала, чтобы его вывод не перегружал терминал, с которым вы взаимодействуете, но у вас все еще есть способ проверить наличие проблем. т.е.
somecommand > somelogfile.txt &