在Debian系统中,nohup命令用于在后台运行程序,即使关闭终端或断开连接,程序也会继续运行
要处理子进程退出,可以使用wait命令。wait命令会等待一个或多个子进程结束,并返回它们的退出状态。你可以使用$?获取上一个命令的退出状态。
下面是一个简单的示例:
#!/bin/bash
nohup your_command & # 在后台运行your_command,并将其放入后台进程
wait $! # 等待后台进程结束,并获取其退出状态
echo "子进程退出,退出状态:$?"
在这个示例中,your_command是你想要在后台运行的命令。&符号将其放入后台进程。$!变量包含了最后一个后台进程的进程ID。wait $!命令会等待这个进程结束,并返回它的退出状态。最后,我们使用echo命令输出子进程的退出状态。
如果你有多个子进程,可以将$!替换为一个进程ID数组,例如:
#!/bin/bash
nohup your_command1 & # 在后台运行your_command1,并将其放入后台进程
nohup your_command2 & # 在后台运行your_command2,并将其放入后台进程
nohup your_command3 & # 在后台运行your_command3,并将其放入后台进程
# 获取所有后台进程的进程ID
pids=($!)
# 等待所有后台进程结束,并获取它们的退出状态
for pid in "${pids[@]}"; do
wait $pid
echo "子进程$pid退出,退出状态:$?"
done
这个示例中,我们同时运行了3个子进程,并等待它们全部结束。然后输出每个子进程的退出状态。