我可以在本地检索 ssh 连接另一端的远程 shell 的 cwd 吗?
Can I locally retrieve the cwd of a remote shell on the other side of a ssh connection?
假设我 运行 以下命令:
user1@172.50.50.50:~$ ssh user2@172.51.51.51:/Documents
user2@172.51.51.51:~/Documents$ cd ~/Desktop/
user2@172.51.51.51:~/Desktop$ pwd
/home/user2/Desktop
有没有办法让我从 172.50.50.50 上的另一个进程的 ssh 进程的 pid 获取路径 /home/user2/Desktop?
我想它可能会在 /proc/<SSH PID>/
中的某个地方,但我想不出来。
如果你对服务器有足够的权限并且知道ssh pid,你可以这样做:
ls -l /proc/<SSH PID>/cwd
/proc/<pid>/cwd
是进程 cwd
的符号link,link。
不,你不能。
SSH 客户端不知道服务器的工作目录。它不会在 SSH 协议中传输到任何地方。事实上,SSH 服务器不需要知道它正在传输字符的进程(组)的工作目录。
唯一的办法就是独立访问服务器主机,找到相应的sshd进程和特定的子进程,然后询问那个子进程。
甚至知道哪个子进程是相关的也不是微不足道的 - 您可能有三个或四个 shell 在前台、后台或已停止,也许还有一些编辑器和其他应用程序,它们都具有不同的工作目录。需要其中哪一项?
假设我 运行 以下命令:
user1@172.50.50.50:~$ ssh user2@172.51.51.51:/Documents
user2@172.51.51.51:~/Documents$ cd ~/Desktop/
user2@172.51.51.51:~/Desktop$ pwd
/home/user2/Desktop
有没有办法让我从 172.50.50.50 上的另一个进程的 ssh 进程的 pid 获取路径 /home/user2/Desktop?
我想它可能会在 /proc/<SSH PID>/
中的某个地方,但我想不出来。
如果你对服务器有足够的权限并且知道ssh pid,你可以这样做:
ls -l /proc/<SSH PID>/cwd
/proc/<pid>/cwd
是进程 cwd
的符号link,link。
不,你不能。
SSH 客户端不知道服务器的工作目录。它不会在 SSH 协议中传输到任何地方。事实上,SSH 服务器不需要知道它正在传输字符的进程(组)的工作目录。
唯一的办法就是独立访问服务器主机,找到相应的sshd进程和特定的子进程,然后询问那个子进程。
甚至知道哪个子进程是相关的也不是微不足道的 - 您可能有三个或四个 shell 在前台、后台或已停止,也许还有一些编辑器和其他应用程序,它们都具有不同的工作目录。需要其中哪一项?