bash 또는 다른 프로세스가 실행되지 않고 터미널을 여는 방법

bash 또는 다른 프로세스가 실행되지 않고 터미널을 여는 방법

1) 이미 실행 중인 다른 프로세스의 입출력을 위한 터미널을 열고 싶습니다. 새 터미널을 열면 bash가 자동으로 실행되지만 이미 bash가 차지하고 있기 때문에 터미널의 stdin을 가져올 수 없습니다. 연결된 실행 파일 없이 터미널 창을 실행하고 싶습니다.

2) SSH를 통해 연결하는 경우 새 연결에서도 동일한 동작을 얻으려면 어떻게 해야 합니까? 즉, bash가 실행되지 않는 원격 터미널이 있습니까?

우분투를 실행하세요.

답변1

아무 작업도 수행하지 않는 프로그램으로 터미널을 엽니다. 대부분의 터미널 에뮬레이터는 시작 시 터미널 애플리케이션 측에 연결된 프로그램을 실행하고 해당 프로그램이 종료될 때 터미널을 닫는다는 점을 제외하면 실제로 터미널에서 어떤 프로그램도 실행할 필요가 없습니다.

표준 Unix 도구 모음에는 신호에 의해 종료될 때까지 아무 작업도 수행하지 않는 명령이 없지만 sleep 999999999충분히 가깝습니다.

xterm -e sleep 999999999
ssh -tt host.example.com sleep 999999999

어딘가에 최종 장치를 보고할 수도 있습니다.

tty=$(xterm -e sh -c 'tty >&3; exec sleep 999999999' 3>&1)

답변2

터미널과 연결되지 않은 대부분의 프로세스에는 파일 시스템의 다른 위치나 /dev/null을 가리키는 stdin/stdout/stderr이 있습니다.

당신이 무엇을 쫓고 있는지 잘 모르겠습니다.

디버거를 사용하여 다른 프로세스에 연결할 수 있습니다. 루트여야 합니다.

다음과 같은 명령을 실행하여 가리키는 위치를 확인할 수 있습니다.

 find /proc -name 0 -o -name 1 -o -name 2 | xargs ls -ld

가지고 있는 프로그램에 다시 연결하고 그 출력을 보려면 먼저 이라는 멋진 프로그램에서 해당 프로그램을 시작할 수 있습니다. screen이 프로그램은 여러 터미널 창을 시작하고 프로그램을 실행할 수 있는 세션을 시작합니다. 그런 다음 연결이 끊어지면 , 나중에 다시 연결하세요.

관련 정보