docker启动scrapyd报错Another twistd server is running, PID 6

在Docker环境下,由于容器重启导致Scrapyd服务无法启动,错误信息显示已有Twisted服务器正在运行。通过检查容器日志定位问题为PID文件冲突。通过`docker inspect`获取容器元数据,进入容器目录查找并删除`.pid`文件,然后重启容器,成功解决启动问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于docker重启,导致scrapyd容器无法启动,报错

Another twistd server is running, PID 6

This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.

先查看下对应的容器日志

通过此命令打印出来最后100行容器日志,30d为容器id

docker logs --tail 100 30d

发现报错如下所示,有一个twisted.pid已经运行了,所以可以判定这个就是容器无法启动的原因

Another twistd server is running, PID 6

This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.

Another twistd server is running, PID 6

This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.

Another twistd server is running, PID 6

This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.

Another twistd server is running, PID 6

This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.

Another twistd server is running, PID 6

This could either be a previously started instance of your application or a
different application entirely. To start a new one, either run it in some other
directory, or use the --pidfile and --logfile parameters to avoid clashes.

Another twistd server is running, PID 6

接下来要找到该.pid文件

先使用 docker inspect 容器id 获取容器的元数据

如我的

docker inspect 30d
"GraphDriver": {
            "Name": "overlay2",
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/38e8e3db866af924e09ad9df585e7fe0d196158cf55c0ff63ea52e46784c45ca-init/diff:/var/lib/docker/overlay2/a49a6634ddac0ab1fa9de05b168b47444f624a72f106f47319e6e6e69a0fb98b/diff:/var/lib/docker/overlay2/fd461e3d2807dfaf354eafb0a95d721507e9d9589186c42c18f1434e6097e4bd/diff:/var/lib/docker/overlay2/e96b097d3cf1bd6612b078bfc4f8afb9c730e9bb4f060e8a8e44447bfb1bfd47/diff:/var/lib/docker/overlay2/f3e592dd2ae898b61be76216135e4b2a35a2a2a4e9a0655beffcd5f04d2aaac6/diff:/var/lib/docker/overlay2/4deeabe7a1ce35ae66eea5032f668844ac64e10ef12ac8565165daa80044a464/diff:/var/lib/docker/overlay2/3e90e76dfdbd32aebb9bd48e30b981fb53129a0c921e0d1eae9b6aa5bdacae3e/diff:/var/lib/docker/overlay2/2128caf9d1656527b9db4a9c45298bd2b69272f86bb576a9b10a018332ed8628/diff:/var/lib/docker/overlay2/8a7706acc4823b9f7064d3ea143877942ef3f4301daee69f2da80cfad32da1f5/diff:/var/lib/docker/overlay2/819457e79fbf676c61476ebb67ce2b5bcff46f53ce3920f0b8eaa61ae0189b22/diff:/var/lib/docker/overlay2/62cfa890d669e8e489eb509cd4fd13ae8397749788e94899d3d52780992bf1b4/diff:/var/lib/docker/overlay2/01ee3ee9e3aded3e149fc4b83f62657f32b7abb90fa136f1b56c280ef07844e0/diff:/var/lib/docker/overlay2/a00ce32ab510a17a2b555df661da42cf49c713f382005bccbe4b85dd587ffa1d/diff:/var/lib/docker/overlay2/7eefe0d92d2f5d8ef3b273bca84b32effaa0e7714ca8b9adef6233fe06a0a7ab/diff:/var/lib/docker/overlay2/580a5c88be8ebf8b17a26abc260b61cefa51c55bff2fd9fa05868a50e13f59ef/diff:/var/lib/docker/overlay2/d0c4bd298b16b906ebcd762c1484c50c00a17b6c307cdedf9feb9ec22c78b24b/diff",
                "MergedDir": "/var/lib/docker/overlay2/38e8e3db866af924e09ad9df585e7fe0d196158cf55c0ff63ea52e46784c45ca/merged",
                "UpperDir": "/var/lib/docker/overlay2/38e8e3db866af924e09ad9df585e7fe0d196158cf55c0ff63ea52e46784c45ca/diff",
                "WorkDir": "/var/lib/docker/overlay2/38e8e3db866af924e09ad9df585e7fe0d196158cf55c0ff63ea52e46784c45ca/work"
            }
        },

接下来切换到对应路径下,由于不知道.pid具体在那个文件下,可以切换到容器根目录下进行查找,我这里切换到了 /var/lib/docker/overlay2/38e8e3db866af924e09ad9df585e7fe0d196158cf55c0ff63ea52e46784c45ca 目录下

通过下面命令查找.pid文件

 find -name '*.pid'

找到之后删除对应的.pid文件 

[root@hkspider1 diff]# find -name '*.pid'
./code/twistd.pid
[root@hkspider1 diff]# rm  twistd.pid
rm: cannot remove ‘twistd.pid’: No such file or directory
[root@hkspider1 diff]# rm  ./code/twistd.pid
rm: remove regular file ‘./code/twistd.pid’? y

尝试再次启动容器

docker restart 30d

然后docker ps 容器id查看容器状态

[root@hkspider1 diff]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                     NAMES
30d5321bfe0f        e82b2d905358        "/bin/sh -c scrapyd"   4 weeks ago         Up 39 minutes       0.0.0.0:38870->6800/tcp   scrapyd.4.91

可以看到容器已经启动起来了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值