Я новичок в написании скриптов на bash и гуглю этот сценарий уже около шести часов, но безрезультатно. Я нашел сегменты того, что мне нужно, но не комплексное решение.
Вот в чем проблема: мне нужно написать код, который сможет проверить, что существуют 3 файла ( file1.txt
, file2.csv
и file3.log
). Однако перед тем, как продолжить, мне нужно подтвердить, что file3.log
прекратил запись (это нужно для подтверждения того, что скрипт, создающий 3 файла, успешно завершился).
Проверить существование этих файлов кажется достаточно просто, используя что-то вроде:
if [ -f -e /path/to/file/file1.txt && /path/to/file/file2.csv && /path/to/file/file3.log]
then
# somehow check the exit status of file3.log
if [$? !=0]
#somehow loop (maybe every 5 minutes) until $?=0
done
ИЛИ
Я также думал, можно ли просто избежать всего этого и просто проверить статус завершения начального скрипта? Но я не был уверен, потому что если бы произошел какой-то сбой и файлы не были бы созданы, то это стало бы серьезной проблемой, поскольку следующая часть процесса сканирования занимает около 2 дней...
Извините, если это может показаться глупым вопросом, я так глубоко запутался в вопросах Google «if-until-exit-zero-inlese...», что понятия не имею, что делать дальше.
решение1
Чтобы проверить, завершена ли именованная программа или скрипт, используйте команду:
wait $(pgrep program-name)