neol, а можете расказать, почему и как работает этот гениальный скрипт для нубов в bash-скриптиге?
Баш выполняет команды последовательно и если не отправлять запущенную софтину в фон ( test -b & ), то следующая итерация бесконечного цикла начнется только после завершения ( или падения ) запущенной софтины.
PS Меня трижды из пед университета выгоняли, так что педагогическими талантами явно не блещу (: Если что-то непонятно, спрашивайте.
yars написал:
Тогда уж
text
#!/bin/bash
while true; do
if [ pidof test ] then sleep 2;
else test -b;
fi;
done
Я, конечно, в скриптинге не силен, но думаю, что как-то так. Проверить сейчас не могу, я с телефона.
Да, так лучше, только с ";" напутали чуть-чуть. Если я сам не запутался, то рабочий вариант будет:
text
while true; do
if [ "`pidof test`" ] ; then sleep 2
else; test -b
fi
done
А еще лучше
text
while true
do
if [ "`pidof test`" ]
then
sleep 2
else
test -b
fi
done
Легче прочитать и понять, ИМХО.
Конструкция [ "`pidof test`" ] сгорожена потому что:
`pidof test` - вернет результат выполнения команды, а без кавычек ругнется
"`pidof test`" - интерпретирует этот результат как строку (иначе будет ругань при возвращении нескольких пидов)