Я создаю простой сервис эхо-сокетов с различными именами сервисов и сокетов. Могу ли я знать, где я делаю ошибку? Я попытался получить foo@.service, который не работал, и поэтому я переименовал службу в foo.service. Я вижу, что похожий код работает с сокетом и службой, названными одинаково как echo.socket и echo@.service
$ systemctl cat bar.socket
# /etc/systemd/system/bar.socket
#bar socket
[Unit]
Description=bar socket
[Socket]
ListenStream=22223
Accept=yes
$ systemctl cat foo.service
#Foo service
[Unit]
Description=foo service
[Service]
ExecStart=-/bin/cat
StandardInput=socket
Sockets=bar.socket
После запуска сокета с помощью команды systemctl start bar.socket
, Статус показывает сокет
$ systemctl status bar.socket
● bar.socket - bar socket
Loaded: loaded (/etc/systemd/system/bar.socket; static; vendor preset: enabled)
Active: active (listening) since Thu 2020-03-19 20:20:00 PDT; 17s ago
Listen: [::]:22223 (Stream)
Accepted: 7; Connected: 0
Tasks: 0 (limit: 2318)
CGroup: /system.slice/bar.socket
Mar 19 20:20:00 ubuntu systemd[1]: Listening on bar socket.
Однажды я выполните команду
socat - TCP:127.0.0.1:22223
Сбой сокета, и при проверке состояния я вижу ошибку ниже.
* Ошибка - $ systemctl status bar.socket *
● bar.socket - bar socket
Loaded: loaded (/etc/systemd/system/bar.socket; static; vendor preset: enabled)
Active: failed (Result: resources) since Thu 2020-03-19 20:17:59 PDT; 1min 19s ago
Listen: [::]:22223 (Stream)
Accepted: 7; Connected: 0
Mar 19 20:17:12 ubuntu systemd[1]: Listening on bar socket.
Mar 19 20:17:59 ubuntu systemd[1]: bar.socket: Failed to queue service startup job (Maybe the service file is missing or not a template unit?): Invalid argument
Mar 19 20:17:59 ubuntu systemd[1]: bar.socket: Failed with result 'resources'.
$ systemctl cat echo.socket
# /etc/systemd/system/echo.socket
#echo socket
[Unit]
Description=echo socket
[Socket]
ListenStream=22222
Accept=yes
$ systemctl cat echo@.service
# /etc/systemd/system/echo@.service
#Echo service
[Unit]
Description=echo service
[Service]
ExecStart=-/bin/cat
StandardInput=socket