Das Shell-Skript beendet mehrere Prozessprogramme und kapselt sie in Funktionen

Hier ist ein Beispiel für ein Shell-Skript, das eine Funktion umschließt, die mehrere Prozesse beendet:

#!/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

Das Skript definiert eine Funktion namens kill_processes, die eine Liste von Prozessnamen als Argument verwendet. Wenn kein Prozessname angegeben wird, drucken Sie die Verwendungsanweisungen aus und geben Sie 1 zurück. Andernfalls durchläuft die Funktion jeden Prozessnamen, verwendet den Befehl ps, um einen Prozess zu finden, der den angegebenen Prozessnamen enthält, und verwendet den Befehl awk, um die Prozess-ID zu extrahieren. Wenn die Prozess-ID gefunden wird, beenden Sie den Prozess mit dem Befehl kill. Wenn kein Prozess gefunden wird, wird eine Eingabeaufforderung ausgegeben.

Abschließend ruft das Skript die Funktion kill_processes auf und übergibt „firefox“ und „chrome“ als Parameter.

Gleichzeitig können Sie den obigen Code als Datei speichern (z. B. kill_processes.sh), ihn als ausführbare Datei festlegen und ihn dann in der Befehlszeile ausführen, zum Beispiel:

./kill_processes.sh

Dadurch wird die Nutzungsanweisung ausgegeben und 1 zurückgegeben. Wenn Sie einen Prozess beenden müssen, können Sie nach dem Funktionsnamen eine Liste von Prozessnamen als Parameter übergeben, zum Beispiel:

./kill_processes.sh firefox chrome

Dadurch werden die Prozesse mit den Namen „Firefox“ und „Chrome“ in dieser Reihenfolge beendet. Bitte beachten Sie, dass dieses Skript unter einem Benutzerkonto mit ausreichenden Berechtigungen ausgeführt werden muss, da andernfalls ein Fehler aufgrund unzureichender Berechtigungen auftreten kann. Wenn Sie vom Root-Benutzer ausgeführte Prozesse beenden müssen, müssen Sie das Skript als Root ausführen.

Ebenso: Für .sh-Programme und .py-Programme können wir auch die folgenden Codes zur Implementierung verwenden:

.sh-Programm:

#!/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-Programm:

#!/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

Supongo que te gusta

Origin blog.csdn.net/2203_75758128/article/details/129661405
Recomendado
Clasificación