使用 systemd 在 Ubuntu 18.04 上自动启动 Twonky 服务器
Auto-starting Twonky Server on Ubuntu 18.04 using systemd
我试图在 Ubuntu 上设置 Twonky 服务器。服务器工作正常,但我无法让 systemd
自动启动服务器(使用我在 /etc/systemd/system/twonkyserver.service
创建的服务文件)。有时我会收到神秘的错误消息,指出某些 PID
-file (/var/run/mediaserver.pid
) 无法访问,服务的退出代码是 13
,这显然是一个 EACCES Permission denied
错误.该服务以根用户身份运行。
我终于通过将 twonkyserver.service
文件中的 PIDFile
设置为 /var/run/mediaserver.pid
来解决问题。作为参考,请在下面找到服务文件:
[Unit]
Description=Twonky Server Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/twonky/twonky.sh start
ExecStop=/usr/local/twonky/twonky.sh stop
ExecReload=/usr/local/twonky/twonky.sh reload
ExecRestart=/usr/local/twonky/twonky.sh restart
PIDFile=/var/run/mediaserver.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
如上所述,以下服务文件会在启动时自动启动 Twonky 服务器。只需使用 vim /etc/systemd/system/twonkyserver.service
创建它。这假设您已将 Twonky 服务器安装到 usr/local/twonky
。 shell-文件 twonky.sh
已经为服务文件提供了一个很好的接口(twonky.sh start|stop|reload|restart
,另见 twonky.sh -h
)。
[Unit]
Description=Twonky Server Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/twonky/twonky.sh start
ExecStop=/usr/local/twonky/twonky.sh stop
ExecReload=/usr/local/twonky/twonky.sh reload
ExecRestart=/usr/local/twonky/twonky.sh restart
PIDFile=/var/run/mediaserver.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
我会稍微修改 twonky.sh 的启动和停止命令,并将它们直接放入 systemd 的 twonky.service 文件中:
[Unit]
Description=Twonky Server Service
After=network.target
[Service]
Type=simple
#Systemd will ensure RuntimeDirectory for the PID file is created under /var/run
RuntimeDirectory=twonky
PIDFile=/var/run/twonky/mediaserver.pid
# use the -mspid argument for twonkystarter to put the pid file in the right place
ExecStart=/usr/local/twonky/twonkystarter -mspid /var/run/twonky/mediaserver.pid -inifile /usr/local/twonky/twonkyserver.ini -logfile /usr/local/twonky/twonky.log -appdata /usr/local/twonky
ExecStop=kill -s TERM $MAINPID
ExecStopPost=-killall -s TERM twonkystarter
ExecStopPost=-killall -s TERM twonky
# Twonky 8.5.1 doesn't reload, it stops instead (on arm at least)
# ExecReload=kill -s HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
您需要确保 ExecStart 命令中的路径匹配您解压 twonky 的位置,以及您想要 .pid 文件、配置、日志文件和 运行time 应用程序数据的位置,除非您对它们的默认位置感到满意.
将所有 into/etc/systemd/system/twonky.server 放入后,运行
sudo systemctl daemon-reload
sudo systemctl start twonky
sudo systemctl enable twonky
我试图在 Ubuntu 上设置 Twonky 服务器。服务器工作正常,但我无法让 systemd
自动启动服务器(使用我在 /etc/systemd/system/twonkyserver.service
创建的服务文件)。有时我会收到神秘的错误消息,指出某些 PID
-file (/var/run/mediaserver.pid
) 无法访问,服务的退出代码是 13
,这显然是一个 EACCES Permission denied
错误.该服务以根用户身份运行。
我终于通过将 twonkyserver.service
文件中的 PIDFile
设置为 /var/run/mediaserver.pid
来解决问题。作为参考,请在下面找到服务文件:
[Unit]
Description=Twonky Server Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/twonky/twonky.sh start
ExecStop=/usr/local/twonky/twonky.sh stop
ExecReload=/usr/local/twonky/twonky.sh reload
ExecRestart=/usr/local/twonky/twonky.sh restart
PIDFile=/var/run/mediaserver.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
如上所述,以下服务文件会在启动时自动启动 Twonky 服务器。只需使用 vim /etc/systemd/system/twonkyserver.service
创建它。这假设您已将 Twonky 服务器安装到 usr/local/twonky
。 shell-文件 twonky.sh
已经为服务文件提供了一个很好的接口(twonky.sh start|stop|reload|restart
,另见 twonky.sh -h
)。
[Unit]
Description=Twonky Server Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/twonky/twonky.sh start
ExecStop=/usr/local/twonky/twonky.sh stop
ExecReload=/usr/local/twonky/twonky.sh reload
ExecRestart=/usr/local/twonky/twonky.sh restart
PIDFile=/var/run/mediaserver.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
我会稍微修改 twonky.sh 的启动和停止命令,并将它们直接放入 systemd 的 twonky.service 文件中:
[Unit]
Description=Twonky Server Service
After=network.target
[Service]
Type=simple
#Systemd will ensure RuntimeDirectory for the PID file is created under /var/run
RuntimeDirectory=twonky
PIDFile=/var/run/twonky/mediaserver.pid
# use the -mspid argument for twonkystarter to put the pid file in the right place
ExecStart=/usr/local/twonky/twonkystarter -mspid /var/run/twonky/mediaserver.pid -inifile /usr/local/twonky/twonkyserver.ini -logfile /usr/local/twonky/twonky.log -appdata /usr/local/twonky
ExecStop=kill -s TERM $MAINPID
ExecStopPost=-killall -s TERM twonkystarter
ExecStopPost=-killall -s TERM twonky
# Twonky 8.5.1 doesn't reload, it stops instead (on arm at least)
# ExecReload=kill -s HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
您需要确保 ExecStart 命令中的路径匹配您解压 twonky 的位置,以及您想要 .pid 文件、配置、日志文件和 运行time 应用程序数据的位置,除非您对它们的默认位置感到满意.
将所有 into/etc/systemd/system/twonky.server 放入后,运行
sudo systemctl daemon-reload
sudo systemctl start twonky
sudo systemctl enable twonky