Служба Systemd: не удалось выполнить вызов метода: сбой службы модуля

Я пытаюсь создать специальный сервис на своем VPS. Однако это не позволяет мне запустить его. В нем говорится следующее. Я не уверен, что происходит, но когда я запускаю его на своем ноутбуке с Ubuntu, он работает правильно. В чем может быть проблема?

sudo systemctl start websocket.service

Failed to issue method call: Unit websocket.service failed to load: No such file or directory. See system logs and 'systemctl status websocket.service' for details.

cat /lib/systemd/system/websocket.service

[Unit]
Description=php webSocket
After=syslog.target network.target

[Service]
User=root

Type=simple
ExecStart=/usr/bin/webs.sh
TimeoutStopSec=20
KillMode=process
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target
Alias=websocket.service

cat /usr/bin/webs.sh

#!/bin/bash
### BEGIN INIT INFO
# Provides:          webSocket
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: php webSocket
# Description:       php webSocket
### END INIT INFO
/usr/bin/php /path/to/server.php

Я пробовал systemctl daemon-reload но я получаю следующее

Attempted to remove disk file system, and we can't allow that.
Ignoring /etc/systemd/system/multi-user.target.wants/ssh.service -> /lib/systemd/system/ssh.service for systemd deputy init
Ignoring /etc/systemd/system/multi-user.target.wants/rsyslog.service -> /lib/systemd/system/rsyslog.service for systemd deputy init
Ignoring /etc/systemd/system/multi-user.target.wants/bind9.service -> /lib/systemd/system/bind9.service for systemd deputy init
Ignoring /etc/systemd/system/timers.target.wants/phpsessionclean.timer -> /lib/systemd/system/phpsessionclean.timer for systemd deputy init

Кто-нибудь может дать мне подсказку о том, что происходит?

Это разрешения для служебного файла:

-rwxr-xr-x 1 root root  264 Feb  6 05:06 websocket.service*

И это для файла bash:

-rwxr-xr-x 1 root root 349 Feb  6 05:02 webs.sh*

Я изменил веб-страницы .sh по пути / usr / bin / и обновил файл, как упомянул @TeroKilkanen, но у меня все еще та же проблема.

1
задан 6 February 2017 в 12:24
1 ответ

Одна из проблем заключается в том, что вы добавляете сценарий в корневой каталог, который не является местом для сценариев. / usr / local / bin - лучшее место для подобных сценариев.

Вторая проблема заключается в том, что ваш шебанг неверен. Shebang включает только путь к исполняемому файлу, который будет использоваться для выполнения скрипта, но не аргументы к нему. Это является причиной Нет такого файла или каталога. ошибка. https://unix.stackexchange.com/questions/63979/shebang-line-with-usr-bin-env-command-argument-fails-on-linux сообщает больше об этом поведении.

Вместо этого вы можете использовать этот подход:

Для webs.sh используйте следующее:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          webSocket
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: php webSocket
# Description:       php webSocket
### END INIT INFO
/usr/bin/php /path/to/server.php

Не забудьте предоставить исполняемые права доступа к файлу.

Меня пока не беспокоит комментарий Майкла, остальная часть вывода systemd может быть признаком этой неправильной настройки.

0
ответ дан 4 December 2019 в 05:16

Теги

Похожие вопросы