2026/4/6 9:20:34
网站建设
项目流程
做ppt封面的网站,网站销售怎么样的,上传网站模板建站,如何制作网页链接通过 pkill 清理不同类型的服务进程需要根据进程特征进行精确匹配。本文介绍各种服务的清理方法#xff1a;
1. Java -jar 启动的服务
精确匹配特定的jar包#xff1a;
# 方法1#xff1a;通过jar包名匹配
pkill -f myapp.jar# 方法2#xff1a;通过主类名匹配
pkill -f co…通过pkill清理不同类型的服务进程需要根据进程特征进行精确匹配。本文介绍各种服务的清理方法1. Java -jar 启动的服务精确匹配特定的jar包# 方法1通过jar包名匹配pkill-fmyapp.jar# 方法2通过主类名匹配pkill-fcom.example.MainClass# 方法3通过应用名匹配在启动时指定# java -Dapp.namemyapp -jar myapp.jarpkill-fapp.namemyapp清理所有Java进程不推荐太暴力# 谨慎使用会杀掉所有Java进程pkill-9 javapkill-9 javaw2. Redis 二进制启动的服务# 方法1通过进程名redis-server通常作为服务名pkillredis-server# 方法2通过配置文件路径如果通过配置文件启动pkill-fredis-server.*/path/to/redis.conf# 方法3通过端口如果固定端口pkill-fredis-server.*:6379# 方法4优雅关闭发送SHUTDOWN信号redis-cli -p6379shutdown3. Elasticsearch 服务# 方法1通过ES进程名pkill-f elasticsearch# 方法2通过Java进程的ES特征pkill-forg.elasticsearch.bootstrap.Elasticsearch# 方法3通过PID文件推荐方式if[-f /var/run/elasticsearch/elasticsearch.pid];thenkill$(cat/var/run/elasticsearch/elasticsearch.pid)fi# 方法4通过ES的专用停止脚本如果有/path/to/elasticsearch/bin/elasticsearch -d -p pidkill$(catpid)4. Nginx 服务# 方法1优雅停止推荐nginx -s quit# 方法2快速停止nginx -s stop# 方法3使用pkill根据进程名pkillnginx# 方法4杀掉master和worker进程pkill-9 nginx# 方法5通过PID文件if[-f /run/nginx.pid];thenkill$(cat/run/nginx.pid)fi5. 通用的安全清理策略方案1按用户清理如果服务运行在特定用户下# 清理www用户的所有进程pkill-u www# 清理特定用户下的Java进程pkill-u appuser -f java方案2按端口清理# 清理占用8080端口的进程fuser-k8080/tcp# 或者使用更直接的方法kill$(lsof-t -i:8080)方案3组合匹配精确清理# 清理包含特定关键词的Java进程pkill-fjava.*myapp# 清理除了特定进程外的所有Java进程pgrep -f java|grep-v$(pgrep -fimportant-app)|xargskill6. 封装成脚本的完整方案#!/bin/bash# 文件名service_cleaner.sh# 颜色输出RED\033[0;31mGREEN\033[0;32mYELLOW\033[1;33mNC\033[0mclean_service(){localservice_name$1localpattern$2echo-e${YELLOW}清理$service_name服务...${NC}# 查找进程pids$(pgrep -f$pattern)if[-z$pids];thenecho-e${GREEN}$service_name服务未运行${NC}return0fi# 显示进程信息echo找到进程:$pidsps-fp$pids|tail-n 2# 发送SIGTERM信号优雅关闭echo发送优雅关闭信号...kill$pids2/dev/null# 等待最多10秒foriin{1..10};doif!pgrep -f$pattern/dev/null;thenecho-e${GREEN}$service_name已成功停止${NC}return0fisleep1done# 强制关闭echo强制关闭...kill-9$pids2/dev/nullsleep1ifpgrep -f$pattern/dev/null;thenecho-e${RED}警告: 仍有$service_name进程在运行${NC}return1elseecho-e${GREEN}$service_name已强制停止${NC}return0fi}# 清理各种服务echo-e\n${YELLOW} 开始清理服务 ${NC}# Redisclean_serviceRedisredis-server# Elasticsearchclean_serviceElasticsearchorg.elasticsearch.bootstrap.Elasticsearch# Nginxclean_serviceNginxnginx:# Java应用根据实际情况调整模式clean_serviceMyJavaAppmyapp.jarclean_serviceSpringBootspring-boot# 其他端口占用清理echo-e\n${YELLOW} 清理端口占用 ${NC}forportin808092009300637980443;dopid$(lsof-t -i:$port2/dev/null)if[!-z$pid];thenecho清理端口$port的进程:$pidkill$pid2/dev/nullfidoneecho-e\n${YELLOW} 最终状态检查 ${NC}psaux|grep-Eredis|elasticsearch|nginx|java.*jar|grep-vgrepecho-e\n${GREEN}清理完成${NC}7. 一键清理所有开发环境服务#!/bin/bash# dev_cleanup.sh - 清理开发环境服务# 停止所有服务echo停止所有开发服务...# Docker服务docker-compose down2/dev/null# Redisredis-clishutdown2/dev/null||pkillredis-server# Elasticsearchpkill-f elasticsearch# Nginxnginx -s stop2/dev/null||pkillnginx# Java服务按特定模式pkill-fjava.*\.jar# 数据库brew services stop mysql2/dev/null# macOS Homebrewsystemctl stop mysql2/dev/null# Linux systemd# 检查清理结果echo-e\n剩余相关进程:psaux|grep-Eredis|elastic|nginx|java.*jar|mysql|mongo|grep-vgrep# 清理端口占用echo-e\n释放常用端口...forportin8080808130004200637992009300330627017;dofuser-k$port/tcp2/dev/nulldone8. 最佳实践建议优先使用专用停止命令# 优于 pkillnginx -s quit redis-clishutdown创建服务启动/停止脚本# start_services.sh#!/bin/bashnohupjava -jar app.jarapp.log21redis-server /etc/redis.conf# stop_services.sh#!/bin/bashpkill-fapp.jarredis-clishutdown使用进程管理工具# 使用supervisorsudosupervisorctl stop all# 使用systemdsudosystemctl stop nginx redis elasticsearch安全检查后再清理# 确认进程psaux|grep-Ejava.*jar|redis|nginx# 确认端口ss -tuln|grep-E:(8080|6379|80)