我試圖找到大於1 GB的文件並壓縮內容,並且在壓縮文件後,我需要刪除tar文件並取消現有文件。但是,在這個文件夾的同時,它並不是一回事。它將進入用戶的主目錄。這是在Solaris服務器上。無法在Solaris上的相同位置gzip文件
我從遠程服務器運行這個。
ssh -o StrictHostKeychecking=no -qt 192.168.1.1 "$(<.fs1.sh)"
這是.fs1.sh
包含:
threshold="50"
date=`date +"%m-%d-%y"`
for fs in $(df -k//var /tmp| awk '{print $6}' | sed '1 d'); do
chk=$(df -k ${fs} | sed '1 d' | awk '{print $5}' | awk -F\% '{print $1}')
if [ ${chk} -gt ${threshold} ]; then
/usr/local/bin/sudo rm -f /tmp/files.log
/usr/local/bin/sudo rm -rf /var/core
/usr/local/bin/sudo rm -rf /var/audit
files=`/usr/local/bin/sudo /usr/bin/find /var/adm -xdev -type f -size +1000000000c -exec ls -lht {} \; | awk '{ print $9}'`
files1=`/usr/local/bin/sudo /usr/bin/find /var/adm/log -xdev -type f -size +1000000000c -exec ls -lht {} \; | awk '{ print $9}'`
files2=`/usr/local/bin/sudo /usr/bin/find /var/log -xdev -type f -size +1000000000c -exec ls -lht {} \; | awk '{ print $9}'`
echo "$files" >>/tmp/files.log
echo "$files1" >>/tmp/files.log
echo "$files2" >>/tmp/files.log
for i in `cat /tmp/files.log`
do
echo $i
/usr/local/bin/sudo tar -cf $i_$date.tar $i
/usr/local/bin/sudo gzip $i_$date.tar
/usr/local/bin/sudo rm $i_$date.tar
/usr/local/bin/sudo cp /dev/null $i
done
fi
if [ ${chk} -gt ${threshold} ]; then
echo "$(hostname): Fileystem Warning on ${fs} is used: ${chk}%."
sudo /usr/bin/find ${fs} -xdev -type f -size +100000000c -exec ls -lht {} \;
echo " -----------------------------------------------------------------------------------------------------------------------------------------------------"
fi
done
在Mac中,使用'的gzip -v9〜/ SRC/sqltools/SQLCMD/sqlcmd.msd'從一個完全不同的目錄('〜/ soq'),I得到的輸出:'/用戶/ jleffler /src/sqltools/sqlcmd/sqlcmd.msd:\t 79.9% - 用/ Users/jleffler/src/sqltools/sqlcmd/sqlcmd.msd.gz替換 - 即文件在原位壓縮。此外,原始文件被刪除。因此,您不需要刪除原始文件,並且gzip文件應該已經位於正確的位置。 –
如果在Solaris上沒有發生這種情況,你應該調查你是否使用了一個古老的'gzip'(儘管我從來沒有遇到過這樣的版本),或者你需要檢查NFS和root特權是以某種方式搞砸了,或者是什麼。您可以在處理文件時打印出文件名,以確保您能看到正在發生的事情(echo $ i'的輸出是什麼?)。你可以使用'-v9'選項來查看'gzip'在做什麼。您可以在'$(<。fs1.sh)'之前添加'set -x;'。有些東西應該告訴你發生了什麼事。 'sudo'的調用次數令我感到擔憂。 –