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