단일 사용자 모드에서 두 번째 쉘을 시작하려면 어떻게합니까?


14

이것은 모순되는 것처럼 들릴지 모르지만 최근에는 깨진 RAID 배열을 재구성하는 동안 일정 시간 (일!) 동안 단일 사용자 모드 (일명 유지 관리 모드)를 사용해야했습니다.

이 작업을 수행하는 동안 다양한 구성 파일의 설정을 확인 / 편집하거나 기본 (및 유일한) 콘솔이 복구 프로세스를 실행하는 동안 시스템 로그를 보는 등의 작업에 두 번째 셸을 사용하려고합니다.

다른 tty에서 두 번째 쉘을 시작하기 위해 권장되는 명령은 무엇입니까?

분명히 하나의 방법은 screentty1에서 사용할 수 있지만 Alt-F1, Alt-F2 등으로 세션을 쉽게 전환 할 수는 없습니다.


4
screen그만큼 쉽습니다. Ctrl AP는 Alt F1보다 훨씬
— 까다로워

TUI 창 관리 screen와 같은 앱이 tmux항상 트릭을 수행하는 것은 아닙니다. 때로는 ttyXa 대신 실제 장치 가 필요합니다 pts.
— Parthian Shot

답변:


14

이 상황을 위해 특별히 설계된 명령이 있습니다 openvt. 그냥 실행 openvttty1로에 쉘에서 당신은 이미 뭔가가 없었어요 최초의 청각 장애에서 실행중인 쉘 찾을 수 있습니다 당신이 유용 할 수있는 몇 가지 옵션이 있습니다 (아마도에서 tty2를.) openvt 매뉴얼 페이지를 참조하십시오.

이것은 getty가 관리하는 로그인이 아니기 때문에 새 쉘을 종료하면 로그인 프롬프트가 표시되지 않습니다. tty는 실행중인 프로세스가 없기 때문에 죽어 버릴 것입니다. 그러나 여전히 앞뒤로 전환 할 수 있으며 (Alt-F1 Alt-F2) 쉘을 종료했을 때 화면에 무엇이 있는지 볼 수 있습니다. 이 deallocvt명령은이 좀비와 같은 상태 인 tty를 삭제하고 원래 "Alt-F2는 아무 작업도 수행하지 않습니다"상태로 돌아갑니다.

원래 이러한 명령은 open및 이라고 불렸지만 disalloc결국 누군가 너무 일반적이고 할당 해제가 "단어가 아닌"것으로 판단되어 변경하기로 결정했습니다.

예전에는 Alt + Up이 실행되도록 키보드 드라이버와 초기화를 구성하는 것이 일반적 open이었으므로 새 콘솔에서 셸을 생성하는 핫키 역할을합니다. 귀하는 여전히 이전 구성의 나머지 부분을 주석에서 찾을 수 있습니다 /etc/inittab. (이없는 멋진 새로운 초기화를 사용하지 않는 경우 inittab.)

비슷한 질문이 있습니다.


3
좋아, 나는 몰랐다 openvt. +1.
— jscott

사실 게티가 훨씬 쉬워 보입니다. 나는 그것이 이미 설치되어 있다는 것을 깨닫지 못했습니다.
— StarNamer

방금 단일 사용자 모드의 시스템에서 RAID 어레이를 수리하는 데 일주일 이상을 보냈으며 openvt매우 유용하다고보고했습니다. 내 통지에 새로운 명령을 가져 주셔서 감사합니다.
— StarNamer

12

getty원하는 tty를 위해 다른 것을 생성 할 수 있습니다. 단일 사용자 모드로 부팅 한 다음 gettytty2에서 a를 시작하십시오 .

root@host:~# /sbin/getty 38400 tty2 &

당신은 이제 새로운 tty로 Alt+ F2넘어갈 수 있습니다. 필요에 따라 추가 tty에 대해 반복하십시오. 더 깔끔한 작업을 수행하고 /etc/inittab단일 사용자 모드에서 자동으로 처리 하도록 구성 할 수 있습니다.


이것은 내가 찾고있는 것처럼 보입니다. 다음에 시도해 볼게요.
— StarNamer

그것을 시도했다. 작동하지만 로그인 세션이에서 생성 init되지 않기 때문에 죽으면 다시 생성되지 않습니다.
— StarNamer

실제로, 우리는 단지 위의 예제에서 백그라운드로 드롭하고 있습니다. 당신이 진짜 버몬트의 전체 제공을 요구하는 경우에, 당신은 해킹 될거야 /etc/inittab과 /etc/rc1.d/S??single아주 최소한.
— jscott

2

JOB CONTROL현재 쉘에서 사용하여 여분의 쉘 인스턴스없이 할 수 있습니다 . 의 맨 페이지에 설명되어 bash(1)있습니다.

기본적으로 Ctrl+ Z순서를 사용하여 작업을 일시 중단 할 수 있지만 터미널에서 다른 방식으로 구성 할 수는 있지만 출력을 확인하십시오 stty -a.

$ stty -a | grep susp
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;

다음을 발행하여 작업을 확인할 수 있습니다 jobs.

# jobs
[1]   Stopped                 journalctl -f
[2]-  Stopped                 vim /etc/hosts
[3]+  Stopped                 tail -f /var/log/firewalld

그중 하나를 포 그라운드로 가져옵니다.

$ fg %3

또는 백그라운드에서 다시 시작하십시오.

$ bg %2

이 방법에는 screen또는의 많은 장점이 tmux없지만 일부 상황에서 똑같이 유용 할 수 있습니다.


요점은 초기 콘솔에서 실행중인 프로세스를 일시 중단하거나 방해하고 싶지 않다는 것입니다. 예를 들어, 달리기 ddrescue를 할 때이 작업이 설정되어 있어도 계속 중단하고 다시 시작하고 싶지는 않습니다.
— StarNamer

이것으로 몇 가지 문제가 있습니다. 한 예로, 그는 자신이 bash를 사용하지 않을 수 있습니다 (사용 할 수있는 csh, tcsh또는 zsh그렇게 그 맨 페이지를 언급하는 경우에 부정확 한 것, 예를 들어). 다른 경우, 이것은 요청 된 질문에 대답하지 않습니다.
— Parthian Shot

1

tmux 또는 screen과 같은 터미널 멀티플렉서를 사용하십시오.

tmux에 대한 자세한 내용은 https://github.com/tmux/tmux/wiki를 참조 하십시오.


" tty1 *에서 화면 을 사용하는 방법이있을 수 있지만 Alt-F1, Alt-F2 등으로 세션을 쉽게 전환 할 수는 없습니다."
— Cristian Ciupitu

크리스티안이 말했듯이, 나는 이미 screen다른 멀티플렉서가 더 과도하다고 생각 하고 느꼈습니다. 필요한 것은 간단한 두 번째 콘솔입니다.
— StarNamer

아 죄송합니다, screen당신의 질문에 간과 했습니다. 늦었다.
— Marcin Kaminski

2 개의 키 조합을 사용하여 새로운 TTY를 생성하고 따로 따로 떼어 놓는 것 외에 어떻게 "오버 킬"합니까?
— mveroone

IMO, 그것은 '오버 킬 (overkill)'의 이상한 정의이지만, 누군가에게 효과가
— 있더라도
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.