2013-04-20 2 views
0

내 목표는 더 이상 어떤 프로세스에서 사용하지 않는 5 일 이상 오래된 파일을 삭제하는 것입니다. 초보자로서 다음 스크립트를 작성했지만 작동하지 않습니다. 줄 10 명령을 찾을 수 없습니다.비활성 5 일 오래된 파일

HOME=~/var 

cd $HOME 

for f in `find . -type f`; do 
    if [`lsof -n $f`]; then 

     echo $f 
    fi 

done 
+0

당신은 메이크업 시간을 표시해야합니다 -i 다음 다음 시도 스크립트를 실행하거나 sudo는 - 그것은 현재 다음 sudo는 스와 인 사용자 인 경우 다른 사용자와 같은 항목은 다음이

scriptuser="your_user" getent passwd $scriptuser|awk -F":" '{print $6}' 

을 시도합니다. 'mtime + 5'와 같은 것이 가능합니다. – fedorqui

+0

예,하지만 이번에는 lsof 라인에서 멈추었습니다. –

답변

2

흠 너희는 제대로이 시도되지 않은 :

#!/bin/bash 

    DIR=$HOME/var 
    ########################################################## 
    ## files older than 5 days and recursive value set to 1 
    # for f in $(find $DIR -mtime +5 -maxdepth 1 -type f); do 
    ########################################################## 
    for f in $(find $DIR -type f); do 
     # run lsof and look for pattern a-z send it to dev null 
     lsof -n $f |grep [a-z] > /dev/null 
     # If it was found the exit status will be 0 or success 
     if [ $? = 0 ]; then 
      echo "$f in use -->" 
     else 
       echo "File $f not in use" 
     fi 
    done 

스크립트에서 당신은 ~/var과 같은 HOME 정의했다 - 나는 시도하고 멀리있을 것이다 스크립트에 squigly 줄을 사용합니다. 둘째 당신이 당신의 스크립트에서 환경 변수의 값을 변경했다 ..이 새로운 방법은

을 많이 청소기

env|grep HOME 

명령 줄에서 시도 여기 지금이 더 변경해야 의미 다른 포인터입니다 ...

스크립트가 cron 작업으로 실행됩니까? 이 기존 사용자로 cron 항목으로 실행됩니까? 있습니다 ..이 ~ 또는 가정을위한 $ HOME 값이 어떻게 변화했는지

echo $HOME 
/home/myuser 

sudo -i 

echo $HOME 
/root 

통지 그래서 크론로 실행하기로 결정 당신이 할 경우 :이 다음 실행하려면 루트로 설정되어있는 경우 위의 나는 방법을 보여줍니다 실패

getent passwd $(logname)|awk -F":" '{print $6}' 
+1

wow..exactly 내가 원했던 ... 다른 멋진 비트를 설명해 주셔서 감사합니다 :) –

관련 문제