내 Vanila Arch Linux 시스템에서는 다음 명령을 사용하여 로컬 tmux-session
(세션 ) 로 보낼 수 있습니다 .main
$ tmux send -t main.0 'echo asdf' ENTER
ssh
localhost
또한 다음을 사용하여 원격 컴퓨터에 명령을 보낼 수도 있습니다 . (단지 데모를 위해 를 사용합니다 ):
$ ssh garid@localhost "ls /home"
내 터미널에서 명령을 보내고 싶습니다 tmux-session
( remote-machine
아래와 같이).
$ ssh -t garid@localhost "tmux send -t main.0 'echo asdf' ENTER"
그러나 다음과 같은 오류가 출력됩니다.
error connecting to /tmp/tmux-1000/default (No such file or directory)
Connection to localhost closed.
내가 여기서 뭘 잘못하고 있는 걸까?
답변1
댓글에는우리는 확인했습니다예상 명령,
ssh remote "tmux send -t main.0 'echo asdf' ENTER"
... remote
localhost가 아닐 때 작동합니다.
우리는 아직확인됨연결 시 명령이 실패하는 이유 는 SSH 세션에서 변수가 설정되지 않았기 localhost
때문입니다 . 이 환경 변수는 제어 소켓이 포함된 디렉터리를 생성해야 하는 위치를 결정하는 TMUX_TMPDIR
데 사용됩니다 . tmux
이 변수가 설정되지 않은 경우 유틸리티는 를 사용합니다 /tmp
.
tmux
ssh
via를 실행하면 세션이 비대화형 비로그인 세션이므로 변수가 설정 해제됩니다 . 따라서 변수 를 로 ~/.config/shell/profile
설정 하지 않습니다 . 파일을 가져옵니다.TMUX_TMPDIR
/tmp
라르부스, 당신은 그것을 사용하지만 나는 그것에 대해 아무것도 모릅니다.
이제 다음과 같은 몇 가지 가능한 방법이 있습니다.
아무것도 하지 않습니다.
ssh
+ 명령의 의도된 대상tmux
은 결코 localhost가 아닙니다.TMUX_TMPDIR
명령을 호출할 때 변수가 올바르게 설정되었는지 확인하세요localhost
.ssh localhost "env TMUX_TMPDIR='$TMUX_TMPDIR' tmux send -t main.0 'echo asdf' ENTER"
...하지만 로컬 변수의 값이 다른 호스트에 대한 올바른 값이라고 가정하므로 보편적인 솔루션이 될 가능성은 없습니다. 아무튼
ssh
to로 연결하는localhost
건 특이한 일이니까 그렇게 하는 대신 첫 번째 지점으로 루프백하고 아무것도 하지 않거나...값을
TMUX_TMPDIR
수정하여(변수를 설정하거나 할당 전체를 주석 처리하여) 로컬 기본값으로 재설정합니다. 그러나 LARBS가 이를 어떻게 사용하는지 모르겠습니다./tmp
~/.config/shell/profile
/tmp