首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在特定SSID上停止/启动SYSTEMD服务

在特定SSID上停止/启动SYSTEMD服务
EN

Unix & Linux用户
提问于 2020-11-11 01:04:12
回答 1查看 259关注 0票数 3

我只通过NFS连接我的NAS膝上型电脑(arch )驱动器,在特定的5G路由器上使用特定的SSID,例如NASrouter_5G。当我将wifi (这种情况经常发生)更改到另一个路由器(例如NoNasRouter_2G )时,我希望当我再次连接到NASrouter_5G时,驱动器被卸载并重新挂载,因为如果没有,文件管理器就会冻结。

在我的研究中,我发现了一种匹配语法,但它只检测接口名,而且始终是wifi0,因此这似乎不起作用。而且,网络调度员看起来很有前途,我只是没有发现任何关于如何使用它的东西。

,所以我的问题是:

我如何做到这一点,最好是使用systemd,因为我在启动时挂载了驱动器,然后用systemd进行了歇斯底里,它工作得很好。但是任何方法都是值得赞赏的,因为我不想每次更改网络时都输入sudo systemctl stop nfs_moun、__t或一些alias

安装服务文件包含以下内容:

代码语言:javascript
复制
[jack@jacks ~]$ cat /usr/lib/systemd/system/nfs_mount.service 
[Unit]
Descritpion=Documents Mount NAS systemctl start nfs_mount
After=suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target syslog.target network-online.target
Wants=syslog.target network-online.target

[Service]
Type=oneshot
ExecStart=/home/jack/nfs_mount.sh

[Install]
WantedBy=multi-user.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-11-11 01:54:05

有一些系统单元预定义条件可以使用,但是它们中的任何一个都与这个用例相匹配。

由于您的服务是oneshot服务,因此一旦主进程终止,该服务将变得不活跃。因此,使用简单的使用无限循环来守护服务,并使用基于SSID比较的IF语句包装您的nfs_mount.sh脚本可以使它:

代码语言:javascript
复制
#!/bin/sh  
while :
do
    sleep 5
    if [ "$(iwgetid -r)" == 'your_ssid' ] ; then 
      # Your code here
    else 
      # If it was not a oneshot service you can make a place here for a code to kill the service
    fi
done

因此,只有当您的系统连接到与所需的SSID匹配的WIFI时,文件系统才会被挂载。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/619001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档