Maison  >  Questions et réponses  >  le corps du texte

Comment arrêter un processus en arrière-plan dans un script shell en cours d'exécution

<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粉722409996P粉722409996413 Il y a quelques jours666

répondre à tous(1)je répondrai

  • P粉521748211

    P粉5217482112023-09-04 17:45:03

    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.

    répondre
    0
  • Annulerrépondre