J'apprends la exec
commande. Je sais que la exec
commande remplace le processus qui l'a démarrée. Il n'est donc pas possible de revenir au processus qui est remplacé par la exec
commande.
On pourrait dire que son but est de rendre impossible le retour au processus qui l'a déclenché.
Mais quelles sont les autres utilisations pour avoir quelque chose comme exec
disponible en tant que commande?
command-line
mizech
la source
la source
exec ssh server-that-does-byobu-on-login.example.com
cela très agréable, en ce que ^ A ^ D ferme complètement le terminal. (Plus généralement,exec byobu
(ouexec screen
,exec tmux
).Réponses:
Dans le script wrapper
exec
est principalement utilisé dans les scripts wrapper.Si vous souhaitez modifier l'environnement d'un programme avant d'exécuter le programme principal, vous écrivez souvent un script et à la fin de celui-ci démarrez le programme principal. Mais il n'est pas nécessaire que le script reste en mémoire à ce moment-là. Donc,
exec
est utilisé dans ces cas pour que le programme principal puisse remplacer le script mère.En voici un exemple pratique. Son
mate-terminal.wrapper
script est livré avec mate-terminal. Il démarre lemate-terminal
avec quelques arguments supplémentaires en vérifiant les environnements de l'utilisateur.Le point à noter ici est, il y a un
exec
appel, qui remplace ce script en mémoire.Voici une réponse à une question similaire dans Unix & Linux StackExchange Site - /unix//q/270929/19288
Pour rediriger les descripteurs de fichiers
Une autre utilisation courante de la
exec
redirection de descripteurs de fichiers est.stdin
,stdout
,stderr
Peuvent être redirigés vers des fichiers en utilisant exec.Redirection
stdout
-exec 1>file
entraînera la sortie standard d'être un fichier nomméfile
pour la fin de la session shell en cours. Tout ce qui doit être affiché sur l'écran sera dans le fichier.Redirection
stdin
- Il peut également être utilisé pour rediriger lestdin
vers un fichier. Par exemple, si vous souhaitez exécuter un fichier de scriptscript.sh
, vous pouvez simplement rediriger lestdin
vers le fichier à l'aide deexec 0<script.sh
.la source
exec
son utilisation dans la redirection des descripteurs de fichiers.La
exec
commande remplace le processus shell actuel par la commande spécifiée. Normalement, lorsque vous exécutez une commande, un nouveau processus est généré (bifurqué). Laexec
commande ne génère pas de nouveau processus. Au lieu de cela, le processus en cours est superposé avec la nouvelle commande. En d'autres termes, laexec
commande est exécutée à la place du shell actuel sans créer de nouveau processus.Il existe trois utilisations les plus courantes de la commande exec:
1. Remplacement du processus
Exemple 1: si vous ouvrez un nouveau
bash
shell en tant queen
pstree
elle ressembleLe
bash
shell précédent est toujours là et vous avez obtenu un nouveaubash
shell. Alors que si vous ouvrez un nouveau shell bash comme,les
pstree
spectaclesIci, l'ancien
bash
est remplacé par un nouveau. Il est particulièrement utile de quitter plusieurs connexions en une seule commande. Il est plus sécurisé et supprime les chances de quitter un terminal ouvert par erreur. Voir Quitter à la fois root et user avec une seule commandeExemple-2: vous pouvez ouvrir un fichier en tant que
Lorsque vous quittez,
vi
il n'est pas nécessaire de fermer le terminal séparément car le shell est déjà remplacé. Dès que vous fermez le vi, le terminal est également fermé.2. Une méthode de redirection des descripteurs de fichiers dans les scripts shell
La
exec
commande peut également être utilisée dans des scripts shell pour ouvrir, fermer et copier dynamiquement des descripteurs de fichiers. Cela permet d'effectuer une redirection de STDIN, STDERR, STDOUT et d'autres descripteurs de fichiers vers divers fichiers à l'intérieur du script shell, au lieu de la chaîne d'invocation de commande. Si vous ne spécifiez pas de commande ou d'arguments, vous pouvez spécifier des symboles de redirection et des descripteurs de fichier pour exécuter ces fonctions.Disons que vous avez un script shell que
script.sh
vous souhaitez avoir un fichier journalscript.log
, vous pouvez utiliser enexec
tant que,ce qui équivaut à
3. Création d'étapes du processus à l'aide de la commande exec
Vous pouvez également utiliser la commande exec pour créer un ensemble de scripts shell qui s'exécutent séquentiellement comme les étapes du processus. Au lieu de générer de nouveaux processus chaque fois que vous devez transférer le contrôle vers le script suivant, vous exécutez la commande exec.
Dans ce cas, la dernière instruction de chaque étape doit être une
exec
commande qui appelle l'étape suivante.Voir les utilisations de la
exec
commande dans les scripts shell pour en savoir plus.Remarque: une partie de ce qui précède est tirée de cela.
la source
Autant que je sache, il est également utilisé pour rediriger les descripteurs de fichiers (par exemple, STDOUT, STDERR, STDIN) d'un script bash.
Ainsi, par exemple, vous pouvez lire à partir d'un fichier à la place du clavier en utilisant la redirection STDIN et écrire dans un fichier au lieu du terminal par la redirection STDOUT (ou pourrait être STDERR selon le programme).
la source