LINUX.ORG.RU
ФорумAdmin

Разбить скрипт на подпрограммы

 


0

1

Здравствуйте, на ночь запускается скрипт, но непонятно почему он не дорабатывает до конца, как отловить ошибку, команды echo не помогают.. Хотелось бы разбить скрипт на несколько подпрограмм(подскриптов), чтоб из основного скрипта вызывались дочерние скрипты, но хотелось бы если какой-нибудь дочерний скрипт прервался из-за ошибки(вышел в терминал), то основной продолжил выполнять следующие дочерние скрипты. Как это можно реализовать?

Как это можно реализовать?

Это просто. Разбей свой скрипт на несколько независимых подпрограмм (подскриптов) с выводом отладочной информации в лог и запускай их по очереди из другого скрипта в цикле, так получится, что независимо от отвала одного из них, остальные продолжат запускаться.

Anoxemian ★★★★★
()
Ответ на: комментарий от tmpnikl

Для запуска сессии вызывается скрипт:

avnsession --version=22gn4 --log --

Парметр «–log» говорит скрипту выводить сообщения в лог. Скрипт пишет лог-файл:

~$ cat /tmp/avnotify.log
Fri Mar 24 11:29:21 +07 2023\n22gn4.sessionex.avnsession.dbg2:
[0] /usr/libexec/gnome-session-binary [--session=ubuntu][]/opt/avlow[/opt/avnup]

В логе: дата-время, значение переменной version, выполнявшаяся функция, выполнявшийся скрипт, отладочная точка.

Значения различных переменных в этой отладочной точке.

andytux ★★★★★
()

Спасибо за ответы, скрипт разбил на подпрограммы, но не помогло В одной из подпрограмм rsync(rsync -avz –progress –delete 2>>«test») выдаёт ошибку rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3] С ошибкой я поразбираюсь позже, но после бэкапа, комп должен выключиться, чтоб не мешать другим задачам А в данном случае после этой ошибки, комп не выключается, в скрипте не переходит на следующий оператор, как можно сделать, чтоб если вышла ошибка, то не выходить из скрипта, а пропустить и выполнять его дальше..

tmpnikl
() автор топика
Ответ на: комментарий от tmpnikl

Обработать ошибку. Проверить код ошибки. Назначить действия в зависимости от его значения. Например:

rsync -V ; echo "$?"
rsync  version 3.2.3  protocol version 31
...
See the GNU
General Public Licence for details.
0

Я сократил немного вывод. «0» в последней строке, это команда echo вывела код ошибки. В данном случае ошибки нет.

rsync -Ve ; echo "$?"
rsync: -Ve: missing argument
rsync error: syntax or usage error (code 1) at main.c(1749) [client=3.2.3]
1

«1» - код ошибки.

andytux ★★★★★
()