#linux #bash #ubuntu #systemd
#linux #bash #ubuntu #systemd
Вопрос:
Я создал systemd
файл службы в каталоге /lib/systemd/system/
для запуска nodejs
в качестве службы. Проблема в том, что файл содержит жестко заданный путь к nodej
ExecStart
полю in. Это означает, что при каждом обновлении 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
Комментарии:
1. Напишите свой собственный скрипт, с помощью которого узел и команды запуска узла в нем, а затем ссылаются на него в файле systemd service.
2. вы должны создать ссылку на текущую версию и сослаться на нее: ln -s /home/manidos/.nvm/versions/node/v14.15.1 /home/manidos/.nvm/versions/node/current
Ответ №1:
Вы можете запустить простой скрипт bash в ExecStart
строке:
ExecStart=/bin/bash -c '$$(/usr/bin/which node) /home/manidos/node-nginx/index.js'
По сути, это запуск which
команды в подоболочке и передача ее стандартного вывода для запуска внешним скриптом. Для использования этого конкретного синтаксиса в файле модуля systemd требуются двойные доллары, как описано на странице руководства systemd.service .