Comment arrêter un processus en arrière-plan dans un script shell en cours d'exécution
P粉722409996
P粉722409996 2023-09-03 18:16:08
0
1
717
<p>J'essaie d'exécuter mysqld en arrière-plan pour exécuter certaines commandes à l'aide du client mysql, mais lorsque je passe le processus au premier plan, mon script cesse de s'exécuter. Voici le script que j'utilise : </p> <pre class="brush:sh;toolbar:false;">set -m daemon="/usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0 $@" $démon & exec echo "Test" exécutable fg %1 ≪/pré> <p>Je ne suis pas un expert en programmation de scripts shell, j'ai consulté certains sites Web et trouvé cette méthode d'exécution de commandes. </p>
P粉722409996
P粉722409996

répondre à tous(1)
P粉521748211

Non. Le script dans exec echo "Test" 后停止。exec remplace le processus actuel (c'est-à-dire le script shell) par la commande suivante. Vous pouvez vérifier par :

daemon="/usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0 $@"
$daemon &
exec echo "Test"
echo "Second Test"
exec fg %1

La solution est simple : n’utilisez pas exec.

BTW : On ne sait pas pourquoi vous voudriez utiliser fg。在交互式shell中,fg dans un script shell, cela ne fonctionne tout simplement pas dans un script.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal