shell脚本进程存在,杀死进程并重新执行
时间: 2023-07-04 16:18:20 浏览: 65
您可以编写一个shell脚本来实现杀死进程并重新执行的功能,具体步骤如下:
1. 使用`pgrep`命令查找进程的PID(进程ID):
```
PID=`pgrep <进程名>`
```
其中,`<进程名>`是您要查找的进程的名称。这个命令会输出进程的PID。
2. 杀死进程:
```
kill $PID
```
其中,`$PID`是第一步中查找到的进程PID。
3. 重新执行进程:
```
<进程名> &
```
其中,`<进程名>`是您要执行的进程的名称。`&`符号表示在后台执行。
4. 将这些命令放在一个shell脚本中,并使用`chmod`命令将脚本设置为可执行:
```
chmod +x <脚本名>
```
其中,`<脚本名>`是您给脚本取的名字。
5. 执行脚本:
```
./<脚本名>
```
这样,您就成功地编写了一个shell脚本来实现杀死进程并重新执行的功能。如果您需要自动化这个过程,可以将这些命令放在一个循环中,并使用crontab等工具设置定时任务。
相关问题
通过shell脚本查询某个端口进程并杀死
可以使用以下命令查询某个端口的进程,并杀死该进程:
1. 查询某个端口的进程:
```
lsof -i :端口号
```
例如,查询端口号为8080的进程:
```
lsof -i :8080
```
2. 杀死某个进程:
```
kill -9 进程号
```
例如,杀死进程号为1234的进程:
```
kill -9 1234
```
将上述两个命令结合起来,可以通过shell脚本查询某个端口进程并杀死:
```
#!/bin/bash
port=8080
pid=$(lsof -i :$port | awk '{print $2}')
if [ ! -z "$pid" ]; then
kill -9 $pid
echo "kill process $pid running on port $port"
else
echo "no process running on port $port"
fi
```
将端口号替换为需要查询的端口即可。
查找进程遍历杀死进程的shell脚本
你可以使用以下的shell脚本来查找进程并杀死它们:
```shell
#!/bin/bash
# 输入进程名或关键字
read -p "请输入进程名或关键字: " keyword
# 查找匹配的进程并杀死它们
pid=$(ps aux | grep "$keyword" | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
echo "找到以下进程ID:$pid"
read -p "是否继续杀死这些进程?(y/n) " choice
if [ "$choice" == "y" ] || [ "$choice" == "Y" ]; then
kill -9 $pid
echo "已杀死进程!"
else
echo "取消操作。"
fi
else
echo "未找到匹配的进程。"
fi
```
这个脚本会要求你输入一个进程名或关键字,然后它会查找匹配的进程并列出它们的进程ID。你可以选择是否继续杀死这些进程。如果选择是,脚本会使用`kill -9`命令来强制杀死这些进程。如果选择否,脚本会取消操作。
请注意,使用`kill -9`命令会立即终止进程,可能导致数据丢失或其他不可预料的问题。请谨慎使用该命令,并确保你知道自己在做什么。