Je sais déjà qu'en appuyant sur l' ctrl+z
arrêt de l'application, je peux envoyer l'application en arrière-plan avec la bg
commande, mais cela signifie qu'il y a une brève période de temps pendant laquelle l'application est arrêtée.
Comment envoyer l'application directement en arrière-plan sans l'arrêter?
shell
command-line
background-process
jobs
trusktr
la source
la source
ctrl+z
suivi de l'exécution de la commandebg
. Existe-t-il une seule combinaison de touches pour envoyer l'application en arrière-plan?Réponses:
L'envoi d'une application du premier plan à l'arrière-plan nécessite la coopération du terminal et du shell. Le terminal ne peut pas le faire seul, car le shell doit définir le groupe de processus de premier plan. Le shell ne peut pas le faire seul, car le terminal doit traiter la pression de touche (le shell n'est pas au premier plan, il ne peut donc pas recevoir de pression de touche).
Une approximation proche consiste à envoyer l'application en arrière-plan très rapidement. Après tout, une application partage le temps CPU avec d'autres et une pause de quelques centièmes de seconde ne devrait pas avoir d'importance. (Il le fait pour les applications en temps réel, alors assurez-vous de démarrer celles en arrière-plan.) J'utilise une liaison shell pour Ctrl+ Zqui envoie le dernier travail au premier plan à l'arrière-plan. De cette façon, une pression sur Ctrl+ Z Ctrl+ Zenvoie un travail en arrière-plan avec un temps de suspension minimal.
Voici ma liaison zsh, qui «fond» également une commande à moitié tapée lorsque la ligne de commande n'est pas vide .
En anglais, pour les non-utilisateurs de zsh du public:
Définissez une fonction shell qui effectue les opérations suivantes:
Liez cette fonction à Ctrl+ Z.
Si vous souhaitez simplement le comportement d'arrière-plan, que la ligne de commande soit vide ou non:
Je ne sais pas si tu peux faire la même chose en bash. Cela devrait être aussi simple que
bind -x '"\C-z": bg'
, sauf que bash laisse le caractère tty stop en place, donc il n'obtient jamais Ctrl+ Zcomme entrée.la source
Vous pouvez créer un arrière-plan pour une tâche en ajoutant un
&
après.Par exemple
tail -f /var/log/messages &
, la tâche sera immédiatement mise en arrière-plan.Comme toujours, vous pouvez voir quelles tâches vous avez mises en arrière-plan avec la
jobs
commande.Cela suppose bien sûr que vous n'avez pas encore exécuté la commande.
la source
ctrl+z
puis exécuterbg
sur la ligne de commande pour que l'application s'exécute en arrière-plan. Mais entre la pressionctrl+z
et l'exécutionbg
, il y a un délai pendant lequel l'application est complètement suspendue. Je n'en veux pas. Comment l'envoyer immédiatement en arrière - plan ?La mise en arrière-plan d'une commande se fait en ajoutant une esperluette à la commande.
S'il est déjà en cours d'exécution, votre seule option est de l'arrêter, puis de le mettre en arrière-plan.
la source