Bagaimana untuk menghentikan proses latar belakang dalam skrip shell yang sedang berjalan
P粉722409996
P粉722409996 2023-09-03 18:16:08
0
1
699
<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粉722409996
P粉722409996

membalas semua(1)
P粉521748211

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan