Cusror无法连接到远程扩展主机服务器“failed to download file“, original: “No space left on device (os error 28)
这是当前运行的Cursor实例在/tmp目录中使用的socket路径,而其他的大都是/home目录下的,这不会影响到我们的/目录,所以实际上,我们解决掉这个/tmp文件的创建问题,就可以实现cursor的链接了!根目录下已经100%占用了,通过cursor连接服务器开发的时候,cursor会建立一个socket文件,在tmp目录下用于通信,所以,我们要做的就是把/tmp目录软链接出来。因为/tmp
问题出现
有了AI后,感觉开发进入全自动了,今天开开心心连接服务器,结果遇到这个问题,没用空间了?!
df -h检查磁盘容量
我们可以看到/home
目录下还有容量,但是/
根目录下已经100%占用了,通过cursor连接服务器开发的时候,cursor会建立一个socket文件,在tmp目录下用于通信,所以,我们要做的就是把/tmp目录软链接出来。
但是!/tmp目录和一般的目录不一样,所以这里还不能用软链接,那可怎么办呐!
因为/tmp是一个系统目录,用来存放临时文件,在系统重启后,某些系统可能会重新创建/tmp目录,覆盖我们的软链接。我们期望我们这个配置永久生效,所以我们需要用systemd,通过创建一个挂载单元来永久解决这个问题。
组合拳解决问题
- 首先,创建目标目录:
sudo mkdir -p /home/tmp
sudo chmod 1777 /home/tmp
- 创建systemd挂载单元文件:
sudo tee /etc/systemd/system/tmp.mount > /dev/null << 'EOF'
[Unit]
Description=Temporary Directory /tmp
Documentation=man:hier(7)
Documentation=https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymlink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target
[Mount]
What=/home/tmp
Where=/tmp
Type=none
Options=bind
SloppyOptions=yes
[Install]
WantedBy=local-fs.target
EOF
- 重新加载systemd配置并启用挂载单元:
sudo systemctl daemon-reload
sudo systemctl enable tmp.mount
4.将现有/tmp中的内容复制到新目录(可选):
# 备份当前/tmp中的内容
sudo cp -a /tmp/.[!.]* /tmp/* /home/tmp/ 2>/dev/null || true
- 重启系统以应用更改,或立即激活挂载:
sudo systemctl start tmp.mount
确认效果
6.检查一下挂载状态
systemctl status tmp.mount
看上去不错
7.在看一下挂载是否真的生效了
findmnt /tmp
上图里可以看到source
已经从之前df -h
图里的nvme0n1p2
变成了/dev/sd1
了,
成功
回到cursor
,发起连接,已经可以看到正常下载服务器了,
下载完就连接上咯~! 继续快乐编程吧
后记
我怎么知道要映射/tmp
出来呢
1.找一台有容量的服务器发起连接
建立连接后,在这台正常的服务器上检查哪路径会用到根目录,通过下面的指令查看cursor相关进程和目录文件
ps aux | grep -i cursor
find / -name "*[cC]ursor*" -type d 2>/dev/null
从上图中,我们可以看到,/tmp/cursor-1c785a19-99b0-43a4-89e7-5af09315b43e
- 这是当前运行的Cursor实例在/tmp目录中使用的socket路径,而其他的大都是/home目录下的,这不会影响到我们的/目录,所以实际上,我们解决掉这个/tmp文件的创建问题,就可以实现cursor的链接了!
更多推荐
所有评论(0)