Linux手动启动、停止多个服务用的shell脚本
生活随笔
收集整理的這篇文章主要介紹了
Linux手动启动、停止多个服务用的shell脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題通用場景描述:測試服務器上的服務眾多,為了避免過大的資源開銷將原先的服務都設置為開機不啟動,僅保留一些必要的系統服務,因此當需要使用哪些服務時需要手動開啟。有的服務對其他服務可能存在依賴關系,例如服務A依賴服務B,服務B依賴服務C。此時可以用順序執行的方式解決依賴問題,如果檢查到依賴不滿足,則退出執行。
編碼思路:
(一)為什么使用函數?
1.當有重復代碼或 當一個任務只需要很少的修改就被重復幾次執行時, 這時你應考慮使用函數.
2.函數可以處理傳遞給它的參數并且能返回它的退出狀態碼(exit status)給腳本后續使用.
(二)函數參數如何傳遞的?
函數以位置來引用傳遞過來的參數(就好像他們是位置參數(positional parameters)), 例如$1,$2以此類推.
(三)如何處理依賴關系?
用順序執行的方式解決依賴問題,如果檢查到依賴不滿足,則退出執行。
編碼范例:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #!/bin/bash REQUIRED_SERVICE_1=mysql REQUIRED_SERVICE_2=zabbix-server REQUIRED_SERVICE_3=zabbix-agent function?help(){ ????echo?"Function:?start\stop?zabbix?service?and?dependence,?and?check?status" ????echo?"Usage:?$0?{start|stop|status|help}" } function?check_service_if_is_running(){ ????SERVICE=$1 ????service?$SERVICE?status?>/dev/null?2>&1 ????REVAL=$? ????if?[[?$REVAL?-eq?0?]];?then ????????return?0 ????else ????????return?1 ????fi } function?start_service_if_is_stoped(){ ????SERVICE=$1 ????service?$SERVICE?start?>/dev/null?2>&1 ????check_service_if_is_running?$SERVICE ????REVAL=$? ????if?[[?$REVAL?-eq?0?]];?then ????????echo?$SERVICE?is?running... ????else ????????echo?$SERVICE?is?not?running,?error?code?is?$REVAL. ????????exit?1 ????fi } function?stop_service_if_is_running(){ ????SERVICE=$1 ????service?$SERVICE?stop?>/dev/null?2>&1 ????check_service_if_is_running?$SERVICE ????REVAL=$? ????if?[[?$REVAL?-eq?1?]];?then ????????echo?$SERVICE?is?stoped... ????fi } function?status_service(){ ????SERVICE=$1 ????check_service_if_is_running?$SERVICE ????REVAL=$? ????if?[[?$REVAL?-eq?0?]];?then ????????echo?$SERVICE?is?running... ????else ????????echo?$SERVICE?is?not?running,?error?code?is?$REVAL. ????????exit?1 ????fi } function?start(){ ????start_service_if_is_stoped?$REQUIRED_SERVICE_1 ????start_service_if_is_stoped?$REQUIRED_SERVICE_2 ????start_service_if_is_stoped?$REQUIRED_SERVICE_3 } function?stop(){ ????stop_service_if_is_running?$REQUIRED_SERVICE_3 ????stop_service_if_is_running?$REQUIRED_SERVICE_2 ????stop_service_if_is_running?$REQUIRED_SERVICE_1 } function?status(){ ????status_service?$REQUIRED_SERVICE_1 ????status_service?$REQUIRED_SERVICE_2 ????status_service?$REQUIRED_SERVICE_3 } case?"$1"?in? ????start) ????????start ????;; ????stop) ????????stop ????;; ????status) ????????status ????;; ????*) ????????help ????????exit?1 ????;; esac |
編碼測試:
--END--
本文轉自 urey_pp 51CTO博客,原文鏈接:http://blog.51cto.com/dgd2010/1617846,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的Linux手动启动、停止多个服务用的shell脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教学思路C#之入门五 数据类型转换
- 下一篇: 使用Microsoft Azure Ba