当前位置: 首页 > news >正文

WSL 教程:使用 Systemd 配置服务自动启动(SSH frpc)

如何在新版本的 WSL (Windows Subsystem for Linux) 中,利用 Systemd 来设置 OpenSSH 服务器和 frpc(FRP 客户端)在每次启动时自动运行。

适用条件: 此方法适用于支持 Systemd 的 WSL 版本(通常在较新的 Windows 11 版本中提供)。

第 1 步:启用 Systemd

首先,你需要在 WSL 的配置中显式启用 Systemd。

  1. 编辑 wsl.conf 文件
    在你的 WSL 终端中,使用 vim 编辑器创建或打开 /etc/wsl.conf 文件:

    sudo vim /etc/wsl.conf
  2. 添加配置
    i 进入插入模式,然后将以下内容添加到文件中:

    [boot]
    systemd=true

    Esc 退出插入模式,然后输入 :wq 并按 Enter 保存文件并退出。

第 2 步:重启 WSL

为了让上述配置生效,你必须完全关闭并重启 WSL 实例。这是一个关键步骤。

  1. 打开 Windows 的 PowerShell命令提示符 (CMD)

  2. 运行以下命令来关闭所有正在运行的 WSL 实例:

    wsl --shutdown
  3. 等待几秒钟,然后重新打开你的 WSL 终端。WSL 将会以启用 Systemd 的模式重新启动。

第 3 步:使用 systemctl 管理 SSH 服务

现在 WSL 已经由 Systemd 管理初始化过程,你可以像在标准的 Linux 服务器上一样,使用 systemctl 命令来控制服务。

  1. 设置 SSH 服务开机自启
    这个命令会让 SSH 服务在每次 WSL 启动时自动运行:

    sudo systemctl enable ssh
  2. 立即启动 SSH 服务
    如果你想立即启动服务而无需再次重启,请运行:

    sudo systemctl start ssh
  3. 停止 SSH 服务
    如果你需要临时停止服务,可以运行:

    sudo systemctl stop ssh
  4. 检查服务状态
    你可以随时使用以下命令来验证 SSH 服务是否正在运行:

    sudo systemctl status ssh
状态检查成功案例与解读

当你运行 sudo systemctl status ssh 后,你会看到一段详细的输出。下面是一个成功运行的实际案例:

(base) yuuu@DESKTOP-M32KRCT:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell serverLoaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2025-10-08 15:25:16 CST; 8min ago
...
Oct 08 15:25:16 DESKTOP-M32KRCT sshd[226]: Server listening on 0.0.0.0 port 22.
Oct 08 15:25:16 DESKTOP-M32KRCT systemd[1]: Started OpenBSD Secure Shell server.
  • Loaded: ... enabled; ...:表示已成功设置开机自启。

  • Active: active (running):表示服务正在正常运行。

第 4 步:(可选)配置 frpc 自动启动

如果你的 frpc 和其配置文件 frpc.toml 是手动放置在某个目录(例如 /home/yuuu/frp/),而不是通过包管理器安装的,你需要手动创建一个 systemd 服务文件来管理它。

  1. 创建 systemd 服务文件
    使用 vim 在 /etc/systemd/system/ 目录下创建一个名为 frpc.service 的文件。

    sudo vim /etc/systemd/system/frpc.service
  2. 编写服务配置文件
    i 进入插入模式,将以下内容复制并粘贴到 frpc.service 文件中。

    !!!重要: 你需要根据你的实际情况,修改 UserExecStart 这两行中的 用户名文件绝对路径

    [Unit]
    Description=FRP Client Service
    After=network.target[Service]
    Type=simple
    # 请将 'yuuu' 替换为你的 WSL 用户名
    User=yuuu
    # 请将下面的路径替换为你的 frpc 程序和 frpc.toml 配置文件的实际绝对路径
    ExecStart=/home/yuuu/frp/frpc -c /home/yuuu/frp/frpc.toml
    Restart=on-failure
    RestartSec=5s[Install]
    WantedBy=multi-user.target

    Esc 退出插入模式,然后输入 :wq 并按 Enter 保存文件并退出。

frpc.service 文件字段详解
  • [Unit]:定义了服务的基本信息和依赖关系。

    • Description: 服务的简短描述。

    • After=network.target: 确保在网络连接就绪后才启动本服务。

  • [Service]:定义了服务的核心行为。

    • Type=simple: 服务类型,simple 表示 ExecStart 的进程就是主进程。

    • User=yuuu: 运行此服务的用户名,请务必修改。

    • ExecStart=/home/yuuu/frp/frpc -c ...: 启动服务时要执行的命令,必须使用绝对路径

    • Restart=on-failure: 当进程异常退出时,自动重启。

    • RestartSec=5s: 重启前等待 5 秒。

  • [Install]:定义了服务如何被“启用”(enable)。

    • WantedBy=multi-user.target: 使服务在系统进入多用户模式时自动启动。
  1. 管理 frpc 服务

    • 重新加载 systemd 配置

      sudo systemctl daemon-reload
    • 设置 frpc 开机自启

      sudo systemctl enable frpc
    • 立即启动 frpc 服务

      sudo systemctl start frpc
    • 停止 frpc 服务

      sudo systemctl stop frpc
    • 检查 frpc 服务状态

      sudo systemctl status frpc
