![只要我的主文件夹被解密,我如何才能运行应用程序?](https://linux22.com/image/1462935/%E5%8F%AA%E8%A6%81%E6%88%91%E7%9A%84%E4%B8%BB%E6%96%87%E4%BB%B6%E5%A4%B9%E8%A2%AB%E8%A7%A3%E5%AF%86%EF%BC%8C%E6%88%91%E5%A6%82%E4%BD%95%E6%89%8D%E8%83%BD%E8%BF%90%E8%A1%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%EF%BC%9F.png)
我最近开始使用同步,我遇到了一个挑战:
我的笔记本电脑上的主文件夹已加密,我想同步主文件夹内的文件夹。该文件夹使用ecryptfs
(使用默认的 Ubuntu“是否要加密主文件夹?”选项)进行加密,据我所知,它在登录时安装,在注销时卸载。
所以我无法将 syncthing 作为启动服务运行(例如使用supervisor)。
它需要启动第一的登录,以及最后的注销过程必须发送SIGINT
给该进程,等待它关闭,然后完成注销过程。
我一直在考虑使用.bashrc
和.bash_logout
,但这似乎很难确保它只在第一的和最后的注销。所以我选择退出。
我想到的另一个选择是使用kdm
(我用它来登录 WM. KDE,在本例中)。但这意味着它只会在图形登录期间运行。不过没关系,因为我只使用非图形登录来排除系统故障。然而,我不知道如何使用kdm
:\
也许还有一个选项可以编写udev
触发器?但我怀疑这些触发器是否能用于正确关闭 syncthing,因为它会触发后设备被卸载。
也许ecryptfs
提供一个选项?但我什么也没找到。
解决这个问题的正确方法是什么? 怎么解决?
答案1
根据KDE 文档您可以配置 KDE,让其在用户注销时运行脚本。您可以检查 USER 环境变量,以检查注销的用户是否是您要处理的用户。如果注销的用户是您,则可以停止该服务。
当用户登录时,您应该运行另一个脚本以确保服务正在运行。在这里执行相同的检查。
KDE 应该/etc/kde3/kdm/Xstartup
在登录和/etc/kde3/kdm/Xreset
注销时运行该文件,但如果这不起作用,则可能将其设置为其他位置。检查/etc/kde3/kdm/kdmrc
文件位置是否发生变化。
您可以在这里找到更多替代方案:为 Linux 创建注销脚本/任务