【发布时间】:2019-10-04 22:18:42
【问题描述】:
如果我这样做:
#!/usr/bin/env bash
set -e;
cd "$(dirname "$BASH_SOURCE")"
ln -sf "$(pwd)/interos-es-mdb.service" '/etc/systemd/system/interos-es-mdb.service'
systemctl enable interos-es-mdb.service
systemctl start interos-es-mdb.service
然后我得到这个错误:
ln: 无法创建符号链接 '/etc/systemd/system/interos-es-mdb.service': 只读文件系统
有人知道在 nixos 机器上安装服务的正确方法吗? (我是root用户)...这里是服务供参考:
[Unit]
Description=Interos MongoDB+ES log capture
After=network.target
[Service]
Environment=interos_emit_only_json=yes
EnvironmentFile=/root/interos/env/es-service.env
StartLimitIntervalSec=0
Type=simple
Restart=always
RestartSec=1
ExecStart=/root/interos/repos/elastic-search-app/syslog-exec.sh
[Install]
WantedBy=multi-user.target
更新: 也许我正在寻找的是“每用户”服务,而不是作为 root 等运行的东西。
【问题讨论】:
-
...所以目标是将定义此服务的新内容添加到
/etc/nixos/configuration.nix,我假设? (这是正确的方法)。 -
顺便说一句,与您的问题无关,但
$(pwd)是错误的形式- 改用$PWD,效率更高- 而set -e是... rightly controversial。 -
@CharlesDuffy 是的,我猜 configuration.nix 是正确的方法..如果您可以添加一个简单的答案并附上一个足够好的链接,谢谢
-
您能否编辑问题以包含您的
.service文件,以便我进行适当的翻译? -
另外——你为 Interos 构建了一个派生......对吗?