터미널 창을 원격으로 어떻게 볼 수 있습니까?


8

Centos 7 서버에서 스크립트를 실행하는 활성 터미널 창을 가지고 사무실을 일찍 나갔습니다. 이제 집에서 SSHing하고 있고 그것이 어디 있는지보고 싶습니다. 이것이 가능한가? 여기에서 같은 터미널 창에 다시 참가할 수 있습니까?



또한 아래의 모든 답변 에 tmate.io 를 추가하고 싶습니다
webKnjaZ 2016 년

하나의 옵션은 다음과 같습니다 : strace -e write -p 12345(관심있는 프로세스의 pid를 대체하십시오). 다른 옵션은 다음과 같습니다 : strace -e read -p 12345(터미널 에뮬레이터의 pid를 대체하십시오). 원칙적으로 ptrace시스템 호출 을 사용 하여 동일한 방식으로 정보를 수집 strace하고 자체 터미널에 직접 쓰는 프로그램을 작성할 수 있습니다. 그러한 프로그램이 존재하는지 모르겠지만 질문에 지정된 요구 사항을 포함합니다.
kasperd

한 가지 가능한 방법은 대상 컴퓨터에서 RPC (원격 프로 시저 호출)를 활성화 한 다음 개별 창을 포함하여 화면에 (원격으로) 연결하고 제어 할 수 있습니다. 참고 : 이렇게하면 취약점이 발생하므로 완료되면 RPC를 비활성화하십시오.
user3629249

답변:


14

@Sven이 언급했듯이 가장 좋은 옵션은 screen또는 을 사용하는 것 tmux입니다. "터미널 멀티플렉서"라고하는 도구입니다. 실제 로그인에서 연결 및 연결 해제 할 수있는 쉘 세션을 작성할 수 있습니다. 이 도구는 다른 터미널에서 작업을 확인하는 데 유용 할뿐만 아니라 다른 사용자와 세션을 공유하고 인터넷 연결이 끊긴 경우 명령이 중지되지 않도록하는 등 다른 기능이 있습니다. 을 screen검색하는 경우 "GNU Screen"을 검색해보십시오. 이러한 도구는 대부분 Linux 시스템에서 사용할 수 있습니다.

일반적으로 세션을 시작한 다음 해당 세션 내에서 명령을 실행합니다. 그러나 이미 명령을 시작한 경우 실행중인 명령을 화면 세션으로 이동하는 방법에 대한 기사를 찾아 볼 수 있습니다. 그래도 중요한 것을 처음 시도해 보는 것은 좋지 않습니다. 이 질문은 약간 유용 할 수 있습니다.

이미 실행중인 프로세스를 화면으로 이동

프로세스가 실행 중인지 확인하고 싶다면 내가 가장 좋아하는 도구는 strace입니다. 이 도구를 사용하면 프로세스가 수행 한 각 커널 호출을 볼 수 있습니다. 출력을 이해하는 데 약간의 기술이 필요할 수 있지만 최소한 프로세스가 실행 중인지 알 수 있어야하며, 충분히 가까이 보면 파일 이름이 열릴 수 있습니다. 이를 위해서는 먼저을 검색하여 PID를 찾은 ps aux|grep yourcommand다음 다음을 수행하십시오.

strace -fp YOUR_PID

^ C에서 벗어날 수 있습니다. 다시 연결하는 것을 허용하지 않을 수 있지만 수행중인 작업을 알고 싶다면 충분합니다.


다시 부착 할 수없는 이유는 무엇입니까?
HSchmale 2016 년

@HSchmale 나는 당신의 질문을 이해하지 못합니다. strace를 언급하는 경우 해당 프로그램은 터미널을 전혀 제공하지 않습니다. 커널 호출을 보여줍니다. 프로세스가 중단 된 것으로 의심되는 경우 strace는 현재 작업중인 정확한 파일을 보여 주므로 프로세스가 어디에 있는지, 중단되지 않았 음을 알 수 있습니다.
DKing

