【问题标题】:systemd and ExecStart with arguments with parsing errorssystemd 和 ExecStart 带有解析错误的参数
【发布时间】:2021-05-18 11:08:32
【问题描述】:

我用这个“.service”文件创建了一个流体合成服务:

[Unit]
Description=fluidsynth-ng
After=xsynth-network.service

[Service]
EnvironmentFile=/etc/fluidsynth-ng.conf
ExecStart=/usr/bin/fluidsynth -a $AUDIO_DEVICE -c $AUDIO_BUFFERS -z $BUFFER_SIZE -r $SAMPLE_RATE -s -o shell.port=9988 -m $MIDI_DRIVER -i
Type=simple
User=root
Group=root
PIDFile=/tmp/fluidsynth-ng.pid

[Install]
WantedBy=multi-user.target

问题是我想将端口参数传递给 ExecStart 但它不起作用:

[Unit]
Description=fluidsynth-ng
After=xsynth-network.service

[Service]
EnvironmentFile=/etc/fluidsynth-ng.conf
ExecStart=/usr/bin/fluidsynth -a $AUDIO_DEVICE -c $AUDIO_BUFFERS -z $BUFFER_SIZE -r $SAMPLE_RATE -s -o shell.port=$SERVER_PORT -m $MIDI_DRIVER -i
Type=simple
User=root
Group=root
PIDFile=/tmp/fluidsynth-ng.pid

[Install]
WantedBy=multi-user.target

我认为 $SERVER_PORT 解析有问题,因为我收到此错误:“fluidsynth: error: Failed to bind server socket”

EnvironmentFile 看起来正确:

AUDIO_DEVICE=jack
SERVER_PORT=9988
SAMPLE_RATE=48000
AUDIO_BUFFERS=2
BUFFER_SIZE=64
MIDI_DRIVER=alsa_seq

有什么帮助吗?

【问题讨论】:

  • 可能有其他东西占用了该端口。仔细检查。

标签: linux shell systemd


【解决方案1】:

启动ss -tulpnetstat -tulp 以检查哪些端口已打开以及哪个进程正在侦听您的端口9988,您可能会看到您的进程的其他实例已经在侦听,因此您无法分配端口到不同的进程。

【讨论】:

  • 不,不是端口问题。问题在于 -o shell.port=$SERVER_PORT。它不会将 $SERVER_PORT 转换为 9988。我认为这是因为 "=$" 组合
猜你喜欢
  • 2016-08-25
  • 2018-06-20
  • 2016-01-10
  • 2019-11-17
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
相关资源
最近更新 更多