Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menghentikan proses latar belakang dalam skrip shell yang sedang berjalan

<p>Saya cuba menjalankan mysqld di latar belakang untuk melaksanakan beberapa arahan menggunakan klien mysql, tetapi apabila saya menukar proses ke latar depan, skrip saya berhenti berjalan. Ini adalah skrip yang saya gunakan: </p> <pre class="brush:sh;toolbar:false;">set -m daemon="/usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0 $@" $daemon & exec echo "Ujian" exec fg % 1 </pra> <p>Saya bukan pakar pengaturcaraan skrip shell, saya melihat beberapa tapak web dan mendapati kaedah melaksanakan arahan ini. </p>
P粉722409996P粉722409996413 hari yang lalu667

membalas semua(1)saya akan balas

  • P粉521748211

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

    Tidak. Skrip dalam exec echo "Test" 后停止。exec menggantikan proses semasa (iaitu skrip shell) dengan arahan berikut. Anda boleh mengesahkan melalui:

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

    Penyelesaiannya mudah: jangan gunakan exec.

    BTW: Tidak jelas mengapa anda ingin menggunakan fg。在交互式shell中,fg dalam skrip shell, ia tidak berfungsi dalam skrip.

    balas
    0
  • Batalbalas