无法在Solaris

时间:2017-08-20 16:55:25

标签: shell unix scripting

我正在尝试查找大于1 GB的文件并压缩内容,并在压缩文件后,我需要删除tar文件并使现有文件无效。但是在这里gzipping文件时,它并没有扯到相同的路径;它将进入用户的主目录。这是在Solaris服务器上。

我是从远程服务器运行的。

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

1 个答案:

答案 0 :(得分:0)

您可以使用gzip开关将-c的输出重定向到stdout并指定输出文件。

gzip -c $i_$date.tar > /path/to/original/dir/new.gz