用python启动nacos和redis

在这里插入图片描述

import subprocess
import tkinter as tk
from tkinter import ttk, messagebox
from subprocess import Popen, run, PIPE# 启动Nacos的函数
def start_nacos():startup_cmd_path = r'D:\environment\code-software\nacos-server-1.4.1\nacos\bin\startup.cmd'# 异步启动NacosPopen([startup_cmd_path, '-m', 'standalone'])messagebox.showinfo("Nacos状态", "Nacos 启动命令已发送,请检查Nacos是否已启动。")# 启动Redis的函数
def start_redis():Popen([r'D:\environment\redis\Redis-x64-5.0.14.1\redis-server.exe',r'D:\environment\redis\Redis-x64-5.0.14.1\redis.windows.conf'])messagebox.showinfo("Redis状态", "Redis启动命令已发送,请检查Redis是否已启动。")# 查找指定端口占用的进程ID
def find_pid_by_port(port):"""通过端口号查找对应的进程ID(PID):param port: 要查找的端口号:return: 端口对应的进程ID,如果找不到则返回None"""# 构造命令行命令,使用netstat -ano列出所有连接和侦听端口,然后通过findstr搜索指定端口command = f"netstat -ano | findstr :{port}"# 执行命令行命令,shell=True允许命令通过shell执行,stdout和stderr捕获输出,text=True确保输出为文本result = subprocess.run(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)# 检查命令执行是否成功(即返回值是否为0),如果不成功(如找不到端口)则返回Noneif result.returncode != 0:return None# 遍历命令输出的每一行for line in result.stdout.split('\n'):# 将每行按空格分割成多个部分parts = line.split()# 如果分割后的列表不为空,取最后一个元素作为可能的PID部分# 如果列表为空,则pid_part设置为空字符串pid_part = parts[-1] if parts else ''# 检查pid_part是否全为数字且大于0,如果是,则返回该PIDif pid_part.isdigit() and int(pid_part) > 0:return int(pid_part)# 如果遍历完所有行都没有找到合适的PID,则返回Nonereturn None# 杀死指定PID的进程
def kill_process(pid):command = f"taskkill /F /PID {pid}"result = run(command, shell=True, stdout=PIPE, stderr=PIPE, text=True)if result.returncode == 0:return f"进程ID为 {pid} 的进程已成功被杀死。"else:return f"无法杀死进程ID为 {pid} 的进程: {result.stderr}"# 按钮点击事件处理函数
def on_button_click():"""处理按钮点击事件,用于查找并可能杀死监听在指定端口上的进程。"""# 从某个GUI组件(如Entry小部件)中获取用户输入的端口号port_input = port_entry.get()try:# 尝试将用户输入的字符串转换为整数port = int(port_input)# 调用find_pid_by_port函数查找端口对应的进程IDpid = find_pid_by_port(port)# 如果找到了进程IDif pid:# 调用kill_process函数尝试杀死该进程,并获取操作结果消息message = kill_process(pid)# 使用messagebox显示操作结果messagebox.showinfo("进程操作结果", message)else:# 如果没有找到进程ID,显示消息框告知用户messagebox.showinfo("未找到进程", f"没有找到监听在端口 {port} 上的进程。")except ValueError:# 如果在转换端口号时发生ValueError(即输入的不是有效的整数),显示错误消息messagebox.showerror("输入错误", "请输入有效的端口号(整数)。")# 主函数
def main():root = tk.Tk()root.title("服务启动器")# 输入端口号的标签和输入框label = tk.Label(root, text="请输入端口号:")label.pack(pady=10)global port_entryport_entry = tk.Entry(root)  # 使用局部变量,通过闭包在on_button_click中访问port_entry.pack(pady=10)# 杀死进程按钮kill_button = tk.Button(root, text="杀死进程", command=on_button_click)kill_button.pack(pady=10)# 放置启动按钮的Frameframe = ttk.Frame(root, padding="50 50 50 50")frame.pack(pady=20)# 启动Nacos和Redis的按钮btn_start_nacos = ttk.Button(frame, text="启动Nacos", command=start_nacos)btn_start_nacos.pack(side=tk.LEFT, padx=10, pady=10)btn_start_redis = ttk.Button(frame, text="启动Redis", command=start_redis)btn_start_redis.pack(side=tk.RIGHT, padx=10, pady=10)# 尝试设置ttk主题style = ttk.Style()try:style.theme_use('clam')except tk.TclError:print("主题clam不可用,使用默认主题。")root.mainloop()if __name__ == "__main__":main()

打包成exe文件
命令:


pip install Pyinstallerpyinstaller -F --noconsole .\你的文件名.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411799.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 和 PyCharm 安装(傻瓜式)

为什么要安装Python? 当我们写 python 代码的时候,需要有环境的支持,才可以运行代码。而 python 的安装支持了两个主要部分,分别是解释器和标准库。当我们安装完成,就可以使用python里面的标准库来写代码,而…

Nginx - 反向代理、缓存详解

概述 本篇博客对配置Nginx的第二篇,主要介绍Nginx设置反向代理、缓存、和负载均衡三个知识点,在之前的生产实践中遇到的问题进行归纳和总结,分享出来,以方便同学们有更好的成长。 Nginx 核心参数配置 在写Nginx反向代理时&…

Kafka的Offset(偏移量)详解

Kafka的Offset详解 1、生产者Offset2、消费者Offset2.1、消费者2.2、生产者2.3、实体类对象2.4、JSON工具类2.5、项目配置文件2.6、测试类2.7、测试2.8、总结 1、生产者Offset 2、消费者Offset 2.1、消费者 package com.power.consumer;import org.apache.kafka.clients.consu…

