아래에 기본 명령이 있지만 디스크 사용량이 90%를 넘지 않으면 이메일이 필요하지 않습니다. 아마도 일종의 else if 문일 것입니다.
df -Ph | sed s/%//g | awk '{ if($5 > 90) print $0;}' | mail -s Disk Space Alert On $(hostname) [email protected]
답변1
나는 당신의 명령을 받아들여 그것을 하나로 묶을 수 있었습니다:
df -Ph | awk 'int($5) > 90 {print $0; rc=1}; END {exit rc}' || mail -s "Disk Space Alert On $(hostname)" [email protected]
sed
필요하지 않기 때문에 제거했습니다 awk
. 설명 에서 awk
나열된 파티션 중 하나라도 90%를 초과하는 것으로 확인되면 0이 아닌 반환 코드를 설정한 다음 0이 아닌 값이 반환되는 경우에만 이메일을 보냅니다.
제가 생각할 수 있는 유일한 주의 사항은 awk
오류로 인해 실패할 수 있고 여전히 이메일을 받게 된다는 것입니다. 하지만 아마도 그것이 이상적인 알림일 것입니다.
답변2
다음과 같이 작동할 수 있습니다.
if [ $(LC_ALL=C df / | tail -1 | cut -d% -f1 | cut -d' ' -f12) -gt 90 ]; then echo mail -s "Disk Space Alert On $(hostname)" [email protected]; fi
df
로케일에 따라 다른 출력을 제공하므로 접두어를 붙였습니다LC_ALL=C
. 대안은 또는 시스템에 대해 구성된 다른 로케일C
입니다 .POSIX
en_US.UTF-8
- 확인하려는 파티션이 설치된 위치의 경로를
/
입력 하세요 .df /
-gt
"보다 큼"을 나타내는 기호입니다.