Linux篇:學Shell踩的那些坑

01 前言

由于剛轉(zhuǎn)SCM工作,最近開始折騰學習Shell腳本,作為一名智商非常有限的小白,犯錯是難免的,這里記錄一下自己踩的坑,大佬們不要見笑...

02 踩坑過程

背景:定時備份某個文件夾的數(shù)據(jù),產(chǎn)生日志定向到某個文件中去

編寫的Shell腳本如下:vim auto-backup-jira.sh

# /bin/bash

# 使用shell腳本備份Jira附件,備份周期為7天

# 備份日期

date_backup= ` date "+%Y%m%d" `

# 加入備份數(shù)據(jù)及制定備份路徑

tar -czvf /data/software-data/jira/jira-${date_backup}.tar.gz? /var/atlassian/application-data/jira

if [ $? -eq 0 ] ;then

echo "+++++++++++++SUCCESS!+++++++++++++" >>/data/software-data/jira/jira-backup.log

echo "Jira backup success,end at $(date +"%F%H")" >>/data/software-data/jira/jira-backup.log

else

echo "+++++++++++++FAILED!+++++++++++++" >>/data/software-data/jira/jira-backup.log

echo "Jira backup failed at $(date +"%F%H")" >>/data/software-data/jira/jira-backup.log

fi

find /data/software-data/jira/ -mtime +7 -name "*.tar.gz" -exec rm -rf { } \;

保存退出后,加入定時任務

crontab -e

00 02 * * * /data/software-data/jira/auto-backup-jira.sh

設置每天凌晨2點自動備份,心想完成了一件大事,心里美滋滋...

第二天以來,cd? /data/software-data/jira/ 驚呆了nothing ,查看日志cat? jira-backup.log

也是什么都沒有,說明腳本根本沒有成功執(zhí)行。

開始分析原因:

(一) 權限問題

試著執(zhí)行執(zhí)行了shell腳本 ,進入腳本根目錄

./jira-backup.sh

-bash: ./jira-backup.sh:Permission denied

突然想起來,沒有給這個腳本賦執(zhí)行執(zhí)行權限,于是:

chmod +x jira-backup.sh

試了一下,還是不行,換成這個就可以了:

chmod 777 jira-backup.sh

至此,更改完權限后,修改定時任務時間,執(zhí)行一次,發(fā)現(xiàn):

tar 命令生效了, /data/software-data/jira目錄下生成:jira-20190710.tar.gz

但是日志依然沒有更新到jira-backup.log文件中

重新查看shell,發(fā)現(xiàn)if語句結(jié)構(gòu)不對,調(diào)整一下:

if [ $? -eq 0 ]

then

echo "+++++++++++++SUCCESS!+++++++++++++" >>/data/software-data/jira/jira-backup.log

echo "Jira backup success,end at $(date +"%F%H")" >>/data/software-data/jira/jira-backup.log

else

echo "+++++++++++++FAILED!+++++++++++++" >>/data/software-data/jira/jira-backup.log

echo "Jira backup failed at $(date +"%F%H")" >>/data/software-data/jira/jira-backup.log

fi

重新修改定時任務時間,此時日志生成了....但是查看日志:

Less -N jira-backup.log

1? "+++++++++++++SUCCESS!+++++++++++++"

2? Jira backup success,end at

好奇怪為啥時間沒有顯示出來,睜大眼睛一看,date 命令是錯的,簡直該死

再次調(diào)整

if [ $? -eq 0 ]

then

echo "+++++++++++++SUCCESS!+++++++++++++" >>/data/software-data/jira/jira-backup.log

echo "Jira backup success,end at $(date "+%F%H")" >>/data/software-data/jira/jira-backup.log

else

echo "+++++++++++++FAILED!+++++++++++++" >>/data/software-data/jira/jira-backup.log

echo "Jira backup failed at $(date "+%F%H")" >>/data/software-data/jira/jira-backup.log

fi

終于,所有一切都如愿了...

03 總結(jié)

1)很簡單的一個命令,犯了這么多錯誤,不能拿新手當借口,要養(yǎng)成細心的習慣...

2)期間查問題,有段時間不知道如何下手,在一個QQ群里咨詢后大佬給了一個建議

? ? 打斷點:簡單說就是在每一條命令后面加一個? echo $?? 判斷上面的命令是否執(zhí)行成功,如果結(jié)果返回0,說明上一條命令執(zhí)行成功,如果返回1,說明需調(diào)整

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、前言 本人所在公司,由于最近文檔、事務性雜事比較多,所以又開始動了推行Jira/Confluence 的...
    walker86閱讀 9,475評論 0 5
  • 第 2 章 SHELL 基礎知識2.1 shell腳本我們在上面簡單介紹了一下什么是shell腳本,現(xiàn)在我們來進一...
    LiWei_9e4b閱讀 1,652評論 0 0
  • 背景: 閱讀新聞 12C CDB模式下RMAN備份與恢復 [日期:2016-11-29] 來源:Linux社區(qū) 作...
    陽屯okyepd閱讀 3,866評論 0 7
  • (1)以下操作都是在backup服務器 1安裝 [root@backup ~]# rsync --version ...
    喂00閱讀 459評論 0 0
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,872評論 0 10

友情鏈接更多精彩內(nèi)容