在Bash中异步运行远程进程并捕获其PID、标准输出(stdout)、标准错误(stderr)以及退出代码,可以通过以下步骤实现:
&
符号在后台异步执行命令。以下是一个示例脚本,展示了如何在Bash中异步运行远程进程,并捕获其PID、stdout、stderr和退出代码:
#!/bin/bash
# 远程主机地址
REMOTE_HOST="user@remote_host"
# 要执行的远程命令
REMOTE_COMMAND="sleep 10; echo 'Hello, World!'"
# 创建一个临时文件来存储远程命令的输出
OUTPUT_FILE=$(mktemp)
# 使用SSH在远程主机上异步执行命令,并将输出重定向到临时文件
ssh -o StrictHostKeyChecking=no $REMOTE_HOST "$REMOTE_COMMAND" > $OUTPUT_FILE 2>&1 &
# 获取远程进程的PID
REMOTE_PID=$!
echo "Remote PID: $REMOTE_PID"
# 等待远程进程完成
wait $REMOTE_PID
# 获取远程进程的退出代码
EXIT_CODE=$?
echo "Exit Code: $EXIT_CODE"
# 输出远程进程的标准输出和标准错误
echo "Output:"
cat $OUTPUT_FILE
# 清理临时文件
rm -f $OUTPUT_FILE
ssh
命令在远程主机上执行命令。&
符号实现异步执行。$!
获取最近后台进程的PID。wait
命令等待远程进程完成。$?
获取最近执行命令的退出代码。通过上述方法,你可以在Bash中异步运行远程进程,并捕获其PID、stdout、stderr和退出代码。
领取专属 10元无门槛券
手把手带您无忧上云