Disons que je commence dans mon compte local:
avindra@host:~>
puis je passe en root:
host:~ #
Ensuite, je passe à l'oracle:
[ oracle@host:~]
Existe-t-il un moyen pour moi de revenir dans le shell racine (le parent), sans vous déconnecter du shell Oracle?
Ce serait pratique dans ce cas, car le compte Oracle n'a pas de privilèges sudo. Ainsi, par exemple, je suis dans le répertoire / some / really / deep / nested / dans oracle, et j'ai toutes sortes de variables d'environnement spéciales configurées. Mais je dois revenir à la racine pour toucher certains fichiers système.
Actuellement, je quitterais le shell Oracle pour revenir à la racine, exécuter mes commandes root, puis revenir à Oracle. L'inconvénient est que je suis connecté depuis un nouveau départ et que je perds mon répertoire de travail et mon environnement.
Cela étant dit, y a-t-il un moyen de faire ce que je demande?
Réponses:
Vous pouvez simuler un
CTRL-Z
(que vous utilisez normalement pour mettre temporairement un processus en arrière-plan) à l'aide de lakill
commande:bash
piège simplement laCTRL-Z
combinaison de touches.kill -19
envoieSIGSTP
au processus qui est effectivement la même chose.la source
zsh
vous pouvez simplement courirsuspend
.zsh
oucsh
,tcsh
oubash
, ou le shell Bourne ouksh
... (enksh
, suspension est un alias pour'kill -s STOP $$'
(notez le bug avec les guillemets manquants dans $$)).bash
ne piège pas CTRL-Z, lorsque vous appuyez sur CTRL-Z, votre émulateur de terminal envoie un^Z
caractère (0x1a) au côté maître du périphérique pty. La discipline de ligne du pilote pty envoie ensuite SIGTSTP au groupe de processus de premier plan du terminal. Jusque-làbash
n'est pas impliqué du tout. Ce SIGTSTP peut provoquer le chef de groupe de processus de suspension et ensuite lewait()
quibash
fait sur elle retournera.19
sera le nombre de SIGTSTP. Utilisezkill -s TSTP
oukill -s STOP
(TSTP peut être piégé ou ignoré, STOP ne peut pas).$$
peut être en lecture seule, maisIFS
ne l'est pas. EssayezIFS=0123456789; suspend
dansksh
par exemple.Csh, bash, ksh, zsh, ont une
suspend
commande intégrée (ou alias, en ksh) qui fait exactement cela. Cette commande équivaut principalement à envoyer un signal TSTP au shell; bash et zsh font un peu de gestion de signal et de jonglage supplémentaires, et dans ces shells, lasuspend
commande fonctionne même si le shell ignore actuellement TSTP.Vous pouvez également envoyer le signal au shell manuellement avec
kill -STOP $$
.la source
Je suggère également que vous puissiez utiliser (installer si nécessaire) un programme appelé
[screen][1]
qui vous permet d'ouvrir plusieurs fenêtres de terminal. Il a été conçu pour TTYS donc il fonctionne très bien sans avoir besoinX
. Vous pouvez utiliser des raccourcis clavier pour basculer entre les terminaux et vous déconnecter et vous déconnecter, en laissant vos terminaux toujours en fonction, puis reconnectez-vous et reconnectez-les.Je crois que la plupart des distributions Linux ont des packages pour ce programme, et j'ai utilisé des packages sur Solaris pour cela. Le pire des cas est bien sûr que vous pouvez installer à partir de la source.
la source