‘/dev/shm/run/gunicorn.sock’ no such file or directory
问题解决:
创建目录 mkdir -p /dev/shm/run/ ,然后重启gunicorn服务,会自动生成gunicorn.sock文件
注意:不要创建gunicorn.sock文件,系统自动生成
sock 文件是用来在进程间互相通信的,pid 文件是用来临时存放进程的 id的。
当程序运行结束后,进程之间不再需要通信,因此 sock 文件没有存在的必要了,可以删除。以supervisor为例,supervisord 建立并维护一个 sock文件,supervisorctl 通过这个sock文件来控制 supervisord。
当程序结束后下次再运行,系统会重新给分配pid,因此保存上一次运行时的 pid 没什么意义。只有在程序运行时,需要使用 pid 来对进程进行操作,pid文件才有存在的意义。
相反,如果在程序不运行时仍保留 pid 文件,判断程序是否在运行就变得更加复杂,远不如判断文件存在与否来的轻松。以 uwsgi 为例, start 时创建一个 pid 文件,之后就可以根据这个 pid 文件来执行 reload 或者 stop 操作。
因此在实际中,sock 文件和 pid 文件之在程序运行时存在,程序运行结束后删除比较合理。