Переключиться на родительскую оболочку без выхода


29

Допустим, я начинаю с моего локального аккаунта:

avindra@host:~>

затем я переключаюсь на root:

host:~ #

Затем я переключаюсь на оракула:

[ oracle@host:~]

Есть ли способ для меня вернуться в корневую оболочку (родитель), не выходя из оболочки оракула?

В этом случае это было бы удобно, поскольку учетная запись oracle не имеет привилегий sudo. Так, например, я нахожусь в каталоге / some / реально / deeply / nested / в oracle, и у меня есть все виды специальных переменных окружения. Но мне нужно вернуться в root, чтобы перебрать некоторые системные файлы.

В настоящее время я бы выпал из оболочки oracle, чтобы вернуться в root, выполнить мои команды root, а затем переключиться обратно в Oracle. Неудобство состоит в том, что я вошел в систему с самого начала, и я теряю свой рабочий каталог и среду.

При этом, есть ли способ сделать то, что я прошу?


Если вы используете рабочий стол графического интерфейса пользователя, вы можете просто открыть другое окно терминала или вкладку или даже переключиться на другую виртуальную консоль. Если нет, используйте экран, как указано в одном из ответов.
Джо

Я посмотрю на экран, я не использовал его раньше. Что касается вкладок, я предпочитаю использовать одну вкладку для хоста. Я считаю, что рабочий процесс, который влечет за собой несколько вкладок на хосте, будет громоздким. Я много работаю в кластерных хостах / распределенных системах, поэтому даже одна вкладка на узел в кластере может сбить с толку. На мой взгляд, одна вкладка = один дискретный хост.
Авиндра Гулчаран

Ответы:


41

Вы можете смоделировать 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в процесс, который по сути то же самое.


1
По zshтебе можно просто бежать suspend.
Микель

3
@Mikel, zshили csh, tcshили bash, или оболочка Bourne или ksh... (в ksh, suspend это псевдоним для'kill -s STOP $$' (обратите внимание на ошибку с отсутствующими кавычками в районе $$)).
Стефан Шазелас

2
bashделает не ловушка CTRL-Z, при нажатии CTRL-Z, ваш эмулятор терминала посылает ^Zсимвол (0x1A) к основной стороне PTy устройства. Затем дисциплина линии драйвера pty отправляет SIGTSTP в группу процессов переднего плана терминала. До этого bashне участвует вообще. Это может привести к SIGTSTP лидер группы процессов , чтобы приостановить и затемwait() , что bashделает на ней вернется.
Стефан Шазелас

5
Обратите внимание, что нет никакой гарантии, что 19это будет номер SIGTSTP. Используйте kill -s TSTPили kill -s STOP(TSTP может быть перехвачен или проигнорирован, STOP не может).
Стефан Шазелас

2
@ nyuszika7h, $$может быть только для чтения, но IFSэто не так. Попробуйте IFS=0123456789; suspendв ksh, например.
Стефан Шазелас

3

Csh, bash, ksh, zsh имеют suspendвстроенную команду (или псевдоним в ksh), которая делает именно это. Эта команда в основном эквивалентна отправке сигнала TSTP в оболочку; bash и zsh делают немного дополнительного обработчика сигналов и манипулирования, и в этих оболочках suspendкоманда работает, даже если оболочка в настоящее время игнорирует TSTP.

Вы также можете отправить сигнал в оболочку вручную с помощью kill -STOP $$.


0

Я также хотел бы предложить, чтобы вы могли использовать (установить при необходимости) программу под названием, [screen][1]которая позволит вам открыть несколько окон терминала. Он был разработан для TTYS, поэтому работает без проблем.X . Вы можете использовать сочетания клавиш для переключения между терминалами и отключения и выхода из системы, оставив свои терминалы в рабочем состоянии, затем войдите в систему и подключитесь к ним снова.

Я полагаю, что большинство дистрибутивов Linux имеют пакеты для этой программы, и я использовал пакеты для Solaris. В худшем случае, конечно, вы можете установить из исходного кода.


Это может быть более уместным в качестве комментария, чем ответа.
Бармар
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.