~/.init 中的 upstart 脚本存在问题

~/.init 中的 upstart 脚本存在问题

我正在尝试在我的 Linux 桌面机上运行 Sonar。我想让它在机子启动时自动启动,但它以我的身份运行是没问题的。

我创建了“~/.init/sonar.conf”,其中包含以下简单内容:

description "Sonar server"
start on startup
respawn
chdir ~/apps/sonar-3.2/bin
exec ~/apps/sonar-3.2/bin/linux-x86-64/sonar.sh start

我读到 Upstart 默认没有为用户作业配置,因此我编辑了“/etc/dbus-1/system.d/Upstart.conf”,注释掉现有的“”元素并将其替换为以下内容:

<policy context="default">
  <allow send_destination="com.ubuntu.Upstart" send_interface="org.freedesktop.DBus.Introspectable"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="org.freedesktop.DBus.Properties"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="com.ubuntu.Upstart0_6"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="com.ubuntu.Upstart0_6.Job"/>
  <allow send_destination="com.ubuntu.Upstart" send_interface="com.ubuntu.Upstart0_6.Instance"/>
</policy>

当我执行“start sonar”时,我得到“start: Job failed to start”。我还执行了“initctl list | grep sonar”,得到“sonar stop/waiting”。

我该如何进一步排除此故障?

答案1

您的问题可能是您认为的startupupstart 用途与它所用的功能不符。启动是系统 init 脚本启动期间发出的第一个事件之一。因此,您很可能遗漏了网络堆栈和驱动程序、文件系统等几乎所有内容。请仔细阅读手册页,了解启动事件的含义,以及启动的含义。

这是我用来检查和测试 upstart 服务的过程。

首先检查您的配置:

# silent if the config is valid    
initctl check-config sonar
# reload the configuration to pick up latest changes
initctl reload-configuration

我还添加了一个脚本——它可以运行startup——将 upstart 切换到调试日志记录模式:

sudo -s
cat <<EOCONF > /etc/init/upstart-debug.conf 
description "enable debugging of upstart from within"
author      "@dch__"
version     "0.1"

start on startup

task
exec initctl log-priority debug

由于这是一项任务,因此它只运行一次。现在的结果是,您可以获得更多详细信息/var/log/dmesg- 仅| grep init:用于历史记录。

对于您的特定新贵工作,我会进行以下更改:

  • 对于我运行的普通用户守护程序start on started networking and filesystem,它可以在 Quantal 和 Precise 上成功运行,但可能不适用于早期版本。
  • 使用绝对路径而不是相对路径。
  • 检查您的 sonar.sh 脚本是否分叉或守护进程,如果是,您可能需要添加expect forkexpect daemon作为节。
  • 最后,在 pre-exec 和 exec 脚本中加入emit ...一些节或 shellecho here语句,并在相应的/var/log/upstart/sonar.log.

答案2

对于 Upstart用户作业 以下 Upstart.conf 配置更改:https://gist.github.com/bradleyayers/1660182对我有用。

  • 在 Ubuntu 12.04 上测试
  • 我的(用户)工作在 ~/.init 中
  • 保存 Upstart.conf 后无需重启

关于您的 sonar.conf -start on startup可能为时过早。start on desktop-session-start似乎更适合用户工作。

编辑:Ubuntu 在启动时不尊重用户作业,如下所述错误报告- 您可以使用以下内容解决方法

相关内容