![](/img/trans.png)
[英]xarg, find and rm rm: cannot remove `./not': No such file or directory
[英]Cannot remove file using rm
我正在使用BusyBox v1.1.2(2008.07.18-08:25 + 0000)。 我想创建新文件,我用
touch ModelInfo
但是回应是
touch: ModelInfo: No space left on device
所以,我检查可用空间:
/web/en $ df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 14.0M 13.8M 236.0k 98% /
none 256.0k 68.0k 188.0k 27% /syslog
none 1.0M 0 1.0M 0% /tmp
nome 7.0M 6.3M 728.0k 90% /onvif
none 1.0M 0 1.0M 0% /mempic
none 6.0M 0 6.0M 0% /memrec
正如我在Google中看到的那样,索引节点存在问题。 好吧,我跑
for i in /*; do echo $i; find $i | wc -l; done
输出是下一个:
/arm
14
/bin
81
/boot
1
/capture
2
/dev
310
/disk
9
/etc
57
/hisi-pci
13
/hisi-pci-wifi
12
/home
1
/komod
72
/lib
52
/lib64
1
/linuxrc
1
/lost+found
1
/mempic
5
/memrec
5
/mm.sh
1
/mnt
1
/nfsroot
1
/onvif
2
/opt
1
/param
10
/proc
find: /proc/598/task/598/fd/56: No such file or directory
16957
/root
2
/sbin
56
/share
1
/sys
1350
/syslog
6
/tmp
1
/usr
171
/var
17
/web
522
因此,在proc目录中,我可以看到很多目录42、443、454、548。等等-仅数字。 如果我转到任何目录,都可以在其中看到相同的内容:
/proc/580 $ ls -l
-r-------- 1 root root 0 Jul 14 17:51 auxv
-r--r--r-- 1 root root 0 Jul 14 17:48 cmdline
lrwxrwxrwx 1 root root 0 Jul 14 17:51 cwd -> /usr
-r-------- 1 root root 0 Jul 14 17:51 environ
lrwxrwxrwx 1 root root 0 Jul 14 17:51 exe -> /usr/hh580
dr-x------ 2 root root 0 Jul 14 17:51 fd
-r--r--r-- 1 root root 0 Jul 14 17:51 maps
-rw------- 1 root root 0 Jul 14 17:51 mem
-r--r--r-- 1 root root 0 Jul 14 17:51 mounts
-rw-r--r-- 1 root root 0 Jul 14 17:51 oom_adj
-r--r--r-- 1 root root 0 Jul 14 17:51 oom_score
lrwxrwxrwx 1 root root 0 Jul 14 17:51 root -> /
-r--r--r-- 1 root root 0 Jul 14 17:51 smaps
-r--r--r-- 1 root root 0 Jul 14 17:48 stat
-r--r--r-- 1 root root 0 Jul 14 17:51 statm
-r--r--r-- 1 root root 0 Jul 14 17:51 status
dr-xr-xr-x 3 root root 0 Jul 14 17:51 task
-r--r--r-- 1 root root 0 Jul 14 17:51 wchan
例如,有一个“任务”目录的内容:
/proc/580/task $ ls
580
/proc/580/task $ cd 580
/proc/580/task/580 $ ls
auxv environ maps oom_adj smaps status
cmdline exe mem oom_score stat wchan
cwd fd mounts root statm
/proc/580/task/580 $ ls -l
-r-------- 1 root root 0 Jul 14 17:51 auxv
-r--r--r-- 1 root root 0 Jul 14 17:51 cmdline
lrwxrwxrwx 1 root root 0 Jul 14 17:51 cwd -> /usr
-r-------- 1 root root 0 Jul 14 17:51 environ
lrwxrwxrwx 1 root root 0 Jul 14 17:51 exe -> /usr/hh5800
dr-x------ 2 root root 0 Jul 14 17:51 fd
-r--r--r-- 1 root root 0 Jul 14 17:51 maps
-rw------- 1 root root 0 Jul 14 17:51 mem
-r--r--r-- 1 root root 0 Jul 14 17:51 mounts
-rw-r--r-- 1 root root 0 Jul 14 17:51 oom_adj
-r--r--r-- 1 root root 0 Jul 14 17:51 oom_score
lrwxrwxrwx 1 root root 0 Jul 14 17:51 root -> /
-r--r--r-- 1 root root 0 Jul 14 17:51 smaps
-r--r--r-- 1 root root 0 Jul 14 17:51 stat
-r--r--r-- 1 root root 0 Jul 14 17:51 statm
-r--r--r-- 1 root root 0 Jul 14 17:51 status
-r--r--r-- 1 root root 0 Jul 14 17:51 wchan
是否可以删除任何这些文件(或链接)以让系统创建新文件? 我真的不知道Linux,我只想创建文件...
某些软件可以在关闭打开的文件之前删除它们,对已删除文件的打开处理程序将阻止回收磁盘空间。 在这种情况下,重新启动将释放空间。 较早版本的MySQL曾经带有此类错误,在/tmp
下留下了数百个不死文件。
使用lsof
(列出打开的文件)命令查看这些文件。
[更新]
'lsof'是此外壳程序的未知命令-它是BusyBox v1.1.2。 –德米特里·诺维奇科夫(Dmitriy Novichkov)
首先确认重新启动后是否释放了空间,如果没有,那么您的问题不会删除打开的文件。 如果重新启动解决了该问题,请寻找lsof的本机二进制文件或针对您的平台进行编译(您从未暗示过),以便使用打开的处理程序查找已删除的文件,也许您将能够找到造成泄漏的过程。
如果您正在运行一些打开和删除文件的自制过程,请在删除之前仔细检查是否要关闭文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.