初来乍到,请多关照!
大家好,我是Sean,今天分享一个简单的进程管理工具。
代码比较简单,主要涉及shell、python以及Linux上的一些知识。
通过简单的配置,即可以对多个程序进行统一管理,也可以对某个进程进行操作,并兼具进程监控、系统自启动程序的功能。
源码已上传至我的GitHub:https://github.com/HelloWorldSean/Sean-process-management-tool
先看下部署完的效果
怎么想着做这么个工具?
之前的工作经历中有用过类似的工具,不过是比较复杂,是用c++写成的,最近在把Windows程序移植到Linux上,Windows上有相应的界面操控的进程管理工具,而到了Linux上我们能看到只有一个黑乎乎的shell,亟需这么个工具,于是花了两天时间写了简单的脚本。
如何控制程序启停的呢?
其实里面的逻是很简单的,就拿sean start all举个栗子吧,sean就是一个脚本,会接受两个参数(start和all),第一个是代表操作,第二个代表对象,那么又是如何知道我要启动哪些程序的呢?很简单,配置的嘛,我们可以在config.ini中配置要管理的程序,只需配置3项,全路径的程序名、启动命令、停止命令,sean脚本会根据传参到配置文件中获取相应的程序名及启动指令或停止指令,然后执行相应的启动或停止指令即可。
如何做到进程监控的呢?
那就不得不提到Linux的crontab任务了,crontab是Linux里的定时执行指令的服务,说到这里,想必大家都应该猜到怎么实现的了,对的,让crontab定时检测各个程序是否还存活就行啦,如果程序死掉了,用sean脚本拉起一下就OK啦!而crontab任务的增删都封住到了sean脚本中,用户是感知不到的,启动增加crontab任务,停止时删除crontab任务。
crontab任务管理是如何实现的?
这个通过Python的Crontab包就能轻松实现啦!之前也用过shell脚本做过类似的功能,偶尔会蹦出来不生效等诡异的问题,所以强烈推荐用Python里的Crontab包,人生苦短a,从官网上看这个包历史也有十多年了,应该是挺靠谱的,在测试的蹂躏下也没出啥问题,而且我发现可以将定时设置让某个用户执行,这样crontab任务就可以以普通用户的方式执行,权限最小化后也更加的安全。具体用法可以看我的GitHub,文章开头有链接,Crontab包更多丰富的用法可以到包里的单元测试里查看,写的很细。
写得可能比较粗,建议直接GitHub看看脚本实现,有问题大家可以私信或留言给我。
后续细化一下,分享一些shell命令知识,感兴趣的点个关注吧!感谢支持!
扫码关注我的公众号吧~