내 목표는 더 이상 어떤 프로세스에서 사용하지 않는 5 일 이상 오래된 파일을 삭제하는 것입니다. 초보자로서 다음 스크립트를 작성했지만 작동하지 않습니다. 줄 10 명령을 찾을 수 없습니다.비활성 5 일 오래된 파일
HOME=~/var
cd $HOME
for f in `find . -type f`; do
if [`lsof -n $f`]; then
echo $f
fi
done
내 목표는 더 이상 어떤 프로세스에서 사용하지 않는 5 일 이상 오래된 파일을 삭제하는 것입니다. 초보자로서 다음 스크립트를 작성했지만 작동하지 않습니다. 줄 10 명령을 찾을 수 없습니다.비활성 5 일 오래된 파일
HOME=~/var
cd $HOME
for f in `find . -type f`; do
if [`lsof -n $f`]; then
echo $f
fi
done
흠 너희는 제대로이 시도되지 않은 :
#!/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}'
wow..exactly 내가 원했던 ... 다른 멋진 비트를 설명해 주셔서 감사합니다 :) –
당신은 메이크업 시간을 표시해야합니다 -i 다음 다음 시도 스크립트를 실행하거나 sudo는 - 그것은 현재 다음 sudo는 스와 인 사용자 인 경우 다른 사용자와 같은 항목은 다음이
을 시도합니다. 'mtime + 5'와 같은 것이 가능합니다. – fedorqui
예,하지만 이번에는 lsof 라인에서 멈추었습니다. –