Załóżmy, że zaczynam na moim koncie lokalnym:
avindra@host:~>
potem przełączam się na rootowanie:
host:~ #
Następnie przełączam się na oracle:
[ oracle@host:~]
Czy istnieje sposób na powrót do powłoki głównej (rodzica) bez wylogowania z powłoki Oracle?
Byłoby to wygodne w tym przypadku, ponieważ konto Oracle nie ma uprawnień sudo. Na przykład jestem w katalogu / some / naprawdę / deeply / nested / w oracle i mam skonfigurowane wszelkiego rodzaju specjalne zmienne środowiskowe. Ale muszę wrócić do katalogu głównego, aby dotknąć niektórych plików systemowych.
Obecnie wypadałbym z powłoki Oracle, aby wrócić do roota, uruchomić moje polecenia roota, a następnie wrócić do Oracle. Niedogodnością jest to, że loguję się od nowa i tracę katalog roboczy oraz środowisko.
Biorąc to pod uwagę, czy jest jakiś sposób na zrobienie tego, o co proszę?
Odpowiedzi:
Możesz symulować
CTRL-Z
(zwykle używasz do tymczasowego tła procesu) za pomocąkill
polecenia:bash
po prostu łapieCTRL-Z
kluczową kombinację.kill -19
wysyłaSIGSTP
do procesu, który jest faktycznie tym samym.źródło
zsh
można po prostu uruchomićsuspend
.zsh
lubcsh
,tcsh
lubbash
, lub powłoka Bourne'a lubksh
... (inksh
, suspend to alias dla'kill -s STOP $$'
(zwróć uwagę na błąd z brakującymi cudzysłowami wokół $$)).bash
robi nie pułapka CTRL-Z, po naciśnięciu CTRL-Z, terminal emulator wysyła^Z
znak (0x1a) na stronie głównej urządzenia PTY. Dyscyplina linii kierowcy pty następnie wysyła SIGTSTP do grupy procesów planie terminala. Do tego czasubash
nie jest w ogóle zaangażowany. Ten SIGTSTP może spowodować zawieszenie lidera grupy procesów, a następnie towait()
,bash
co to robi, powróci.19
będzie liczba SIGTSTP. Użyjkill -s TSTP
lubkill -s STOP
(TSTP może zostać uwięziony lub zignorowany, STOP nie może).$$
może być tylko do odczytu, aleIFS
nie jest. SpróbujIFS=0123456789; suspend
naksh
przykład.Csh, bash, ksh, zsh, mają
suspend
wbudowane polecenie (lub alias w ksh), które właśnie to robi. To polecenie jest w większości równoważne wysyłaniu sygnału TSTP do powłoki; bash i zsh wykonują dodatkową procedurę obsługi sygnału i żonglowania, aw tych powłokachsuspend
polecenie działa nawet jeśli powłoka obecnie ignoruje TSTP.Możesz również ręcznie wysłać sygnał do powłoki
kill -STOP $$
.źródło
Sugerowałbym również, abyś mógł użyć (zainstalować w razie potrzeby) programu o nazwie,
[screen][1]
który pozwala otworzyć wiele okien terminala. Został zaprojektowany dla TTYS, więc działa dobrze bez potrzebyX
. Możesz używać skrótów klawiaturowych, aby przełączać się między terminalami oraz rozłączać i wylogowywać się, pozostawiając terminale nadal działające, a następnie zalogować się ponownie i połączyć z nimi ponownie.Wierzę, że większość dystrybucji Linuksa zawiera pakiety dla tego programu i użyłem do tego pakietów w systemie Solaris. Najgorszym przypadkiem jest oczywiście instalacja ze źródła.
źródło