一個簡單的進程管理工具

初來乍到,請多關照!
你們好,我是Sean,今天分享一個簡單的進程管理工具。
代碼比較簡單,主要涉及shell、python以及Linux上的一些知識。
經過簡單的配置,便可以對多個程序進行統一管理,也能夠對某個進程進行操做,併兼具進程監控、系統自啓動程序的功能。
源碼已上傳至個人GitHub:https://github.com/HelloWorld...python

先看下部署完的效果

怎麼想着作這麼個工具?

以前的工做經歷中有用過相似的工具,不過是比較複雜,是用c++寫成的,最近在把Windows程序移植到Linux上,Windows上有相應的界面操控的進程管理工具,而到了Linux上咱們能看到只有一個黑乎乎的shell,亟需這麼個工具,因而花了兩天時間寫了簡單的腳本。c++

如何控制程序啓停的呢?

其實裏面的邏是很簡單的,就拿sean start all舉個栗子吧,sean就是一個腳本,會接受兩個參數(start和all),第一個是表明操做,第二個表明對象,那麼又是如何知道我要啓動哪些程序的呢?很簡單,配置的嘛,咱們能夠在config.ini中配置要管理的程序,只需配置3項,全路徑的程序名、啓動命令、中止命令,sean腳本會根據傳參到配置文件中獲取相應的程序名及啓動指令或中止指令,而後執行相應的啓動或中止指令便可。git

如何作到進程監控的呢?

那就不得不提到Linux的crontab任務了,crontab是Linux裏的定時執行指令的服務,說到這裏,想必你們都應該猜到怎麼實現的了,對的,讓crontab定時檢測各個程序是否還存活就行啦,若是程序死掉了,用sean腳本拉起一下就OK啦!而crontab任務的增刪都封住到了sean腳本中,用戶是感知不到的,啓動增長crontab任務,中止時刪除crontab任務。github

crontab任務管理是如何實現的?

這個經過Python的Crontab包就能輕鬆實現啦!以前也用過shell腳本作過相似的功能,偶爾會蹦出來不生效等詭異的問題,因此強烈推薦用Python裏的Crontab包,人生苦短a,從官網上看這個包歷史也有十多年了,應該是挺靠譜的,在測試的蹂躪下也沒出啥問題,並且我發現能夠將定時設置讓某個用戶執行,這樣crontab任務就能夠以普通用戶的方式執行,權限最小化後也更加的安全。具體用法能夠看個人GitHub,文章開頭有連接,Crontab包更多豐富的用法能夠到包裏的單元測試裏查看,寫的很細。shell

寫得可能比較粗,建議直接GitHub看看腳本實現,有問題你們能夠私信或留言給我。
後續細化一下,分享一些shell命令知識,感興趣的點個關注吧!感謝支持!安全

掃碼關注個人公衆號吧~工具

相關文章
相關標籤/搜索