2013-07-14 4 views
0

BusyBox v1.1.2 (2008.07.18-08 : 25 + 0000)와 함께 작업하고 있습니다. 내가 구글에서 볼 수 있듯이rm을 사용하여 파일을 삭제할 수 없습니다

/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 

가, 문제가있는 : 내가
touch ModelInfo
사용하여 새 파일을 생성하고 싶습니다 그러나 응답이 그래서
touch: ModelInfo: No space left on device
, 내가 여유 공간을 확인 inode와 함께. 좋아, 내가

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 

이 가능 이들의 삭제되어 파일 (또는 링크)을 사용하여 시스템에서 새 파일을 만들 수 있습니까? 정말 리눅스를 모르겠다. 파일 생성 만하고 싶습니다 ...

+2

'/ proc'에있는 모든 항목은 Linux에서 자동으로 생성됩니다. 이 중 하나도 삭제하지 않는 것이 좋습니다. i 노드가 부족하면'/ proc'가 문제가되지 않습니다. 그들은 다른 곳에서 맴돌거나 파일 시스템에 약간의 불일치가 있습니다. 'fsck'를 실행 해 보셨습니까? – lurker

+0

'~ $ fsck를 -n/proc 디렉토리 fsck가 1.38 (30 6 월 2005) 으로 fsck : 으로 fsck를 찾을 수 없습니다 : fsck.proc 오류 2 ~ $ fsck를 PROC 에 대한 fsck.proc을 실행하는 동안 -n/SYS fsck를 1.35 (2005 년 6 월 30 일) fsck : fsck.sysfs : 찾을 수 없음 fsck : sysfs에 대해 fsck.sysfs를 실행하는 중에 오류 2 발생 ~ $ fsck -n/dev fsck 1.38 (30 6 월 2005) 으로 fsck : fsck.devfs는 : 으로 fsck를 찾을 수 없습니다 오류 2 devfs를위한 fsck.devfs을 실행하는 동안 ~ $ fsck가 1.38 (30 6 월 2005) 를 점 -n는/dev/fsck를 e2fsck 1.38 (2005 년 6 월 30 일) fsck.ext2 :/dev/pts 열려고 시도 중 길이가 0 인 파티션이 될 수 있습니까? fsck.ext2 : 경고 ... 신호 11로 종료 된 장치/dev/pts에 대한 fsck.ext2 ~ $' –

+0

다시 시작한 후 fsck를 실행해야합니까? 나중에 다시 확인하겠습니다. –

답변

1

일부 소프트웨어는 파일을 닫기 전에 파일을 삭제할 수 있습니다. 삭제 된 파일의 오픈 핸들러는 디스크 공간을 확보하지 못하게합니다. 이 경우 재부팅하면 공간이 확보됩니다. 이전 버전의 MySQL은 그러한 버그를 처리하는 데 사용되어 수백 개의 언데드 파일을 /tmp 아래에 남겨 두었습니다.

lsof (열린 파일 나열) 명령을 사용하여이 파일을보십시오.

이 쉘에 대한 알 수없는 명령입니다 'lsof를'[업데이트]

- 그것은 비지 박스의 v1.1.2입니다. - Dmitriy Novichkov

처음 재부팅 후 공간이 해제되는지 확인한 다음 문제가 열려 있지 않으면 파일이 삭제되지 않습니다. 재부팅으로 문제가 해결되면 오픈 핸들러를 사용하여 삭제 된 파일을 찾기 위해 lsof의 원시 바이너리를 찾거나 플랫폼에 맞게 컴파일하십시오 (절대로 암시하지 않음). 그러면 누출에 책임이있는 프로세스를 찾을 수 있습니다. .

파일을 열고 삭제하는 홈 메이드 프로세스를 실행하는 경우 삭제하기 전에 파일을 닫는 지 다시 확인하십시오.

+1

'lsof'는이 쉘에 대해 알려지지 않은 명령입니다. BusyBox v1.1.2입니다. –

+0

대답을 업데이트했습니다. lsof의 이진 파일을 찾거나 플랫폼 소스에서 컴파일해야 할 수도 있습니다. –

관련 문제