
루트 사용자로 실행되는 cronjob(Ubuntu 16)이 설치되어 있습니다. 그래서
sudo crontab -e
다음 항목이 있습니다.
10 5 * * mon /home/userA/raidchecker.sh
그리고 스크립트는 raidchecker.sh
다음을 수행합니다.
#!/bin/sh
mail=`which mail`
rec="[email protected] [email protected]"
now=$( date +%Y%m%d-%H%M-%S )
mdstat=$( cat /proc/mdstat )
details=$( /sbin/mdadm --detail /dev/md2 )
diskusg=$( df -kh )
disk1=$( smartctl -A /dev/sda | grep Realloc | grep Sector )
disk2=$( smartctl -A /dev/sdb | grep Realloc | grep Sector )
disk1f=$( smartctl -A /dev/sda )
disk2f=$( smartctl -A /dev/sdb )
buddyinfo=$( cat /proc/buddyinfo | grep Normal )
echo "Check from $now\n\n=================\nMemory Fragmentation:\n$buddyinfo\n\nAll partitions:\n\n$mdstat\n\n=================\nData Partition:\n\n$details\n\n=================\nDisk Usage:\n$diskusg\n\n=================\nSMARTCTL:\n\nData Disk /dev/sda and sdb:\n$disk1\n$disk2\n\nFull Reports:\nDisk1:\n$disk1f\n\nDisk2:\n$disk2f" | $mail -s "Check from $now" $rec
쉘에서 스크립트를 수동으로 실행하면 ./raidchecker.sh
이메일에 예상한 대로 모든 정보가 포함됩니다.
cronjob이 스크립트를 실행할 때 매개변수 disk1, disk2, disk1f 및 disk2f는 비어 있습니다(데이터가 포함되어 있지 않음).
왜?
답변1
해결책은 스크립트 /usr/sbin/smartctl
대신에 cronjob이 이 명령을 실행할 수 있는 방법을 사용하는 것이었습니다.smartctl
답변2
crontab을 사용하면 스크립트가 cron
.
확실히 하려면 관련 을 제공 PATH
하거나 모든 명령에 절대 경로를 제공하는 것이 좋습니다.
항상 crontab을 테스트하십시오(현재 시간보다 몇 분 후에 시간을 설정하십시오).
- 표준 및 오류 출력을 (이메일로) 받으려면
2>&1
crontab의 명령에만 추가하십시오. - 만약 당신이~ 아니다crontab 명령의 출력을 (이메일로) 받으려면 다음을 추가하십시오.
> /dev/null 2>&1