Board logo

标题: Python3管理Linux的软件进程 [打印本页]

作者: admin    时间: 2019-10-1 11:00     标题: Python3管理Linux的软件进程

笺注:这是在 CentOS6.9编译安装Zabbix4.4.5 的基础上进行的。 Python的版本信息: [root@Zabbix_server_01 ~]# python3 --version Python 3.6.8 查看Apache的进程信息: [root@Zabbix_server_01 ~]# ps -ef |grep httpd |grep -v grep root 1951 1 0 03:39 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1981 1951 0 03:39 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1982 1951 0 03:39 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1983 1951 0 03:39 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1984 1951 0 03:39 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1985 1951 0 03:39 ? 00:00:00 /usr/local/apache/bin/httpd -k start [root@Zabbix_server_01 ~]# 查看MySQL的进程信息:(关键字“mysql”可以使用单引号或双引号,也可以不用) [root@Zabbix_server_01 ~]# ps -ef |grep mysql |grep -v grep root 1419 1 0 03:39 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid mysql 1903 1419 2 03:39 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/Zabbix_server_01.err --open-files-limit=65535 --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid --socket=/tmp/mysql.sock --port=3306 [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# ps -ef |grep 'mysql' |grep -v grep root 1419 1 0 03:39 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid mysql 1903 1419 2 03:39 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/Zabbix_server_01.err --open-files-limit=65535 --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid --socket=/tmp/mysql.sock --port=3306 [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# ps -ef |grep "mysql" |grep -v grep root 1419 1 0 03:39 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid mysql 1903 1419 2 03:39 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/Zabbix_server_01.err --open-files-limit=65535 --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid --socket=/tmp/mysql.sock --port=3306 [root@Zabbix_server_01 ~]# ###### 检测Apache、MySQL服务是否在运行中的脚本: [root@Zabbix_server_01 ~]# cat xx.py #coding=utf-8 import os process_1 = len(os.popen("ps -ef |grep httpd |grep -v grep").readlines()) print(process_1) if process_1 >= 1: print('Apache is working.') else: print('Apache is down.') print("-" * 10) process_2 = len(os.popen("ps -ef |grep 'mysql' |grep -v grep").readlines()) print(process_2) if process_2 >= 1: print('MySQL is working.') else: print('MySQL is down.') 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x xx.py 运行脚本的效果:(Apache、MySQL服务都正在运行时) [root@Zabbix_server_01 ~]# python3 xx.py 6 Apache is working. ---------- 2 MySQL is working. [root@Zabbix_server_01 ~]# 运行脚本的效果:(Apache、MySQL服务都没有运行时) [root@Zabbix_server_01 ~]# python3 xx.py 0 Apache is down. ---------- 0 MySQL is down. [root@Zabbix_server_01 ~]# ###### 关闭Apache、MySQL服务的脚本: [root@Zabbix_server_01 ~]# cat yy.py #coding=utf-8 import os command_1 = 'killall -9 httpd' #杀死Apache的进程,等于关闭Apache服务 command_2 = 'service mysql stop' os.system(command_1) os.system(command_2) 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x yy.py 运行脚本的效果:(Apache、MySQL服务都关闭成功) [root@Zabbix_server_01 ~]# python3 yy.py Shutting down MySQL.... SUCCESS! [root@Zabbix_server_01 ~]# ###### 启动Apache、MySQL服务的脚本: [root@Zabbix_server_01 ~]# cat zz.py #coding=utf-8 import os command_1 = 'service httpd start' command_2 = 'service mysql start' os.system(command_1) os.system(command_2) 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x zz.py 运行脚本的效果:(Apache、MySQL服务都启动成功) [root@Zabbix_server_01 ~]# python3 zz.py start apache... done Starting MySQL.. SUCCESS! [root@Zabbix_server_01 ~]# ###### 重启Apache、MySQL服务的脚本: [root@Zabbix_server_01 ~]# cat rr.py #coding=utf-8 import os command_1 = 'service httpd restart' command_2 = 'service mysql restart' os.system(command_1) os.system(command_2) 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x rr.py 运行脚本的效果:(Apache、MySQL服务都重启成功) [root@Zabbix_server_01 ~]# python3 rr.py restart apache... done Shutting down MySQL... SUCCESS! Starting MySQL.. SUCCESS! [root@Zabbix_server_01 ~]# ###### 检测Apache、MySQL服务是否在运行中的脚本:(使用函数) [root@Zabbix_server_01 ~]# cat han.py #coding=utf-8 import os def func1(Key_1,String_1): process_1 = len(os.popen(String_1).readlines()) if process_1 >= 1: print(f"{Key_1} is working.") else: print(f"{Key_1} is down.") if __name__ == '__main__': Key_1 = "Apache" String_1 = "ps -ef |grep httpd |grep -v grep" func1(Key_1,String_1) print("-" * 10) Key_1 = "MySQL" String_1 = "ps -ef |grep mysql |grep -v grep" func1(Key_1,String_1) 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x han.py [root@Zabbix_server_01 ~]# pgrep -l http 3762 httpd 3768 httpd 3769 httpd 3771 httpd 3772 httpd 3773 httpd [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# pgrep -l mysql 3784 mysqld_safe 4268 mysqld [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# service httpd stop stop apache... done [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# pgrep -l http [root@Zabbix_server_01 ~]# 运行脚本的效果: [root@Zabbix_server_01 ~]# python3 han.py Apache is down. ---------- MySQL is working. [root@Zabbix_server_01 ~]# ###### 检测Apache、MySQL服务是否在运行中的脚本:(使用类) [root@Zabbix_server_01 ~]# cat lei.py #coding=utf-8 import os class class1(): def __init__(self,Key_1,String_1): self.Key_1 = Key_1 self.String_1 = String_1 def func1(self): process_1 = len(os.popen(self.String_1).readlines()) if process_1 >= 1: print(f"{self.Key_1} is working.") else: print(f"{self.Key_1} is down.") if __name__ == '__main__': Key_1 = "Apache" String_1 = "ps -ef |grep httpd |grep -v grep" myclass = class1(Key_1,String_1) myclass.func1() print("-" * 10) Key_1 = "MySQL" String_1 = "ps -ef |grep mysql |grep -v grep" myclass = class1(Key_1,String_1) myclass.func1() 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x lei.py [root@Zabbix_server_01 ~]# pgrep -l http 4427 httpd 4428 httpd 4429 httpd 4430 httpd 4431 httpd 4432 httpd [root@Zabbix_server_01 ~]# pgrep -l mysql 3784 mysqld_safe 4268 mysqld [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# service mysql stop Shutting down MySQL.... SUCCESS! [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# pgrep -l mysql [root@Zabbix_server_01 ~]# 运行脚本的效果: [root@Zabbix_server_01 ~]# python3 lei.py Apache is working. ---------- MySQL is down. [root@Zabbix_server_01 ~]# ###### 把Apache、MySQL服务的进程信息写入日志文件: [root@Zabbix_server_01 ~]# cat /scripts/qq.py #coding=utf-8 import os command_a1 = "Check_time=`date +'%Y%m%d_%H%M%S'` && echo -e '\n检测时间:' $Check_time >> /root/1.log" # \n 换行符 command_a2 = "ps -ef |grep httpd |grep -v grep >> /root/1.log" # >> 把输出结果写入(追加)到文件;假如文件不存在会自动创建 os.system(command_a1) os.system(command_a2) command_b1 = "Check_time=`date +'%Y%m%d_%H%M%S'` && echo -e '\n检测时间:' $Check_time >> /root/2.log" command_b2 = "ps -ef |grep mysql |grep -v grep >> /root/2.log" os.system(command_b1) os.system(command_b2) 设置脚本权限: [root@Zabbix_server_01 ~]# chmod a+x /scripts/qq.py 开机自动运行脚本“qq.py ”: [root@Zabbix_server_01 ~]# which python3 /usr/local/bin/python3 [root@Zabbix_server_01 ~]# echo 'cd /scripts && /usr/local/bin/python3 qq.py ' >> /etc/rc.local [root@Zabbix_server_01 ~]# cat !$ cat /etc/rc.local #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local /usr/local/zabbix/sbin/zabbix_agentd /usr/local/zabbix/sbin/zabbix_server cd /scripts && /usr/local/bin/python3 qq.py [root@Zabbix_server_01 ~]# 重启服务器: [root@Zabbix_server_01 ~]# init 6 [root@Zabbix_server_01 ~]# 服务器重启后,查看日志文件:(实验中,服务器重启了两次) [root@Zabbix_server_01 ~]# cat 1.log 检测时间: 20190204_035109 root 1928 1 0 03:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1938 1928 0 03:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1939 1928 0 03:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1940 1928 0 03:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1941 1928 0 03:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1942 1928 0 03:51 ? 00:00:00 /usr/local/apache/bin/httpd -k start 检测时间: 20190204_035305 root 1915 1 0 03:53 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1925 1915 0 03:53 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1926 1915 0 03:53 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1927 1915 0 03:53 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1928 1915 0 03:53 ? 00:00:00 /usr/local/apache/bin/httpd -k start www 1929 1915 0 03:53 ? 00:00:00 /usr/local/apache/bin/httpd -k start [root@Zabbix_server_01 ~]# [root@Zabbix_server_01 ~]# cat 2.log 检测时间: 20190204_035109 root 1417 1 0 03:51 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid mysql 1901 1417 7 03:51 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/Zabbix_server_01.err --open-files-limit=65535 --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid --socket=/tmp/mysql.sock --port=3306 检测时间: 20190204_035305 root 1404 1 0 03:53 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid mysql 1888 1404 6 03:53 ? 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/var/Zabbix_server_01.err --open-files-limit=65535 --pid-file=/usr/local/mysql/var/Zabbix_server_01.pid --socket=/tmp/mysql.sock --port=3306 [root@Zabbix_server_01 ~]# 相关文章: 自定义类 Python3调用Linux命令 Python3管理Windows的软件进程




欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2