如何终止以守护进程模式启动的OpenVPN连接?
无需手动查找进程即可终止OpenVPN守护进程的方法
当然可以不用手动ps找进程再杀!这里有几个更高效的方法:
利用进程匹配直接终止:
你可以用pkill命令直接匹配启动时的命令行参数,精准定位到你的OpenVPN进程:sudo pkill -f "openvpn --config connection.ovpn"-f参数会匹配整个命令行字符串,这样就不会误杀其他OpenVPN进程(如果你同时运行了多个的话)。提前指定PID文件(推荐下次启动时使用):
下次启动OpenVPN守护进程时,加上--writepid参数指定一个PID文件路径,比如:sudo openvpn --daemon --config connection.ovpn --writepid /var/run/openvpn-connection.pid之后要终止时,直接读取PID文件里的进程ID来杀死:
sudo kill $(cat /var/run/openvpn-connection.pid)这种方法更严谨,也避免了匹配命令行可能出现的误差。
使用管理套接字(适合需要更多控制的场景):
启动时添加管理套接字参数,让OpenVPN监听一个Unix套接字:sudo openvpn --daemon --config connection.ovpn --management /var/run/openvpn-connection.sock unix之后可以通过
socat向套接字发送终止信号:echo "signal SIGTERM" | sudo socat - /var/run/openvpn-connection.sock这种方法不仅能终止连接,还能执行其他管理操作(比如查看连接状态)。
如果你的OpenVPN是通过系统服务管理的(比如systemd),那直接用sudo systemctl stop openvpn@connection就行,但看你的启动方式是直接命令行启动守护进程,前面的方法更适用。
内容的提问来源于stack exchange,提问作者lofidevops




