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


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.