gpt4 book ai didi

linux - 如何在捕获 pid 的同时将 ssh 远程命令分配给 bash 变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:00 28 4
gpt4 key购买 nike

简介

我的问题与this one 非常相似,除了我希望将命令的输出重定向到本地文件而不是远程文件。

提问者正在询问一种使用类似于此命令的命令来检索进程 ID 的方法,其中 mbuffer 命令不会导致挂起:

read -r pid < <(ssh 10.10.10.46 "mbuffer -4 -v 0 -q -I 8023 > /tmp/mtest & echo $!"); echo $pid

回答者回复了以下命令解决了问题

read -r pid \
< <(ssh 10.10.10.46 'nohup mbuffer >/tmp/mtest </dev/null 2>/tmp/mtest.err & echo $!')

这确实很有用,但仍然将文件放在远程机器上,而不是本地机器上。

我的尝试

以下是我 try catch $command 输出的日志:

read -r PID < <(ssh $remote 'nohup $command >&2 & echo $!' 2> $log)

将 PID 正确设置为进程 ID 但不生成日志。

问题

如何在我的本地机器上捕获我的 $command 的标准输出的日志?同时仍将 PID 分配给 $command 的进程 ID ?

最佳答案

另一种方法:

{ read -r pid;
# Do whatever you want with $pid of the process on remote machine
cat > my_local_system_log_file
} <(ssh 10.10.10.46 "mkfifo /tmp/mtest; mbuffer -4 -v 0 -q -I 8023 &> /tmp/mtest & echo $!; cat /tmp/mtest");

基本上,第一行是 PID,后面几行是进程日志。

关于linux - 如何在捕获 pid 的同时将 ssh 远程命令分配给 bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37040601/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com