nexus 清理 docker 镜像

下载配置 nexus-cli 看网上文档都用如下地址,但现在已经不能下载: wget https://s3.eu-west-2.amazonaws.com/nexus-cli/1.0.0-beta/linux/nexus-cli chmod x nexus-cli 在 github 上下载: wget https://github.com/heyonggs/nexus-cli/r…

跟李沐学AI:转置卷积

定义 卷积不会增大输入的高宽,通常卷积层后高宽不变或减半。转置卷积则可以用来增大输入的宽高。 转置卷积是一种卷积,它将输入和核进行了重新排列,通常用作上采用。 如果卷积将输入从变为,同样超参数的情况下,转置…

Java中三大容器类(List、Set、Map)详解

三大容器介绍 名称结构特点常见实现类List(列表)由有序的元素序列组成,可以包含重复元素可以通过索引访问元素,插入的顺序与遍历顺序一致ArrayList、LinkedList、VectorMap(映射)由键值对(Key-Value)组成的…

SpringBoot项目中mybatis执行sql很慢的排查改造过程(Interceptor插件、fetchSize、隐式转换等)

刚入职公司,就发现公司项目跑sql特别慢,差不多一万条数据插入到数据库要5秒以上(没有听错,就是这个速度),查询修改删除也是特别慢。直到22年年底实在是受不了了,我就去排查了一下。 用的是Oracl…

OpenCV小练习:身份证号码识别

目标:针对一张身份证照片,把身份证号码识别出来(转成数字或字符串)。 实现思路:需要将目标拆分成两个子任务:(1) 把身份证号码区域从整张图片中检测/裁剪出来;(2) 将图片中的数字转化成文字。第…

Ubuntu 22.04上稳定安装与配置搜狗输入法详细教程

摘要:本教程详细介绍了如何在Ubuntu 22.04上安装和配置搜狗输入法,每个步骤详细配图。由于在Ubuntu 24.04上存在兼容性问题,建议用户继续使用稳定的22.04版本。教程涵盖了从更新系统源、安装fcitx输入法框架,到下载和配置搜狗输入…

存储实验:基于华为存储实现存储双活(HyperMetro特性)

目录 什么是存储双活仲裁机制 实验需求实验拓扑实验环境实验步骤1. 双活存储存储初始化(OceanStor v3 模拟器)1.1开机,设置密码1.2登录DM,修改设备名、系统时间和导入License1.3 设置接口IP 2. 仲裁服务器配置(Centos7…

全局点云配准的新思考:没有良好初值时如何配准?

更多优质内容,请关注公众号:智驾机器人技术前线 1.论文信息 论文标题:BiEquiFormer: Bi-Equivariant Representations for Global Point Cloud Registration 作者:Stefanos Pertigkiozoglou*, Evangelos Chatzipantazis∗ and K…

【循环顺序队的实现】

1.队列的逻辑结构 与 抽象数据类型定义 先进先出的线性表 在顺序队列中,我们使用头指针front指向队首元素;用尾指针rear指向队尾元素的下一个位置(当然这里的指针是用下标模拟出来的) 同时顺序队列中的元素当然是用数组来存储的 …

解决STM32使用J-Link可以擦除和读取但是无法烧录问题

现象 使用J-Link烧录模组固件,出现可以读取和擦除,但是无法烧录问题,提示错误如下: ERROR: Programming failed address 0x08000080 (program error)End of flash programmingERROR: Program failed 读出来的时候这个地址数据…

Linux 软件包管理器yum 自动化构建工具-make/makefile

Linux 工具 linux 软件包管理器 yum 把一些常用的软件提前编译好,做成软件包放在一个服务器上,通过包管理器可以很方便的获取到在这个编译好的软件包。直接进行安装。 软件包和软件包管理器就相当于 App 和应用商店这样的关系。 Linux 安装软件 源代码…

poe供电原理以及应用

1,根据IEEE802.3af标准,一个完整的PoE系统包括供电端设备PSE和受电端设备PD两部分; 供电设备PSE是整个系统的电源提供者,为PD设备提供直流电源,其可分为M

如何理解进程

一、进程的概念 进程:顾名思义,就是一个完整执行程序的过程。没错,就是这么简单,但是在程序执行的过程之中,系统会为这个执行的程序分配内存资源,这些过程也包含在进程当中。 进程是动态的,是程…

【网络编程通关之路】 Tcp 基础回显服务器(Java实现)及保姆式知识原理详解 ! ! !

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

Linux下IO多路复用—select,poll,epoll

一.概述 1.IO多路复用介绍 IO多路复用是一种操作系统的技术,用于在单个线程或进程中管理多个输入输出操作。它的主要目的是通过将多个IO操作合并到一个系统调用中来提高系统的性能和资源利用率,避免了传统的多线程或多进程模型中因为阻塞IO而导致的资源…

在Linux下搭建go环境

下载go go官网:All releases - The Go Programming Language 我们可以吧压缩包下载到Windows上再传到Linux上,也可以直接web下载: wget https://golang.google.cn/dl/go1.23.0.linux-amd64.tar.gz 解压 使用命令解压: tar -x…

解决有向图中节点出度和入度计算问题

解决有向图中节点出度和入度计算问题 引言邻接链表表示法邻接链表的数据结构创建图添加边计算节点的出度伪代码C代码计算节点的入度伪代码C代码时间复杂度示例结论引言 在图论中,有向图是一种重要的数据结构,用于表示元素之间的方向性关系。有向图中的节点(顶点)通过边连接…