问题:我有一台笔记本电脑(运行 ubuntu 20.04),它移动性很强,可以在多个位置工作。在位置 A 时:我有一个需要工作的 CIFS 共享。不在位置 A 时,我不需要这个特定的 CIFS 共享。如果我使用一切方法手动安装 CIFS 共享,但我想自动执行该过程,因为我每天至少更改 2-3 次位置。当我在位置 A 连接到网络时,我不想手动安装 cifs 文件共享,我宁愿让它运行。更重要的是,如果我断开与位置 A 的连接,我不希望我的系统崩溃,因为它认为应该有一个不再存在的文件系统。手动完成这些任务很快就会变得乏味。如何在连接到特定网络时自动安装共享,然后在不连接到同一网络时卸载共享?
笔记:这不是关于 fstab 的问题,除非您知道如何让 fstab 文件以这种方式运行,即不断切换位置和网络,并且仅在适当的位置/网络中安装文件系统。我有一个用于 cifs 共享的 fstab 条目,这使得安装和卸载更容易,但实际上并没有解决我的问题。
答案1
一种可能性是 systemd 自动挂载。
[1] 创建挂载点。
它不能位于您的主目录或 /media 下。因此,例如在 /mnt/SrvAshare 处创建一个。
[2] 然后在 /etc/fstab 中添加以下内容(例如):
//serverA/sharename /mnt/SrvAshare cifs defaults,uid=1000,noauto,x-systemd.automount,x-systemd.idle-timeout=30,x-systemd.mount-timeout=10 0 0
[3] 然后让 systemd 正常运行:
sudo systemctl daemon-reload
sudo systemctl restart remote-fs.target
它的工作原理是在启动时不自动安装(禁止自动),但根据规定(x-systemd.automount) 当您或某个应用程序或某个进程访问 /mnt/SrvAshare 挂载点时。它是无缝的。例如,如果您只是执行此操作,ls -l /mnt/SrvAshare
它将挂载共享。
x-systemd.空闲超时=30如果 30 秒内 (用户指定) 没有使用共享,则会卸载该共享。
x-systemd.mount 超时=10将尝试挂载共享 10 秒(用户指定),如果无法访问则停止。如果您在错误的位置无意中选择了挂载点,则很有用。
答案2
应x-systemd.idle-timeout=30
删除 并noperm
添加 以获得读/写权限。还应添加用户名和密码部分。
//serverA/sharename /mnt/SrvAshare cifs username=yourusername,password=yourpassword,defaults,noperm,noauto,x-systemd.automount,x-systemd.mount-timeout=10 0 0
- 访问任何 Windows 共享都需要用户名和密码。
- 我们需要
noperm
能够传输或编辑任何文件。 - 空闲超时将导致重新挂载共享文件夹,即使它在 nautilus 中保持打开状态。