我的问题与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 $!')
这确实很有帮助,但仍将文件放在远程计算机上,而不是本地文件。
以下是我尝试捕获$ command输出的日志:
read -r PID < <(ssh $remote 'nohup $command >&2 & echo $!' 2> $log)
将PID设置为正确的进程ID,但不生成日志。
如何在我$command
的stdout的本地计算机上捕获日志,同时仍将PID分配给进程ID $command
?
答案 0 :(得分:1)
另一种方法:
{ 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&amp;更多行是来自该过程的日志。