问题简而言之:systemd 在启动时创建一个套接字,但如果不重新启动就无法重新启动或重新创建它。
/etc/systemd/system/gunicorn.socket
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/run/gunicorn.sock
[Install]
WantedBy=sockets.target
重启后,/run/gunicorn.sock 存在,我可以用 连接到它sudo gunicorn3 --bind unix:/run/gunicorn.sock test.wsgi
。但是用 Ctrl+C 关闭该进程后,套接字消失,无法通过 重新创建sudo systemctl start gunicorn.socket
。顺便说一句,sudo systemctl status gunicorn.socket
仍然显示套接字处于活动状态并且正常。
是不是出了什么问题或者我的期望不对(我对 systemd 还不是很熟悉)?
附加问题:我尝试通过在配置文件的 [Socket] 节中添加“User=www-data”来使套接字归 www-data 用户所有,但套接字仍然归 root.root 所有。我的错误在哪里?