gpt4 book ai didi

linux - 为什么使用带有特定命令的 SSH 时远程主机中没有 shell 进程?

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:53 26 4
gpt4 key购买 nike

我在本地机器上调用它

ssh -t   anon@192.168.50.81 -p 10086 'echo $SHELL && pstree'

我得到了 /bin/zsh 和一个没有 shell 进程的正常 pstree 输出。

为什么?第一个输出是假的吗?

最佳答案

某些 shell,例如 zsh,不会派生子进程来执行命令行或脚本中的最后一个命令。由于该行或脚本的退出状态与最后一个命令的退出状态相同,因此它们在 shell 进程中调用 exec() 而无需 fork 。所以如果你执行

sleep 5 && pstree

它将 fork 一个子进程来sleep,等待它完成,然后调用exec()来运行pstree

由于 pstree 进程取代了 shell,因此您在进程树中看不到 shell。 pstree 将是 sshd 的子级。

如果你把它改成

pstree && sleep 5

那么您应该在 pstree 输出中看到 shell,因为 pstree 不再是最后一个命令。

关于linux - 为什么使用带有特定命令的 SSH 时远程主机中没有 shell 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55942245/

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