В Linux я написал несколько скриптов, которые будут выполняться во время загрузки, и поиграл с различными способами их установки. Для больших скриптов я вставлю /etc/init.d
и свяжу соответствующие /etc/rc.d/rc?.d
уровни запуска. Для небольших сценариев я добавлю к /etc/rc.d/rc.local
. Этот процесс, кажется, идет гладко.
Теперь я настроил один из моих скриптов, и он не работает. У меня чертовски много времени на диагностику, потому что я не могу зафиксировать вывод ошибок. Я проверил /var/log/messages
и ковырялся в остальной части, /var/log
но не могу найти ничего полезного.
Кто-нибудь знает:
- эти сообщения об ошибках где-то автоматически фиксируются?
- если нет, как я могу получить stdout / stderr из моих скриптов init.d?
Заранее спасибо.
Ответы:
Нет - они идут в STDOUT (если вы используете
echo
) или STDERR (если вы используетеecho >&2
).Ваши сценарии должны писать в журналы и / или системный журнал самостоятельно (ваш дистрибутив может содержать некоторые функции init.d, которые могут помочь в этом - добавьте ваш дистрибутив к вашему вопросу).
Если вы идете за журналами, ищите
tee
команду. Если вы идете на системный журнал, посмотрите наlogger
. Вы можете комбинировать их так, как хотите.источник
Напишите скрипт-обертку, который вызывает ваш скрипт и перенаправляет вывод в файлы
источник
Вы можете сделать функцию для вывода сообщения на экран и в системный журнал, что-то вроде этого:
Вы также можете поместить это в отдельный файл и включить в свои сценарии
источник
[ -r ... ]
тест , чтобы проверить , если он существует?Сообщения из сценариев инициализации, как правило, нигде не записываются. Таким образом, вам нужно реализовать способ сделать это самостоятельно. Хорошая идея - использовать
logger
для отправки всего вывода в системный журнал. Этот пример отправит stdout и stderr в системный журнал:Я нашел это в этой замечательной статье: http://urbanautomaton.com/blog/2014/09/09/redirecting-bash-script-output-to-syslog/ .
источник