Question Comment suspendre bash dans bash


Est-il possible de suspendre un bash qui a été invoqué par un autre bash? Par exemple, si j'utilise su pour devenir un utilisateur différent mais que vous voulez revenir à mon propre utilisateur pendant un moment. Pour un autre exemple, dans une session SSH, je peux utiliser le raccourci ~ (~, ^ Z) pour suspendre le shell distant et retourner dans mon shell local (mais c'est évidemment une fonctionnalité SSH, pas le shell).

bash intercepte ^ Z pour faire son propre contrôle de processus, il doit donc s'agir d'une commande séparée (si elle est même supportée). Mais essayer de le trouver ne donne que des informations sur le contrôle de processus normal.


4
2017-12-06 17:24


origine




Réponses:


Bash a un suspend Builtin:

suspend: suspend [-f]
    Suspend shell execution.

    Suspend the execution of this shell until it receives a SIGCONT signal.
    Unless forced, login shells cannot be suspended.

    Options:
      -f    force the suspend, even if the shell is a login shell

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.

5
2017-12-08 07:40



Ahha! C'est ce que je cherchais. - Brian


Essayez avec:

kill -STOP $$

$$ est le PID du shell actuel.

Vous pouvez le lier à Alt + z par exemple en ajoutant à ~/.inputrc:

"\ez": "kill -STOP $$\n"

5
2017-12-06 17:28



Excellent merci! Je n'ai jamais entendu parler de .inputrc - Brian
Il contrôle le chemin bash lit / édite la saisie de l'utilisateur, voir man readline, cela peut être très utile, il vaut la peine de mentionner les commandes: history-search-backward et history-search-backward. - cYrus


Pas exactement ce que vous demandiez, mais j'utilise normalement écran quand je fais des choses comme ça. Cependant, l'écran n'est pas installé par défaut sur tous les systèmes.


1
2017-12-07 23:00



Je travaille en fait à l'écran tout le temps. Je lance un écran sur ma machine locale et j'ai des sessions SSH dans un tas d'autres. Par conséquent, je ne lance généralement pas d’écran sur les systèmes distants car l’écran dans l’écran est maladroit. Et je suis trop paresseux pour ouvrir une autre session :-). J'ai l'habitude d'appuyer sur ^ Z dans vim pour le suspendre quand j'ai besoin d'exécuter des commandes (je sais que vim a! Mais ce n'est pas la même chose qu'un shell). - Brian