Где находится файл журнала от rc.local?

52

У меня есть несколько команд в моем rc.local. Я знаю, что они терпят неудачу. Как я могу получить файл журнала с сообщениями, созданными в результате выполнения rc.local? Где он расположен?

Я проверил /var/log/boot.log. Я знаю, что моих сообщений нет, потому что я уже знаю, в чем причина отказа. Но я все еще хочу убедиться в лог-файле.

Заметьте, я не хочу снова запускать скрипт, но могу, но не хочу. Я бы лучше проанализировал, что произошло во время запуска.

Спасибо за любую помощь.

Ubuntu 12.04 Desktop (если это имеет значение)

владимир
источник

Ответы:

59

Если для команды не настроен вывод или ведение журнала, rc.localкоманды не будут нигде регистрироваться.

Если вы хотите увидеть журналы для конкретных команд, попробуйте перенаправить стандартный вывод и стандартный поток ошибок для rc.localкуда - то вы можете проверить. Попробуйте добавить это в начало вашего /etc/rc.localфайла:

exec 1>/tmp/rc.local.log 2>&1  # send stdout and stderr from rc.local to a log file
set -x                         # tell sh to display commands before execution

Хотя для этого потребуется перезапустить rc.localфайл.

Росс
источник
3
exec &> /tmp/rc.local.logдостаточно вместо двух вызовов exec :-)
AjayKumarBasuthkar
2
@ abu-bua: Пожалуйста, будьте осторожны при просмотре предложений по редактированию, которые вводят функциональные изменения! &>перенаправление - это Bash-ism, и оно молча завершается в Dash и других «простых» реализациях /bin/shинтерпретаторов, подобных той, что использовалась для rc.local.
Дэвид Фёрстер
означает "наверх" перед первой строкой !/bin/sh -e?
Бен
12

Попробуйте /var/log/syslogвместо этого проверить наличие ошибок в файле.

Сильвен Пино
источник
10

С systemd rc.local считается сервисом, который systemd собирает логи. Вы можете просмотреть их с помощью:

systemctl status rc.local.service

Вы можете увидеть ошибки (если они существуют) через сервисный журнал.

Амир Охади
источник
2

Смотреть в

  1. /var/log/messages
  2. /var/log/daemon

Или используйте команду dmesg

less /var/log/boot.log
less /var/log/dmesg
grep error /var/log/dmesg
grep <your expected error string> /var/log/boot.log

Или используйте scriptили какой-либо другой инструмент для захвата входа в системуrc.local

Kirchberger
источник