我创建了一个 systemd
目录 /lib/systemd/system/
中的服务文件发射nodejs
作为一项服务。问题是该文件包含到 nodej
的硬编码路径。在 ExecStart
field 。这意味着任何时候我更新nodejs
我将不得不手动更改此服务文件。有没有办法使用which node
下面文件中的命令自动设置路径?
[Unit]
Description=node-server-1
After=network.target
[Service]
Environment=NODE_PORT=3001
Type=simple
User=manid
ExecStart=/home/manidos/.nvm/versions/node/v14.15.1/bin/node /home/manidos/node-nginx/index.js
Restart=on-failure
[Install]
WantedBy=multi-user.target
最佳答案
您可以在 ExecStart
中运行一个简单的 bash 脚本。线:ExecStart=/bin/bash -c '$$(/usr/bin/which node) /home/manidos/node-nginx/index.js'
基本上,这是运行 which
子shell中的命令并传递其标准输出以由外部脚本运行。在 systemd 单元文件中使用这种特殊语法需要双美元,如 systemd.service manpage 中所述。 .
关于linux - 如何从 systemd 配置文件中的函数输出设置 ExecStart?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65087137/