rc.local的日志文件在哪里?

我在我的rc.local中有一些命令。我知道它们执行失败了。我该如何获取执行rc.local时产生的消息的日志文件?它的位置在哪里?
我已经检查了/var/log/boot.log。我知道我的消息不在那里,因为我已经知道失败的原因。但我仍然想通过日志文件来确认。
请注意,我不想再次运行脚本,虽然我可以,但我不想。我宁愿分析启动过程中发生了什么。
谢谢任何帮助。
Ubuntu 12.04桌面版(如果有关系的话)
5个回答

除非已经配置了输出或日志记录的命令,否则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文件。

3exec &> /tmp/rc.local.log就足够了,不需要两个exec调用 :-) - AjayKumarBasuthkar
3@abu-bua: 请注意在审阅编辑建议时要小心,特别是那些引入功能性改变的建议!&> 重定向是 Bash 的特性,在 Dash 和其他“纯粹”的 /bin/sh 解释器中,比如用于 rc.local 的解释器中会默默失败。 - David Foerster
“到顶部”是指在第一行 !/bin/sh -e 之前吗? - bomben
在Ubuntu 20.10上,rc.local似乎被配置为记录在/var/log/syslog中。对于该操作系统,请参考其他答案以获取更少侵入性的访问rc.local输出的方法。 - akaihola

尝试检查/var/log/syslog文件中的故障情况。

1有很多行所以你可以像这样使用grep命令搜索rc.localcat /var/log/syslog | grep rc.local - luke

使用systemd,rc.local被视为systemd收集日志的服务。您可以使用以下命令查看它们:

systemctl status rc.local.service

您可以通过服务日志查看错误(如果存在)。

1在Ubuntu 20.10上,这是systemctl status rc-local.service命令。 - akaihola
1很棒的回答!在Raspian上也适用。 - automorphic

看一下

  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 中捕获日志


Sylvain的答案之上添加:

grep rc.local /var/log/syslog

将显示与rc.local相关的所有错误输出。


这是正确的答案。 - BuffMcBigHuge