Node.JS Asked: 2024-03-01 13:00:09 +0800 CST2024-03-01 13:00:09 +0800 CST 2024-03-01 13:00:09 +0800 CST OpenVPN 断开连接而不杀死进程 772 我在 ubuntu 上使用 OpenVPN,如下所示sudo openvpn --config vpnconfig.ovpn --daemon 我想知道有没有办法在不终止 OpenVPN 进程的情况下停止/断开我启动的 OpenVPN 连接? ubuntu 1 个回答 Voted Best Answer Daniel B 2024-03-02T04:17:11+08:002024-03-02T04:17:11+08:00 关于控制 OpenVPN 进程的官方文档非常清楚:你必须使用信号。不过,您通常不会使用 SIGKILL。 在 Linux 上,OpenVPN 接受以下信号: SIGUSR1——有条件重启,设计为无需root权限即可重启 SIGHUP——硬重启 SIGUSR2 -- 将连接统计信息输出到日志文件或系统日志 SIGTERM、SIGINT——退出 您可以像 那样发出它们kill -USR1 1234,其中 1234 是您要控制的进程的进程 ID。 如果进程连接到终端,只需按Ctrl+ C。这会将 SIGINT 发送到前台进程。 如果您有多个 OpenVPN 进程以不受控制的方式在后台运行,也许可以考虑使用 Systemd 或类似的东西来管理这些进程。对于 Systemd,它们也可以是用户服务。 如果这不符合您的口味,您还可以使用htop之类的工具,使用其命令行以交互方式识别进程,然后直接发送信号。 writepid /path/to/pid-file文档中也提到了另一种可能性,即在 OpenVPN 配置文件内部或其--writepid /path/to/pid-file命令行上使用。然后,您可以读取该文件以找出进程 ID。
关于控制 OpenVPN 进程的官方文档非常清楚:你必须使用信号。不过,您通常不会使用 SIGKILL。
在 Linux 上,OpenVPN 接受以下信号:
您可以像 那样发出它们
kill -USR1 1234
,其中 1234 是您要控制的进程的进程 ID。如果进程连接到终端,只需按Ctrl+ C。这会将 SIGINT 发送到前台进程。
如果您有多个 OpenVPN 进程以不受控制的方式在后台运行,也许可以考虑使用 Systemd 或类似的东西来管理这些进程。对于 Systemd,它们也可以是用户服务。
如果这不符合您的口味,您还可以使用htop之类的工具,使用其命令行以交互方式识别进程,然后直接发送信号。
writepid /path/to/pid-file
文档中也提到了另一种可能性,即在 OpenVPN 配置文件内部或其--writepid /path/to/pid-file
命令行上使用。然后,您可以读取该文件以找出进程 ID。