История изменений
Исправление Zmicier, (текущая версия) :
Ну тот же самый алгоритм может выглядеть как-то так:
#!/bin/bash
wait=1
while [[ $wait ]]; do
unset wait
for server_file in /opt/msm/servers/*; do
for screen_file in /var/run/screen/S-msm/*; do
IFS='.' read pid sessionname <<< "${screen_file##*/}"
if [[ ${server_file##*/} == $sessionname ]]; then
wait=1
printf >&2 'Wainting for %s\n' "$sessionname"
sleep 5
fi
done
done
done
(Не проверял. Могут быть ошибки вплоть до синтаксических.)
Но вообще ожидать завершения процессов разумнее по их идентификаторам (PID’ам), а вовсе не по файлам, которые они за собой должны убирать, но могут и не убрать — как получить pid сессии «Скрина» я вам уже подсказал, про сервера — это только вы знаете.
Исходная версия Zmicier, :
Ну тот же самый алгоритм может выглядеть как-то так:
#!/bin/bash
wait=1
while [[ $wait ]]; do
unset wait
for server_file in /opt/msm/servers/*; do
for screen_file in /var/run/screen/S-msm/*; do
IFS='.' read pid sessionname <<< "${screen_file##*/}"
if [[ ${server_file##*/} == $sessionname ]]; then
wait=1
printf >&2 'Wainting for %s\n' "$sessionname"
sleep 5
fi
done
done
done
Не проверял. Могут быть ошибки вплоть до синтаксических.