我/etc/init/foo.conf在 Ubuntu 12.04.4 上有以下配置:
description "Foo"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
pre-start script
mkdir -p -m 0775 /var/run/foo
chown foo:foo /var/run/foo
end script
setuid foo
setgid foo
exec /usr/local/bin/foo
Run Code Online (Sandbox Code Playgroud)
但是,当它在启动时运行时,并且当我尝试手动运行它时,sudo start foo我在 中收到以下错误/var/log/upstart/foo.log:
mkdir: cannot create directory `/var/run/foo': Permission denied
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,我该如何解决?
我想foo do-startup-things在启动时foo do-shutdown-things运行,并在关闭时运行foo我自己的程序。
看起来 Upstart 是一个很好的候选者,但 Upstart 似乎是为与守护程序一起使用而设计的,因此运行service foo stop会产生错误,stop: Unknown instance:因为运行启动作业时执行的进程不再运行。
有没有办法在不启动守护进程的情况下使用 Upstart 在启动和关闭时执行任务?