Saya mengalami masalah sakit kepala.
Saya ingin menjalankan perintah mulitple di latar belakang, jadi saya ingin memulainya dalam bash satu per satu. Sangat mudah untuk memulai satu perintah di shell linux di latar belakang, seperti ini:
myCommand &
Memulai beberapa perintah juga mudah, seperti ini:
myCommand1 && myCommand2
atau
myCommand1 ; myCommand2
Tetapi jika saya ingin menjalankan beberapa perintah di latar belakang, saya mencoba format perintah berikut, tetapi gagal:
myCommand1 & && myCommand2 &
atau
myCommand1 & ; myCommand2 &
Kedua format gagal. Bagaimana saya bisa menjalankan banyak perintah yang ada &
dalam satu baris perintah?
command-line
bash
Jam ZHONG
sumber
sumber
Jawaban:
Gunakan ().
Jika Anda ingin menjalankannya secara berurutan:
atau
Jika Anda ingin mereka menjalankan paralel:
Dalam bash, Anda juga dapat menggunakan ini (spasi di belakang {dan; wajib):
sumber
(myCommand1 &) && (myCommand2 &)
akan berjalanmyCommand2
meskipunmyCommand1
gagal.Saya kira Anda menginginkan ini:
Ini mulai
myCommand1
dan mengirimkannya ke latar belakang karena diikuti oleh ampersand, lalu segera memulaimyCommand2
dan mengirimkan juga ini ke latar belakang, karena itu melepaskan shell lagi.Daftar
Untuk pemahaman yang lebih baik, Anda dapat mengganti pipa dengan perintah di sini.
Mari kita bagi menjadi contoh. Anda dapat membuat daftar dengan menggabungkan perintah dan memisahkannya dengan salah satu dari ini
; & && ||
::Anda dapat mengakhiri daftar dengan salah satu dari ini:
; & <newline>
.Biasanya Anda menjalankan perintah atau daftar dengan menekan Enter, itu sama dengan
<newline>
. Titik koma;
memiliki tujuan yang sama terutama dalam skrip.&
Namun Ampersand memulai perintah dalam subkulit di latar belakang, segera melepaskan shell.Anda dapat menggunakan
()
kurung bundar atau keriting{}
untuk daftar grup lebih lanjut, perbedaannya adalah bahwa kurung bundar menelurkan subkulit dan yang keriting tidak. Kurung keriting membutuhkan spasi setelah yang pertama dan titik koma atau baris baru sebelum braket penutup. Sebagai contoh:Ini bisa menjadi sangat rumit, jika Anda tidak yakin menggunakan
true
danfalse
untuk menguji apakah konstruksi berfungsi seperti yang diharapkan:Kontrol Pekerjaan
The
jobs
perintah menampilkan daftar pekerjaan latar belakang yang berjalan atau baru saja selesai di shell saat ini. Ada sejumlah pintasan keyboard dan perintah untuk kontrol pekerjaan:jobs
daftarfg
=%
membawa proses ke latar depan memulainya jika perlu, Anda dapat menentukan proses sebagai berikut:bg
=%&
membawa proses ke latar belakang memulainya jika perlu:wait
menunggu proses latar belakang selesai dan mengembalikan status terminasi:Bayangkan Anda memulai proses yang panjang (
jobs
tunjukkan nomor 3) dan kemudian sadari bahwa Anda ingin komputer ditangguhkan saat selesai, ditambahecho
pesan jika prosesnya tidak berhasil:sumber
man bash
) dan digunakan secara luas persis seperti yang dimaksudkan AFAIK - Saya tidak pernah mengalami sesuatu yang aneh.