bash에서 현재 파티션의 사용 가능한 디스크 공간을 확인하십시오.
bash에서 설치 프로그램을 쓰고 있습니다.사용자는 타겟디렉토리로 이동하여 설치스크립트를 실행하므로 첫 번째 액션은 충분한 공간이 있는지 확인하는 것입니다.df가 모든 파일 시스템을 보고하는 것은 알고 있습니다만, 타겟 디렉토리가 있는 파티션에 대해서만 빈 공간을 확보할 수 있는 방법이 있는지 궁금합니다.
편집 - 내가 생각해낸 답변
df $PWD | awk '/[0-9]%/{print $(NF-2)}'
df가 단자에 맞게 출력을 포맷하는 것 같기 때문에 약간 이상합니다.마운트 포인트 이름이 길면 출력이 한 줄 아래로 이동됩니다.
네:
df -k .
현재 디렉토리로 이동합니다.
df -k /some/dir
특정 디렉토리를 체크하는 경우.
또한 다음 웹 사이트를 체크하는 것이 좋습니다.stat(1)
명령어를 입력합니다.스크립트의 해석을 용이하게 하기 위해서, 출력 형식을 지정할 수 있습니다.다음은 예를 제시하겠습니다.
$ echo $(($(stat -f --format="%a*%S" .)))
df
명령어 : 파일시스템 디스크 용량 사용 상황을 보고합니다.du
명령어 : 파일공간 사용률 견적
유형df -h
또는df -k
사용 가능한 디스크 영역을 나열하려면:
$ df -h
또는
$ df -k
du
에, 1개 또는 복수의 파일 또는 디렉토리가 사용하고 있는 영역을 나타냅니다.
$ du -sh
그-s
option은 디렉토리가 사용하고 있는 공간을 정리한 것입니다.-h
옵션은 사람이 읽을 수 있는 출력을 제공합니다.
바로 이 질문에 대한 Thinking Media의 답변에 대한 코멘트 또는 편집(bash의 현재 파티션에 대한 빈 디스크 공간 확인)이 되어야 한다고 생각합니다만, 코멘트(rep이 충분하지 않음)가 허용되지 않아 편집이 거부되었습니다(이유: "이것은 코멘트 또는 답변이어야 합니다.").그러니 제발, SO 우주의 힘들이여, 다른 누군가의 "답변"을 반복하고 고친다고 해서 나를 비난하지 마세요.하지만 인터넷에 있는 누군가가 틀렸어! ™ 그리고 그들은 내가 그것을 고치도록 허락하지 않았어.
코드
df --output=avail -h "$PWD" | sed '1d;s/[^0-9]//g'
에는 중대한 결함이 있습니다.네, 출력됩니다.50G
free as 50 -- 단, 출력도 합니다.5.0M
50달러 또는3.4G
34세 이상 무료15K
15세까지 무료입니다.
특정 빈 디스크 공간을 확인하기 위해 스크립트를 작성하려면 확인할 장치를 알아야 합니다.삭제(예:sed
위의 예에서는) 숫자가 더 이상 의미가 없습니다.
실제로 기능하려면 다음과 같은 작업을 수행해야 합니다.
FREE=`df -k --output=avail "$PWD" | tail -n1` # df -k not df -h
if [[ $FREE -lt 10485760 ]]; then # 10G = 10*1024*1024k
# less than 10GBs free!
fi;
인스톨러도df -k $INSTALL_TARGET_DIRECTORY
보다 더 말이 될 수도 있다df -k "$PWD"
마지막으로 주의해 주십시오.--output
버전의/ linux.df/linux에서 할 수 있는 것은 .
df --output=avail -B 1 "$PWD" |tail -n 1
이 방법으로 사이즈를 바이트 단위로 얻을 수 있습니다.
서버의 마운트 지점을 모니터링하기 위해 이 기능을 사용할 수 있는 사용자를 위한 완벽한 예입니다.다음 예제에서는 /var/spool이 5G 미만인지 확인하고 사용자에게 이메일을 보냅니다.
#!/bin/bash
# -----------------------------------------------------------------------------------------
# SUMMARY: Check if MOUNT is under certain quota, mail us if this is the case
# DETAILS: If under 5G we have it alert us via email. blah blah
# -----------------------------------------------------------------------------------------
# CRON: 0 0,4,8,12,16 * * * /var/www/httpd-config/server_scripts/clear_root_spool_log.bash
MOUNTP=/var/spool # mount drive to check
LIMITSIZE=5485760 # 5G = 10*1024*1024k # limit size in GB (FLOOR QUOTA)
FREE=$(df -k --output=avail "$MOUNTP" | tail -n1) # df -k not df -h
LOG=/tmp/log-$(basename ${0}).log
MAILCMD=mail
EMAILIDS="dude@wheres.mycar"
MAILMESSAGE=/tmp/tmp-$(basename ${0})
# -----------------------------------------------------------------------------------------
function email_on_failure(){
sMess="$1"
echo "" >$MAILMESSAGE
echo "Hostname: $(hostname)" >>$MAILMESSAGE
echo "Date & Time: $(date)" >>$MAILMESSAGE
# Email letter formation here:
echo -e "\n[ $(date +%Y%m%d_%H%M%S%Z) ] Current Status:\n\n" >>$MAILMESSAGE
cat $sMess >>$MAILMESSAGE
echo "" >>$MAILMESSAGE
echo "*** This email generated by $(basename $0) shell script ***" >>$MAILMESSAGE
echo "*** Please don't reply this email, this is just notification email ***" >>$MAILMESSAGE
# sending email (need to have an email client set up or sendmail)
$MAILCMD -s "Urgent MAIL Alert For $(hostname) AWS Server" "$EMAILIDS" < $MAILMESSAGE
[[ -f $MAILMESSAGE ]] && rm -f $MAILMESSAGE
}
# -----------------------------------------------------------------------------------------
if [[ $FREE -lt $LIMITSIZE ]]; then
echo "Writing to $LOG"
echo "MAIL ERROR: Less than $((($FREE/1000))) MB free (QUOTA) on $MOUNTP!" | tee ${LOG}
echo -e "\nPotential Files To Delete:" | tee -a ${LOG}
find $MOUNTP -xdev -type f -size +500M -exec du -sh {} ';' | sort -rh | head -n20 | tee -a ${LOG}
email_on_failure ${LOG}
else
echo "Currently $(((($FREE-$LIMITSIZE)/1000))) MB of QUOTA available of on $MOUNTP. "
fi
이것은, 모두가 좋아하는 어프로치를 가지고 있는 질문의 하나입니다만, 몇년간 이 페이지를 몇번이나 참조해 왔기 때문에, 여기 있는 다른 사람에게서 영감을 얻은 솔루션을 소개합니다.
DISK_SIZE_TOTAL=$(df -kh . | tail -n1 | awk '{print $2}')
DISK_SIZE_FREE=$(df -kh . | tail -n1 | awk '{print $4}')
DISK_PERCENT_USED=$(df -kh . | tail -n1 | awk '{print $5}')
★★★★★★★★★★★★★★★★★★★★★★★」df
및 로/트레이블을 통해 당깁니다.awk
꽤 휴대하기 쉬울 거예요.
그런 다음 스크립트에서 다음과 같이 사용할 수 있습니다.
"${DISK_SIZE_FREE}" available out of "${DISK_SIZE_TOTAL}" total ("${DISK_PERCENT_USED}" used).
예: https://github.com/littlebizzy/slickstack/blob/master/bash/ss-install.txt
최종 결과는 다음과 같습니다.
총 20GB 중 10GB 사용 가능(50% 사용).
Linux에서 특정 디렉토리의 사용법을 GB 또는 TB 단위로 확인하려면 다음 명령을 사용합니다.
df - h / snowledge / snowledge /
or
df -sh / ssh / snowledge / snowledge
또한 이 명령어는 Linux에서 특정 디렉토리의 비트 사용법을 알아내기 위해 다음과 같습니다.
df-k /syslog/syslog_syslog/
명령 셸에 다음과 같이 입력합니다.
df -h
또는
df - m
또는
df - k
각 마운트 지점의 사용 가능한 디스크 공간 목록이 표시됩니다.
단일 열을 표시하거나 볼 수도 있습니다.
유형:
df -m |awk '{print $3}'
주의: 3은 컬럼 번호입니다.필요한 열을 선택할 수 있습니다.
언급URL : https://stackoverflow.com/questions/8110530/check-free-disk-space-for-current-partition-in-bash
'programing' 카테고리의 다른 글
필터링된 데이터의 행 수 (0) | 2023.04.22 |
---|---|
함수 내에서 발신자의 명령줄 인수에 액세스하려면 어떻게 해야 합니까? (0) | 2023.04.22 |
Windows에서 실행되는 Emacs용 .emacs 파일은 어디서 찾을 수 있습니까? (0) | 2023.04.17 |
Excel 스프레드시트 데이터를 기존 SQL 테이블로 Import하시겠습니까? (0) | 2023.04.17 |
Excel VBA 또는 VSTO 2005의 모든 셀에서 반복 (0) | 2023.04.17 |