实战排错:解决 frpc 启动失败

在配置过程中,你可能会遇到服务启动失败的情况。下面是一个非常典型的失败案例及其解决方案。

失败状态输出:

(base) yuuu@DESKTOP-M32KRCT:~/app/frp$ sudo systemctl status frpc
● frpc.service - FRP Client ServiceLoaded: loaded (/etc/systemd/system/frpc.service; enabled; vendor preset: enabled)Active: activating (auto-restart) (Result: exit-code) since Wed 2025-10-08 16:13:42 CST; 4s agoProcess: 1829 ExecStart=/home/yuuu/app/frp/frpc -c /home/yuuu/app/frp/frpc.toml (code=exited, status=203/EXEC)Main PID: 1829 (code=exited, status=203/EXEC)CPU: 1msOct 08 16:13:42 DESKTOP-M32KRCT systemd[1]: frpc.service: Failed with result 'exit-code'.

错误分析与解读:

  • Active: activating (auto-restart): 这表示 systemd 正在不断尝试启动服务,但服务立即失败,于是 systemd 根据 Restart=on-failure 的策略准备再次重启它。

  • Process: ... (code=exited, status=203/EXEC): 这是最关键的错误信息!status=203/EXEC 是一个标准的 systemd 错误码,它明确指出执行 ExecStart 定义的命令时发生了错误。这通常意味着:

    1. ExecStart 中的可执行文件路径不正确。

    2. 指定路径下的文件没有执行权限

解决方案:

  1. 检查路径
    仔细核对你在 frpc.service 文件中 ExecStart 字段填写的 frpc 程序路径是否完全正确。

  2. 检查并赋予执行权限
    203/EXEC 错误最常见的原因是文件缺少执行权限。

    # 将路径替换为你的实际路径
    ls -l /home/yuuu/app/frp/frpc 

    如果输出的权限部分开头没有 x,就使用 chmod 命令为其添加执行权限:

    # 将路径替换为你的实际路径
    sudo chmod +x /home/yuuu/app/frp/frpc
  3. 重新加载并重启服务
    在修改完权限后,需要重新加载配置并重启服务:

    sudo systemctl daemon-reload
    sudo systemctl restart frpc
  4. 再次检查状态
    最后,再次检查服务状态,此时应该会变为 Active: active (running)

    sudo systemctl status frpc
更新 frpc 配置文件

当你需要修改 frpc 的配置(例如,添加或更改代理规则)时,你需要让正在后台运行的服务重新加载这些设置。systemd 使这个过程非常简单。

  1. 编辑配置文件
    首先,使用 vim 编辑你的 frpc.toml 文件并保存更改。

    # 将路径替换为你的实际路径
    vim /home/yuuu/app/frp/frpc.toml
  2. 重启 frpc 服务
    编辑并保存配置文件后,只需重启 frpc 服务,它就会加载最新的配置。

    sudo systemctl restart frpc

    这个命令会安全地停止当前的服务进程,然后立即使用更新后的配置重新启动它。

  3. (建议)检查服务状态
    重启后,最好检查一下服务的状态,确保它在加载新配置后没有出现错误,并且仍在正常运行。

    sudo systemctl status frpc
http://www.dtcms.com/a/458840.html

相关文章:

  • wordpress什么模块深圳优化网站排名软件
  • 读写INI文件源码(点击关注)
  • ps如何做网站轮播图网站开发通过什么途径接活
  • 如何选择网站开发公司鲜花网站建设的利息分析
  • 可做生物试卷的网站网站建设多少钱兴田德润放心
  • 做网站要有策划么江都微信网站建设
  • 网站模版 模板门户网站系统有哪些平台
  • 深圳建科技有限公司网站首页wordpress投稿页面
  • 南昌网站开发培训学校设计制作生态瓶
  • 合肥房产网站建设建设网站的申请信用卡
  • 鲁中网站wordpress+park主题
  • modbus tcp 跟 modbus rtu
  • NVMe高速传输之摆脱XDMA设计43:队列管理功能验证与分析1
  • 网站开发课程软件wordpress幻灯片主题设置
  • 域名过期网站还有用吗营销型网站的推广方法
  • C++(10.4)
  • 2018什么做网站简易网页模板
  • 果洛州商城网站建设分析网站建设的体会
  • 网站更新问题怀化市建设局门户网站
  • 双耳听觉与空间声感知的实验原理---笔记
  • 网站建设需要什么流程免费自取ppt模板
  • 怎样制作网站后台网络推广培训哪个好
  • 洛阳做网站优化最新新闻热点事件50字
  • 重庆玖玺国际做网站做暧免费网站
  • MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
  • 从零开始的C语言学习014 指针5
  • photoshop做图网站长春建设集团股份有限公司网站
  • 都江堰旅游门户网站电子商务网站的开发语言
  • 卡片式设计的网站旅游网站建设系统
  • 做铁合金用哪个外贸网站好烟台网站建设的方法有哪些