我有两个脚本-一个用于通过SSHFS挂载一些文件夹的脚本-一个用于卸载的脚本。
我想在启动默认的Ubuntu桌面时(在图形控制台登录后)启动安装脚本,而当我从工具栏右上角的齿轮“注销...”时启动卸载脚本。桌面。
请有人能告诉我如何实现吗?在桌面启动/退出时运行命令最方便/最标准的钩子是什么?
我有两个脚本-一个用于通过SSHFS挂载一些文件夹的脚本-一个用于卸载的脚本。
我想在启动默认的Ubuntu桌面时(在图形控制台登录后)启动安装脚本,而当我从工具栏右上角的齿轮“注销...”时启动卸载脚本。桌面。
请有人能告诉我如何实现吗?在桌面启动/退出时运行命令最方便/最标准的钩子是什么?
Answers:
考虑到您登录Unity时而不是其他登录时运行作业的要求,Upstart 会话作业似乎很完美。
您可能已经注意到了:GUI登录后运行的init进程处于第二个进程中。这init是一个适当的Upstart初始化,您可以根据它发出的事件来启动和停止会话作业。根本不需要root特权。更好的是(或从角度来看更糟),无头系统尚未完全支持此功能。SSH登录并没有从我刚才进行的快速测试中启动用户初始化。
要创建会话作业,请在中创建一个新.conf文件~/.config/upstart。这是Upstart会话作业($XDG_CONFIG_HOME/upstart)的默认主目录,如果不存在,请创建它。这是一个示例工作:
tee ~/.config/upstart/myjob.conf <<EOF
description "My job"
start on desktop-start
stop on desktop-end
script
firefox 'http://upstart.ubuntu.com/cookbook/#session-job'
end script
EOF
您可以手动控制它:
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。