下面是一个示例 Shell 脚本,用于封装杀死多个进程的函数:
#!/bin/bash
# 定义 kill_processes 函数
function kill_processes() {
# 检查是否提供了进程名列表作为参数
if [ $# -eq 0 ]; then
echo "Usage: $0 <process-name1> [<process-name2> ...]"
return 1
fi
# 循环处理每个进程名
for process_name in "$@"; do
# 查找进程 ID
pid=$(ps aux | grep "$process_name" | grep -v grep | awk '{print $2}')
# 如果找到了进程 ID,则杀死进程
if [ -n "$pid" ]; then
echo "Killing process $process_name (pid=$pid)..."
kill $pid
else
echo "Process $process_name not found."
fi
done
}
# 调用 kill_processes 函数
kill_processes firefox chrome
该脚本定义了一个名为 kill_processes 的函数,该函数接受进程名列表作为参数。如果没有提供进程名,则输出使用说明并返回 1。否则,函数循环处理每个进程名,使用 ps 命令查找包含指定进程名的进程,并使用 awk 命令提取进程 ID。如果找到了进程 ID,则使用 kill 命令杀死进程。如果没有找到进程,则输出提示信息。
最后,脚本调用 kill_processes 函数并传递 "firefox" 和 "chrome" 作为参数。
同时可以将上面的代码保存为一个文件(例如 kill_processes.sh),并将其设置为可执行文件,然后在命令行中运行它,例如:
./kill_processes.sh
这将会输出使用说明并返回 1。如果需要杀死进程,则可以在函数名后面传递进程名列表作为参数,例如:
./kill_processes.sh firefox chrome
这将会依次杀死名为 "firefox" 和 "chrome" 的进程。请注意,该脚本需要在具有足够权限的用户账户下运行,否则可能会出现权限不足的错误。如果需要杀死 root 用户运行的进程,则需要以 root 用户身份运行该脚本。
同理:对于.sh程序和.py程序,我们也可以分别用以下代码去实现:
.sh程序:
#!/bin/bash
# 定义 kill_scripts 函数
function kill_scripts() {
# 检查是否提供了脚本名列表作为参数
if [ $# -eq 0 ]; then
echo "Usage: $0 <script-name1> [<script-name2> ...]"
return 1
fi
# 循环处理每个脚本名
for script_name in "$@"; do
# 查找脚本进程 ID
pid=$(ps aux | grep "$script_name" | grep -v grep | grep ".sh$" | awk '{print $2}')
# 如果找到了进程 ID,则杀死进程
if [ -n "$pid" ]; then
echo "Killing script $script_name (pid=$pid)..."
kill $pid
else
echo "Script $script_name not found."
fi
done
}
# 调用 kill_scripts 函数
kill_scripts script1.sh script2.sh script3.sh
.py程序:
#!/bin/bash
# 定义 kill_scripts 函数
function kill_scripts() {
# 检查是否提供了脚本名列表作为参数
if [ $# -eq 0 ]; then
echo "Usage: $0 <script-name1> [<script-name2> ...]"
return 1
fi
# 循环处理每个脚本名
for script_name in "$@"; do
# 查找脚本进程 ID
pid=$(ps aux | grep "python $script_name" | grep -v grep | awk '{print $2}')
# 如果找到了进程 ID,则杀死进程
if [ -n "$pid" ]; then
echo "Killing script $script_name (pid=$pid)..."
kill $pid
else
echo "Script $script_name not found."
fi
done
}
# 调用 kill_scripts 函数
kill_scripts script1.py script2.py script3.py