我正在运行 14.04 LTS,主目录已加密。我有一个服务 (配置文件同步守护进程) 在启动和停止时需要访问我的主目录中的文件,因此需要在加密文件挂载后启动并在卸载前停止。可以通过service psd start
从启动应用程序运行来实现在正确的时间启动服务。我可以在哪里放service psd stop
命令?
我曾尝试使用session-cleanup-script
,/etc/lightdm.conf
但似乎运行得太晚了。
答案1
桌面关闭时发出的众所周知的 Upstart 事件是“ desktop-end
”(并且还有对应的“ desktop-start
”)。因此,类似下面的代码应该可以工作:
mkdir -p ~/.config/upstart/
cat <<EOT|tee ~/.config/upstart/psd.conf
start on desktop-start
stop on desktop-end
exec psd
EOT
注意:您需要将该exec
行更改为启动守护进程的命令psd
。或者,您可以创建一个没有节的作业exec
,而是调用命令来启动和停止守护进程,如下所示:
post-start exec command-to-start-psd
pre-stop exec command-to-stop-psd
我从未使用过 psd,但您的问题似乎表明它是以 root 身份运行的?如果是这样,我认为您应该调查是否可以以您的用户身份运行守护进程的实例(更安全,并且会使创建 Upstart 作业更容易)。
有关著名 Upstart 事件的更多详细信息:
- man upstart-events(或http://upstart.ubuntu.com/cookbook/#ubuntu-well-known-events-ubuntu-specific)
也可以看看: