개발, 웹, 블로그/Linux 상식
Linux에서 watch로 df 시에 변경부분만 표시하는 script
삼성동고양이
2024. 10. 29. 08:29
반응형
포인트
- 그냥 watch 사용시에는 어디가 바꼈는지 매번 눈으로 확인해야 하는데, 이것을 diff 명령어로 틀린 부분만 표시할 수 있음.
- 색을 표시하는 부분은 색코드를 직접 이용할 수 있지만 watch 명령어와 사용시 색이 표시 되지 않고 색 코드가 그대로 노출되는 되기 때문에 일반적으로 output에 색코드를 직접 기입하는 대신에 tput을 이용하면 색을 표시할 수 있음
샘플 코드
#!/bin/bash
# temp file
LAST_OUTPUT="/tmp/last_df_output.txt"
NEW_OUTPUT="/tmp/new_df_output.txt"
# color supporting check
if [ -t 1 ]; then
RED=$(tput setaf 1)
RESET=$(tput sgr0)
else
RED=""
RESET=""
fi
# initial output
df -h > "$LAST_OUTPUT"
while true; do
# new output
df -h > "$NEW_OUTPUT"
if ! cmp -s "$NEW_OUTPUT" "$LAST_OUTPUT"; then
clear
# diff will be printed in red color
diff --unchanged-line-format="%L" --old-line-format="" --new-line-format="${RED}%L${RESET}" "$LAST_OUTPUT" "$NEW_OUTPUT"
fi
# last output store
mv "$NEW_OUTPUT" "$LAST_OUTPUT"
# time interval
sleep 1
done
반응형