Bagaimana cara menjalankan beberapa program di latar belakang dengan perintah tunggal?
Saya sudah mencoba perintah di bawah ini, tetapi tidak berhasil.
nohup ./script1.sh & && nohup ./script2.sh &
-bash: syntax error near unexpected token '&&'
nohup ./script1.sh & ; nohup ./script2.sh &
-bash: syntax error near unexpected token ';'
bash
shell-script
Rahul Patil
sumber
sumber
Jawaban:
Dari sudut pandang sintaksis shell,
&
pisahkan perintah seperti;
/|
/&&
... (walaupun tentu saja dengan semantik yang berbeda). Jadi itu hanya:sumber
;
memulai perintah berikutnya segera setelah yang pertama berakhir.&
sebenarnya menempatkan perintah ke latar belakang. coba saja ini:echo foo & echo bar & echo test &
sudo
sehingga Anda bisa memasukkan kata sandi hanya sekali, bungkus kemudianbash -c
atau serupa.Bagian bash manpage berjudul Compound Commands memiliki dua opsi yang akan berfungsi, daftar dan perintah grup.
Perintah grup adalah serangkaian perintah yang disertakan dalam kurung kurawal
{}
. Daftarnya sama, terlampir dalam tanda kurung()
. Keduanya dapat digunakan untuk latar belakang beberapa perintah di dalam, dan akhirnya untuk latar belakang seluruh koleksi sebagai satu set. Daftar konstruksi mengeksekusi perintah dalam subkulit, sehingga tugas variabel tidak dipertahankan.Untuk menjalankan sekelompok perintah:
Anda juga dapat menjalankan perintah dalam daftar (subkulit):
sumber
()
sintaksis daftar menjalankan perintah terlampir dalam sebuah subkulit, sehingga variabel tidak disimpan dalam.cara lain:
sumber
&&
dalam pertanyaan Anda, itu berarti pada awalnya menjalankan perintah kemudian jika menjalankan berhasil, jalankan perintah berikutnya. Jika Anda tidak mempertimbangkannya, Anda dapat menjalankancommand1 & ; command2 & ;
;
tanpa menggunakan masalah itu