shell 脚本获取 java 进程号并杀掉 如何写
时间: 2023-07-04 20:30:59 浏览: 159
可以使用如下的 shell 脚本来获取 java 进程号并杀掉:
```shell
#!/bin/bash
# 获取 java 进程号
pid=$(ps -ef | grep java | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
# 杀掉 java 进程
kill -9 $pid
echo "Java 进程 $pid 已被杀掉"
else
echo "Java 进程不存在"
fi
```
其中 `ps -ef | grep java | grep -v grep | awk '{print $2}'` 可以获取正在运行的 java 进程的进程号。如果进程号不为空,就使用 `kill -9` 命令来杀掉该进程。如果进程号为空,就输出提示信息。
相关问题
Linux shell脚本动态匹配th-adn-xxx.jar服务是否存在,如果存在,杀掉进程,并重启最新的进程
在Linux shell脚本中,你可以通过`ps aux`命令查找与特定jar文件相关的进程,然后使用`kill`命令杀死旧的进程,接着利用`nohup`或`screen`等工具以守护进程的方式运行新的jar文件。这里是一个简单的示例:
```bash
#!/bin/bash
# 定义要检查的服务名和jar文件路径
service_name="th-xxx.jar"
jar_path="/path/to/th-adn-xxx.jar"
# 查找并列出所有包含指定jar名的进程ID
ps_output=$(ps -ef | grep $jar_path)
# 如果有进程存在
if [ ! -z "$ps_output" ]; then
# 杀死所有包含jar名的进程
ps_ids=($ps_output | awk '{print $1}')
for pid in "${ps_ids[@]}"; do
kill -9 $pid
done
# 等待一段时间让进程结束(可根据实际情况调整)
sleep 5
# 使用nohup启动最新版本的jar文件
nohup java -jar $jar_path &>/dev/null & echo $! > service.pid
echo "Service restarted with PID: $(cat service.pid)"
else
echo "No service found with jar file $jar_path."
fi
# 添加
shell 实现一键启动 jar服务,并在检测到已有进程时自动杀掉进程再次启动
你可以编写一个简单的 shell 脚本来实现这个功能。下面是一个可能的实现:
```sh
#!/bin/bash
# 定义 jar 文件路径和进程名
jar_path="/path/to/your/jar/file.jar"
process_name="your-process-name"
# 检查进程是否正在运行
if pgrep -f $process_name > /dev/null; then
echo "Stopping existing process..."
pkill -f $process_name
fi
# 启动新的进程
echo "Starting new process..."
java -jar $jar_path &
```
这个脚本的流程如下:
1. 定义 jar 文件路径和进程名。
2. 使用 `pgrep` 命令检查进程是否正在运行。如果进程正在运行,使用 `pkill` 命令杀掉进程。
3. 启动新的进程,使用 `java -jar` 命令启动 jar 文件,并使用 `&` 将其放入后台运行。
将以上代码保存为一个文件,例如 `start.sh`,然后使用 `chmod +x start.sh` 命令赋予脚本可执行权限。接着在命令行中运行 `./start.sh` 即可启动服务。
阅读全文