Допустим, я начинаю с моего локального аккаунта:
avindra@host:~>
затем я переключаюсь на root:
host:~ #
Затем я переключаюсь на оракула:
[ oracle@host:~]
Есть ли способ для меня вернуться в корневую оболочку (родитель), не выходя из оболочки оракула?
В этом случае это было бы удобно, поскольку учетная запись oracle не имеет привилегий sudo. Так, например, я нахожусь в каталоге / some / реально / deeply / nested / в oracle, и у меня есть все виды специальных переменных окружения. Но мне нужно вернуться в root, чтобы перебрать некоторые системные файлы.
В настоящее время я бы выпал из оболочки oracle, чтобы вернуться в root, выполнить мои команды root, а затем переключиться обратно в Oracle. Неудобство состоит в том, что я вошел в систему с самого начала, и я теряю свой рабочий каталог и среду.
При этом, есть ли способ сделать то, что я прошу?
Ответы:
Вы можете смоделировать
CTRL-Z
(который вы обычно используете для временного фона процесса), используяkill
команду:bash
просто ловитCTRL-Z
комбинацию клавиш.kill -19
отправляетSIGSTP
в процесс, который по сути то же самое.источник
zsh
тебе можно просто бежатьsuspend
.zsh
илиcsh
,tcsh
илиbash
, или оболочка Bourne илиksh
... (вksh
, suspend это псевдоним для'kill -s STOP $$'
(обратите внимание на ошибку с отсутствующими кавычками в районе $$)).bash
делает не ловушка CTRL-Z, при нажатии CTRL-Z, ваш эмулятор терминала посылает^Z
символ (0x1A) к основной стороне PTy устройства. Затем дисциплина линии драйвера pty отправляет SIGTSTP в группу процессов переднего плана терминала. До этогоbash
не участвует вообще. Это может привести к SIGTSTP лидер группы процессов , чтобы приостановить и затемwait()
, чтоbash
делает на ней вернется.19
это будет номер SIGTSTP. Используйтеkill -s TSTP
илиkill -s STOP
(TSTP может быть перехвачен или проигнорирован, STOP не может).$$
может быть только для чтения, ноIFS
это не так. ПопробуйтеIFS=0123456789; suspend
вksh
, например.Csh, bash, ksh, zsh имеют
suspend
встроенную команду (или псевдоним в ksh), которая делает именно это. Эта команда в основном эквивалентна отправке сигнала TSTP в оболочку; bash и zsh делают немного дополнительного обработчика сигналов и манипулирования, и в этих оболочкахsuspend
команда работает, даже если оболочка в настоящее время игнорирует TSTP.Вы также можете отправить сигнал в оболочку вручную с помощью
kill -STOP $$
.источник
Я также хотел бы предложить, чтобы вы могли использовать (установить при необходимости) программу под названием,
[screen][1]
которая позволит вам открыть несколько окон терминала. Он был разработан для TTYS, поэтому работает без проблем.X
. Вы можете использовать сочетания клавиш для переключения между терминалами и отключения и выхода из системы, оставив свои терминалы в рабочем состоянии, затем войдите в систему и подключитесь к ним снова.Я полагаю, что большинство дистрибутивов Linux имеют пакеты для этой программы, и я использовал пакеты для Solaris. В худшем случае, конечно, вы можете установить из исходного кода.
источник