You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何禁用名称以破折号“-”开头的systemd服务

解决systemctl处理以-开头的服务名解析问题

这个坑我之前踩过!systemctl会把以-开头的字符串当成命令选项来解析,所以你输入"-server"的时候,它会把-s当成一个选项,剩下的erver就成了错误的信号字符串,自然报错。下面给你几个稳妥的解决办法:

方法1:用--分隔选项与服务名

在很多Linux命令里,--是一个特殊标记,用来告诉命令:后面的内容都是位置参数,不是命令选项。用这个方法最直接:

sudo systemctl stop -- "-server"

不管服务名开头有多少个-,这个方法都能让systemctl正确识别服务名。

方法2:直接指定服务文件的绝对路径

systemd的服务文件通常存放在两个位置:自定义服务一般在/etc/systemd/system/,系统自带服务在/usr/lib/systemd/system/。你可以直接用服务文件的绝对路径来操作,完全绕开名称解析的问题:

# 假设你的服务文件在/etc/systemd/system/目录下
sudo systemctl stop /etc/systemd/system/-server.service

方法3:转义开头的破折号(可选,不如前两种可靠)

用反斜杠转义开头的-,让shell把它当成普通字符传递给systemctl:

sudo systemctl stop \-server

不过这个方法受shell解析规则影响,有时候可能出问题,优先推荐前两种。

额外建议:重命名服务(一劳永逸)

如果这个服务需要长期使用,建议直接重命名避免后续麻烦:

# 移动服务文件并重命名
sudo mv /etc/systemd/system/-server.service /etc/systemd/system/my-server.service
# 重新加载systemd配置
sudo systemctl daemon-reload

之后你就可以用正常的命令操作了,比如sudo systemctl stop my-server。

内容的提问来源于stack exchange,提问作者Stahp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:52:32