У меня есть служба поддержки, работающая в фоновом режиме за пользовательским gmod игровым сервисом. Я записал свой собственный gmod.service файл поэтому теперь, я могу запустить, он с сервисом gmod запускается. Вы видите его ниже. Действительно ли возможно ввести команду на ту службу от терминала или сценария удара, таким образом, я могу изменить карту, например?Заранее спасибо
[Unit]
Description=Gmod server
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh
[Install]
WantedBy=multi-user.target
Это - хороший пример для того, когда systemd шаблоны единицы могут использоваться. Возможно иметь systemd сервис, который будут называть с аргументом и будет использовать тот аргумент в сервисном определении, например, вручать его программе, которая запущена. Вот пример для Вашего случая:
Установите свою единицу как
/etc/systemd/system/gmod@.service
Измените файл для сходства с этим:
[Unit]
Description=Gmod server (map: %I)
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /home/server/Documents/Servers/Gmod/run_gmod.sh %i
[Install]
WantedBy=multi-user.target
DefaultInstance=myDefaultMap
(Вы, возможно, должны были бы работать systemctl daemon-reload
в этой точке, чтобы заставить systemd считать измененный файл). После этого Вы сможете запустить gmod с аргумента как это:
systemctl start gmod@myMapName.service
Systemd будет использовать шаблонный файл и замену I%
с аргументом, и %i
с заключенным в кавычки аргументом оболочки затем запустите его как услуга названный экземпляр gmod@myMapName.service
. Можно проверить это путем выполнения
systemctl status gmod@myMapName
У Вас может также быть он автоматически запуск экземпляра по умолчанию во время начальной загрузки как это:
systemctl enable gmod@
Таким образом, Вы могли даже запустить несколько экземпляров gmod, если программа позволяет это. Поскольку дополнительные материалы для чтения по теме проверяют systemd.unit (5) страница руководства.