로컬 계정으로 시작한다고 가정해 보겠습니다.
avindra@host:~>
그런 다음 루트로 전환합니다.
host:~ #
그런 다음 oracle로 전환합니다.
[ oracle@host:~]
oracle 쉘을 종료하지 않고 루트 쉘(상위 쉘)로 돌아갈 수 있는 방법이 있습니까?
oracle 계정이 있기 때문에 편리할 것입니다.확실히sudo 권한이 있습니다. oracle의 일반적인 시나리오는 /some/rely/deeply/nested/ 디렉토리에 있고 다양한 특수 환경 변수가 특정 방식으로 설정된다는 것입니다.
문제는 다음과 같습니다. 일부 시스템 파일에 액세스하려면 루트 권한으로 돌아가야 합니다. 예, Oracle에서 로그아웃하여 루트로 돌아갈 수 있지만 현재 작업 디렉토리와 환경은 손실됩니다.
알려진 규칙을 사용하여 상위 쉘로 "전환"하는 방법이 있습니까?
답변1
CTRL-Z
다음 명령을 사용하여 (일반적으로 임시 백그라운드 프로세스에 사용됨)을 시뮬레이션 할 수 있습니다 kill
.
[tsa20@xxx01:/home/tsa20/software]$ kill -19 $$
[1]+ Stopped sudo -iu tsa20
[root@xxx01 ~]# fg
sudo -iu tsa20
[tsa20@xxx01:/home/tsa20/software]$
bash
CTRL-Z
키 조합을 캡처하면 됩니다 . 프로세스로 kill -19
전송되는 SIGSTP
것은 실제로 동일합니다.
답변2
Csh, bash, ksh, zsh에는 모두 suspend
이 작업을 수행하는 내장 명령(또는 ksh의 별칭)이 있습니다. 이 명령은 기본적으로 TSTP 신호를 쉘에 보내는 것과 같습니다. bash 및 zsh는 몇 가지 추가 신호 처리기와 사이드쇼를 수행하며, 이러한 쉘에서는 suspend
쉘이 현재 TSTP를 무시하더라도 명령이 작동합니다.
쉘에 수동으로 신호를 보내는 방법을 사용할 수도 있습니다 kill -STOP $$
.
답변3
[screen][1]
또한 여러 터미널 창을 열 수 있는 이라는 프로그램을 사용(필요한 경우 설치)하는 것이 좋습니다 . TTYS용으로 설계되었으므로 X
키보드 단축키를 사용하여 터미널 간 전환, 연결 해제 및 로그아웃, 터미널 실행 상태를 유지한 다음 다시 로그인하고 다시 연결할 수 있습니다.
나는 대부분의 Linux 배포판에 이 프로그램에 대한 패키지가 있다고 생각하며 이를 Solaris에서 사용해 왔습니다. 물론 최악의 시나리오는 소스에서 설치할 수 있다는 것입니다.