如何在Unity登录/注销上运行脚本?
我有两个脚本 – 一个用于在SSHFS上安装一些文件夹 – 另一个用于卸载。
我想在我的默认Ubuntu桌面启动时启动挂载脚本(在我在图形控制台登录后) – 以及当我从“右上角”的齿轮“退出…”时卸载脚本桌面。
请有人能告诉我如何实现这个目标吗? 在桌面启动/退出时运行命令最方便/标准的钩子是什么?
考虑到您在登录Unity时需要运行作业而不是其他登录,Upstart 会话作业似乎是完美的。
您可能已经注意到它:在GUI登录后运行的进程处于第二个init
进程下。 此init
是一个正确的Upstart init,您可以根据它发出的事件启动和停止会话作业。 根本不需要root权限。 更好(或者更糟,取决于观点),这对于无头系统尚未完全支持。 SSH登录没有从我刚刚进行的快速测试中启动用户init。
要创建会话作业,请在~/.config/upstart
创建一个新的.conf
文件。 这是Upstart会话作业的默认主目录( $XDG_CONFIG_HOME/upstart
),如果不存在则创建它。 这是一个示例工作:
tee ~/.config/upstart/myjob.conf <
你可以手动控制它:
start myjob # or initctl start myjob
service
命令用于控制系统作业( /etc/init.d
或/etc/init
)。 要控制会话作业,需要使用initctl
命令,该命令用于与Upstart交互。
有关您可以使用的更多活动,请参阅man upstart-events
。
解决方案是使用新手任务。 我需要两个任务 – 一个桌面为用户初始化时触发; 用户会话到期时的第二个。 在Ubuntu 14.04下,以下两个脚本适合我。
在〜/ .config / upstart / desktopOpen.conf中
description "Desktop Open Task" start on desktop-start task script # Commands to mount sshfs go here as shell-script. end script
在〜/ .config / upstart / desktopClose.conf中
description "Desktop Close Task" start on session-end task script # Commands to unmount sshfs go here as shell-script. end script
我的手指交叉,这些事件将继续满足未来Ubuntu版本的要求。 我认为值得在这里发布我的解决方案 – 以防它对别人有用。
以下是登录后运行脚本的一些建议:
启动后的StackOverflow Linux脚本 :Cliff说明是将您的* .sh文件放在/etc/profile.d中。
如果你想在启动时运行脚本,这里有一些建议:
启动后的StackOverflow Linux脚本 :Cliff说明是使用/etc/rc.local或crontab。