2017-02-16 1 views
0
나는 공간

CUT 명령은 crontab을

echo "___________" `date` "___________" 
df | tr -s ' ' $'\t' | cut -f5 > file.txt 
echo `sed 's/Use//g' file.txt` > file.txt 
echo `sed 's/%//g' file.txt` > file.txt 
expression=`cat file.txt | sed -e 's///g'` 
echo $expression 
a=($expression) 
#echo ${a[0]} 
#echo ${a[1]} 
#echo ${a[2]} 
#echo ${a[3]} 
#echo ${a[4]} 
#echo ${a[5]} 
#echo ${a[6]} 
total=`expr ${a[0]} + ${a[1]} + ${a[2]} + ${a[3]} + ${a[4]} + ${a[5]} + ${a[6]}` 
echo $total 
server=`who` 

if [ $total -ge 90 ] 
then 
    echo "greater" 
else 
    echo "Space occupied " $total "%" 
fi 

내가 터미널에서이 스크립트를 실행하면 잘 작동을 모니터링하는 쉘 스크립트를 작성했습니다

에서 작동하지 않습니다. tr 명령이 잘 작동합니다. 그러나이 스크립트를 crontab에서 예약하면 tr 및 cut 명령은 df 명령의 출력을 구문 분석하지 않습니다. 이 스크립트의

1 1 96 0 0 4 1 
103 
greater 

출력이 크론 예정

Filesystem$1K-blocks$d$Available$$Mounted$on udev$1945488$4$1945484$1$/dev tmpfs$391332$836$390496$1$/run /dev/sda1$476684304$433659732$18787364$96$/ none$4$0$4$0$/sys/fs/cgroup none$5120$0$5120$0$/run/lock none$1956652$84020$1872632$5$/run/shm none$102400$56$102344$1$/run/user 

이 도와 때 터미널 때 여기 스크립트의 출력입니다!

답변

1

당신이 얻으려고하는 것을 따르지는 모르겠지만 crontab을 사용할 때마다 모든 명령에 대한 전체 경로를 사용하여 모든 경로를 사용할 수 없거나 설정되지 않아야합니다. 귀하의 코드는 특히 다음과 같이 짧을 수 있습니다 :

echo "___________$(/usr/bin/date)___________" 
total=$(/usr/bin/df | /usr/bin/awk 'NR > 1 && NR < 9{s+=$5}END{print s}') 

if ((total >= 90)) 
then 
    echo "greater" 
else 
    echo "Space occupied $total%" 
fi 
+0

작동합니다. @ grail 감사합니다. 스크립트 시작 부분에있는 명령과'#!/bin/bash'에 대한 전체 경로가 저에게 효과적입니다. –