我sudo mv /tmp /var/lib/apt/lists
没有意识到它会移动整个文件夹而不仅仅是内容。
我从此以后就这么做了(正如意外删除了 tmp 文件夹)
sudo mkdir -m 1777 /tmp
启动时,但过了一会儿它又消失了。我该怎么办?我该如何调试?
似乎/tmp
被重命名为/snapshot.0
(或者如果其他快照已经存在,则使用更高的索引)。
重启不能解决问题。但是关机时没有问题,启动时会有/tmp
新的。然而在 4 分钟内它被重命名为另一个快照。/tmp
没有 /tmp 会发生什么:
- Bash 中有时没有制表符补全
- chromium-browser 和 system monitor 等程序无法启动
- apt-get 似乎也依赖 /tmp
我目前sudo mv /snapshot.0 /tmp
每当/tmp
消失时都会执行。
实验:
我启动计算机(正如我们将看到的,/tmp
它仍然存在,显然它在重启后仍然存在)并打开一个终端,在其中执行:
$ while true; do
t=$(date +%H:%M:%S); #timestamp as hour minute seconds
date;ls -lt / | head -3; print out date and most recent folders in /
ls -l /tmp > ~/Desktop/ls.tmp.log.${t};
ls -l /snapshot.0 > ~/Desktop/ls.snap.log.${t};
sleep 60;
done;
我没做其他事!登录终端:
Di 23. Jun 19:44:12 CEST 2020
total 2097264
drwxrwxrwt 18 root root 4096 Jun 23 19:44 tmp
drwxr-xr-x 34 root root 1000 Jun 23 19:42 run
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:45:12 CEST 2020
total 2097264
drwxrwxrwt 18 root root 4096 Jun 23 19:44 tmp
dr-xr-xr-x 13 root root 0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:46:12 CEST 2020
total 2097264
drwxrwxrwt 18 root root 4096 Jun 23 19:44 tmp
dr-xr-xr-x 13 root root 0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:47:12 CEST 2020
total 2097264
drwxrwxrwt 18 root root 4096 Jun 23 19:44 tmp
dr-xr-xr-x 13 root root 0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:48:12 CEST 2020
total 2097264
drwxrwxrwt 18 root root 4096 Jun 23 19:44 tmp
dr-xr-xr-x 13 root root 0 Jun 23 19:44 sys
ls: cannot access '/snapshot.0': No such file or directory
Di 23. Jun 19:49:13 CEST 2020
total 2097264
drwxrwxrwt 18 root root 4096 Jun 23 19:48 snapshot.0
dr-xr-xr-x 13 root root 0 Jun 23 19:44 sys
ls: cannot access '/tmp': No such file or directory
因此在 5 分钟内 /tmp 被重命名为 /snapshot.0。
ls.tmp.log.19:4[4-8]:12 之间没有区别,ls.tmp.log.19:48:12
和之间也没有区别,ls.snap.log.19:49:13
所以它不可能是 的内容/tmp
。
进步:
当我希望找到一个解决方案,让一切恢复原样(无需重新安装系统)时,Giorgos Saridakis'建议符号链接确实很有帮助。但是我仍然无法启动系统监视器:
$ gnome-system-monitor
cannot create temporary directory for the root file system: Permission denied
尽管设置了所有权限:
$ ls -lt /
total 2097264
drwxrwxrwt 8 root root 4096 Jun 27 15:21 snapshot.0
-rw-r--r-- 1 root root 0 Jun 27 15:10 lifesign
...
lrwxrwxrwx 1 root root 11 Jun 23 22:12 tmp -> /snapshot.0
我想我终究还是得写一个恶魔……
我写了一个脚本:
#!/bin/bash
while true;
do
if [ ! -d "/tmp" ];
then mv /snapshot.0 /tmp 2>> /home/t/tmp.rename.bg.err;
date >> /home/t/tmp.rename.bg.log;
fi;
sleep 10;
done
执行
sudo bash tmp.rename.sh &
登录后。这不是理想的情况,但我还不必开始编写守护进程。
答案1
看来您偶然发现了内核的一个持久部分,我相信无法通过正确的方式解决这个问题。
如果不想重新安装整个系统,为什么不尝试从 /snapshot.0 到 /tmp 创建一个符号(或硬)链接:
sudo ln -s /snapshot.0 /tmp
如果这不起作用,我会制作一个小守护进程来不断检查 /tmp 是否存在,如果找不到则创建它(可能具有锁定权限)。
困难的情况,我深表同情:)