Скрипт Bash: включить ошибки? - PullRequest
0 голосов
/ 21 января 2011

После разработки простого сценария резервного копирования на основе shell / bash на моем движке Ubuntu и обеспечения его работы я загрузил его на свой сервер Debian, который выводит ряд ошибок при его выполнении.

Что я могу сделать, чтобы включить «обработку ошибок» на моей машине с Ubuntu, чтобы упростить отладку?

Ответы [ 3 ]

2 голосов
/ 21 января 2011
  • ssh на сервер
  • запустить скрипт вручную с помощью -v или -x или обоих
  • попытайтесь продублировать пользователя, группу и среду ошибки, запущенной в окне терминала.
    При необходимости запустите программу с помощью чего-то вроде "su -c 'sh -v script' otheruser

Возможно, вы также захотите передать результат неверной команды, особенно если она запускается cron(8), в /bin/logger, возможно, что-то вроде:

sh -v -x badscript 2>&1 | /bin/logger -t badscript

и затем посмотрите на /var/log/messages.

2 голосов
/ 21 января 2011

Bash позволяет включить отладку выборочно или полностью с помощью команды set. Вот хорошая справка о том, как отлаживать bash-скрипты.

Команда set -x включит отладку в любом месте вашего скрипта. Аналогично, set +x выключит его снова. Это полезно, если вы хотите видеть только отладочный вывод из частей вашего скрипта.

1 голос
/ 21 января 2011

Измените строку shebang, включив в нее опцию трассировки:

#!/bin/bash -x

Вы также можете сделать так, чтобы Bash сканировал файл на наличие ошибок, не запуская его:

$ bash -n scriptname
...