【bash】今天你坑隊友了嗎

曲珂發表於2017-05-24

需求:

壓縮日誌並刪除壓縮過的檔案

 

很日常的運維需求!!!

好,來看程式碼

1 echo 'start'
2 bzip2 -z -9 quke.log
3 rm -f quke.log
4 echo 'delete'

不管是初級運維還是高階運維,都可能會順手寫成這樣,看似沒毛病

問題來了

[user1@beijing-console ~]$ ls quke.
quke.py  quke.sh
[user1@beijing-console ~]$ dd if=/dev/zero of=./quke.log    #我生成一個2.1G的檔案
^C4079929+0 records in
4079929+0 records out
2088923648 bytes (2.1 GB) copied, 9.81969 s, 213 MB/s

[user1@beijing-console ~]$ sh quke.sh
start
^C      #這是壓縮過程中我ctrl+c終止了
bzip2: Control-C or similar caught, quitting.
bzip2: Deleting output file quke.log.bz2, if it exists.
delete    # WTF 原日誌也給刪除了
[user1@beijing-console ~]$ ls quke.
quke.py  quke.sh

所以如果以後碰到這種需求,還是要考慮周到一點

echo 'start'
bzip2 -z -9 quke.log && rm -f quke.log
echo 'delete'

這樣就能避免了

不要坑隊友 !!!

相關文章