shell脚本kill多个进程程序,并封装成函数

下面是一个示例 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

猜你喜欢

转载自blog.csdn.net/2203_75758128/article/details/129661405