📜  在 Linux 中演示等待命令的 Shell 脚本

📅  最后修改于: 2021-10-28 02:57:51             🧑  作者: Mango

等待命令是进程管理命令之一。 Linux 中有不同的进程命令,主要有 5 个命令被广泛使用,它们是pswaitsleepkillexit

ps是进程状态的首字母缩写词。它显示有关活动进程的信息。 wait命令将暂停调用线程的执行,直到其子线程之一终止。它将返回该命令的退出状态。 sleep命令用于将下一个命令的执行延迟给定的秒数、小时数、分钟数、天数。 kill用于终止后台运行的进程。它向进程发送终止信号,然后进程停止。它以进程 ID 作为参数。 exit命令用于退出当前的 shell 环境。

让我们举一些例子来了解更多关于等待命令的信息:

wait是 Linux shell 中的一个内置命令。它等待进程改变其状态,即等待任何正在运行的进程完成并返回退出状态。

句法:

wait [ID]

这里,ID 是一个PID (进程标识符),它对于每个正在运行的进程都是唯一的。要查找进程的进程 ID,您可以使用以下命令:

pidof [process_name]

示例:查找 VLC(视频播放器)的 PID

在 Linux 中演示等待命令的 Shell 脚本

查找进程的PID

这里,VLC 是进程名称。 3868 是它的进程 ID。

方法:

  • 创建一个简单的过程。
  • 使用特殊变量($!)查找该特定进程的 PID(进程 ID)。
  • 打印进程 ID。
  • 使用带有进程 ID 作为参数的wait命令等待进程完成。
  • 进程完成后打印进程 ID 及其退出状态

注意:存在状态 0 表示该进程已成功执行,没有任何问题。 0 以外的任何值都表示该过程尚未成功完成。

脚本:

#!/bin/bash

# creating simple process that will create file and write into it
cat > GEEKSFORGEEKS.txt <<< "Something is going to save into this file" &

# this will store the process id of the running process
# $! is a special variable in bash 
# that will hold the PID of the last active process i.e. creating a file.
pid=$!

# print process is running with its PID
echo "Process with PID $pid is running"

# Waiting untill process is Completed
wait $pid

# print process id with its Exit status
# $? is special variable that holds the return value of the recently executed command.
echo "Process with PID $pid has finished with Exit status: $?"

输出:

在 Linux 中演示等待命令的 Shell 脚本

使用等待命令

在这里,我们正在创建一个进程,该进程将使用给定的字符串创建一个文件并将其存储到存储设备中。然后使用一个特殊的变量“ $!”我们将该进程的 PID 存储到另一个变量 pid 中。然后我们显示进程ID 并使用wait命令等待进程完成。进程执行后,我们将返回进程退出状态代码及其 PID。如果退出状态码为 0,那么我们可以说进程执行成功。

对于多个进程:

方法:

  • 创建多个进程。
    • 创建一个文本文件并写入其中。
    • Sleep 2 将暂停 shell 2 秒钟。
    • 再次创建一个文本文件并写入其中。
  • 显示我们正在运行多个进程。
  • 使用wait -f等待,直到上述所有过程都成功执行。
  • 该过程完成后,我们将使用特殊变量$? .

脚本:

#!/bin/bash

# creating multiple processes
cat > Geeks.txt <<< "GeeksGeeks" &
sleep 2 &
cat > something_new.txt <<< "Something new is created" &

echo "Mutliple processes are running"

# using wait to wait for the processes to finish
# -f will wait untill all the processes is executed.
wait -f

#printing process Exit status
# $? is special variable that holds the return value of the recently executed command.
echo "All Processes end with Exit status: $?"

输出:

在 Linux 中演示等待命令的 Shell 脚本

使用等待命令

在这里,我们正在创建 3 个进程。然后我们简单地使用wait命令来等待所有进程完成。 -f用于在返回退出代码之前等待所有进程完成之后,我们只需使用特殊变量“$?”打印这些进程的退出状态。