如果我通过 ssh 登录到远程主机并运行 top,它会获取 ~/.toprc 配置文件。我还可以成功运行以下命令
ssh -t <user>@<host> "top -b > top.dat"
但是,这会使 ssh 会话永远保持打开状态。我想使用 ssh 会话启动 top 批处理并退出 ssh 会话。我遇到的问题是,我尝试过的所有方法要么不起作用,要么无法获取 ~/.toprc 配置文件。
这是我尝试过的:
ssh <user>@<host> "top -b > top.dat &"
ssh -f <user>@<host> "top -b > top.dat"
ssh -f <user>@<host> "nohup top -b > top.dat &"
ssh <user>@<host> "nohup top -b > top.dat &"
ssh -f <user>@<host> "nohup top -b > top.dat"
所有结果都是没有选择 ~/.toprc
ssh -t <user>@<host> "top -b > top.dat &"
当 ssh 会话关闭时(立即)退出 Top
ssh -ft <user>@<host> "top -b > top.dat"
ssh -ft <user>@<host> "nohup top -b > top.dat &"
ssh -ft <user>@<host> "nohup top -b > top.dat"
不拾取 ~/.toprc 并抱怨由于 stdin 不是终端,所以不会分配伪终端
有人能解释为什么会发生这种情况吗?Top 说它将读取 $HOME/.toprc。我已经验证了在所有这些情况下都设置了 $HOME,并且 $HOME/.toprc 存在。这两种方法有什么不同,导致异步调用无法获取配置文件?
谢谢。
编辑1
这是我的toprc
top's Config File (Linux processes with windows)
Id:i, Mode_altscr=0, Mode_irixps=1, Delay_time=1.0, Curwin=0
Def fieldscur=�������ķ���&')*+,-./012���������FGHIJKLMN��QRSTUVWXYZ[\]^_`abcdefghij
winflags=193840, sortindx=18, maxtasks=0, graph_cpus=0, graph_mems=0
summclr=1, msgsclr=1, headclr=3, taskclr=1
Job fieldscur=�����(��Ļ�@<��)*+,-./012568>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=193844, sortindx=0, maxtasks=0, graph_cpus=0, graph_mems=0
summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=���<�����MBN�D34��&'()*+,-./0125689FGHIJKLOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=193844, sortindx=21, maxtasks=0, graph_cpus=0, graph_mems=0
summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=�����������)+,-./1234568;<=>?@ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=193844, sortindx=3, maxtasks=0, graph_cpus=0, graph_mems=0
summclr=3, msgsclr=3, headclr=2, taskclr=3
Fixed_widest=0, Summ_mscale=0, Task_mscale=0, Zero_suppress=0
编辑2
抱歉... 两台机器都不是 Redhat 7。我说这话时没想太多。我使用 dropbear ssh 服务器从 Redhat 机器 ssh 到运行 yocto-linux 的机器。我也刚刚测试了 openssh。可能是 yocto 配方中的 ssh 服务器导致了这个问题。我刚刚测试了 Redhat 到 Redhat,果然它确实有效。