그것은 당신이 그것에 strace를 재 부착 할 수 없다고 생각한 것이 잘못 읽었지만 터미널을 다시 부착하는 것을 의미했습니다.
HSchmale 2016 년

9

한 가지 방법 : TMUX

대부분의 답변이 이미 지적했듯이-기존 SSH 세션에있는 경우- 명령과 함께 tmux(또는 screen)

tmux

이제 프로그램 / 명령을 시작할 수있는 새로운 bash 세션이 시작되었습니다. 언제든지 (닫기보다는 CTRL + D가 아닌) 창을 닫고 같은 컴퓨터에서 같은 사용자에게 SSH 연결을 구축하고 명령을 작성하여 나중에 다시 닫을 수 있습니다.

tmux attach

당신은 또한 그들에게 이름을 부여하여 여러 tmux 세션을 가질 수 있습니다

tmux new -s myname

당신은 tmux당신의 사용자에 대한 모든 열린 세션 의 목록을 볼 수 있습니다

tmux ls

명명 된 tmux세션에 첨부

tmux a -t myname

tmux cheat sheet 여기서 포괄적 인 정보를 찾으 십시오 .

실행중인 프로그램

당신이 다른 이미 실행중인 프로세스를 이동 할 수있는 대답은 지금까지 사실을 인식하지 않는 것 tmux/ screen이 답변 점을. 작업을 수행하는 프로그램이 호출 reptyr되며 Ubuntu / Debian에서 간단한 프로그램으로 설치할 수 있습니다

sudo apt-get install reptyr

그런 다음 실행중인 프로그램의 프로세스 ID (예 : top또는 htop)를 찾아 tmux세션을 시작하십시오.

reptyr PID

실행중인 프로세스를 tmuxbash 세션에 다시 연결합니다 .


5

앞으로, 당신은 사용할 수 있습니다 screen또는 tmux다음 실행중인 세션을 다시 부착 할 수 있습니다.


3

나는 byobu를 사용 하고 있으며 엄청나게 강력합니다. Byobu는 GPLv3 오픈 소스 텍스트 기반 창 관리자 및 터미널 멀티플렉서입니다.

"byobu"를 입력하면 byobu 세션을 열 수 있습니다. 그런 다음 Ctrl + F2를 사용하여 새 탭을 만들고 뒤로는 Ctrl + F3, 앞으로는 Ctrl + F4를 사용하여 탭 사이를 이동할 수 있습니다. Ctrl + F6을 사용하여 탭을 닫거나 Shift + F6을 사용하여 세션에서 분리 할 수 ​​있습니다. 나중에 "byobu"를 다시 입력하여 세션에 다시 연결하십시오.

Byobu는 수직 및 수평 분할, 다른 멋진 기능 중 전체 화면을 지원합니다. Ubuntu / Debian, CentOS / Fedora / RedHat 및 FreeBSD에서 사용할 수 있습니다.


터미널 멀티플렉서 byobu를 호출하는 데 약간의 오해가있는 것 같습니다. 정말 단지 프런트 엔드의 tmux하고 screen많은 발견은 그들이 상자 밖으로보다 더 나은 사용자 경험을 제공합니다.
B 레이어

2

이미 지적했듯이 tmux또는 screen나중에 사용하는 것이 좋지만 미리 생각한 경우에만 작동합니다.

나는 당신의 상황에 꽤 몇 번 있었다. 실행 한 터미널이 사무실 데스크탑 PC에있는 경우 PC에 SSH를 연결하고 VNC 서버를 시작할 수 있습니다. 그렇게하면 최소한 열린 터미널을 확인할 수 있습니다.


0

모두가 언급했듯이 tmux를 사용할 수 있습니다. 여러 사람과 화면을 공유하려는 경우 화면이 유용하지 않습니다.

무엇보다도 모든 사람이 https://tmate.io/ 를 사용하여 로컬 컴퓨터에 임시 액세스 를 시도하는 것이 좋습니다 . tmate는 위의 모든 것을 지원합니다 :)

https://tmate.io/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.