Saya kira Anda menginginkan ini:
myCommand1 & myCommand2 &
Ini mulai myCommand1dan mengirimkannya ke latar belakang karena diikuti oleh ampersand, lalu segera memulai myCommand2dan 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.
Daftar adalah urutan satu atau lebih jaringan pipa yang dipisahkan oleh salah satu operator ; , & , && , atau || , dan secara opsional dihentikan oleh salah satu dari
; , & , atau .
Jika perintah diakhiri oleh operator kontrol & , shell mengeksekusi perintah di latar belakang dalam sebuah subkulit. Shell tidak menunggu perintah selesai, dan status kembali adalah 0. Perintah dipisahkan oleh a ; dieksekusi secara berurutan; shell menunggu setiap perintah berakhir pada gilirannya. Status kembali adalah status keluar dari perintah terakhir yang dijalankan.
Daftar AND dan OR adalah urutan dari satu atau beberapa saluran pipa yang dipisahkan oleh && dan || masing-masing mengendalikan operator.
Sumber:man bash
Mari kita bagi menjadi contoh. Anda dapat membuat daftar dengan menggabungkan perintah dan memisahkannya dengan salah satu dari ini ; & && ||::
command1 ; command2 # runs sequentially
command1 && command2 # runs sequentially, runs command2 only if command1 succeeds
command1 || command2 # runs sequentially, runs command2 only if command1 fails
command1 & command2 # runs simultaneously
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:
# if c1 succeeds start a shell in the background
# and run c2 and c3 sequentially inside it
c1 && ( c2 ; c3 ) &
# run c1 and if it succeeds c2 sequentially as a group command
# if c1 or c2 fail run c3 in the background
{ c1 && c2 ;} || c3 &
Ini bisa menjadi sangat rumit, jika Anda tidak yakin menggunakan truedan falseuntuk menguji apakah konstruksi berfungsi seperti yang diharapkan:
$ { true && true ;} || echo 2
$ { true && false ;} || echo 2
2
Kontrol Pekerjaan
The jobsperintah menampilkan daftar pekerjaan latar belakang yang berjalan atau baru saja selesai di shell saat ini. Ada sejumlah pintasan keyboard dan perintah untuk kontrol pekerjaan:
- Ctrl+ Zmengetik karakter yang ditangguhkan yang menyebabkan proses yang sedang berjalan di latar depan dihentikan, tidak dihentikan, tetapi tetap ada dalam
jobsdaftar
- Ctrl+ Ymengetik karakter penundaan tertunda yang menyebabkan proses yang sedang berjalan di latar depan dihentikan ketika mencoba membaca input dari terminal
fg= %membawa proses ke latar depan memulainya jika perlu, Anda dapat menentukan proses sebagai berikut:
% # last process in the jobs list
%1 # 1st process in the jobs list
%abc # process beginning with the string “abc”
%?abc # process containing the string “abc” anywhere
bg= %&membawa proses ke latar belakang memulainya jika perlu:
%& # last process in the jobs list
%1& # 1st process in the jobs list
%abc& # process beginning with the string “abc”
%?abc& # process containing the string “abc” anywhere
wait menunggu proses latar belakang selesai dan mengembalikan status terminasi:
wait %1 # 1st process in the jobs list
Bayangkan Anda memulai proses yang panjang ( jobstunjukkan nomor 3) dan kemudian sadari bahwa Anda ingin komputer ditangguhkan saat selesai, ditambah echopesan jika prosesnya tidak berhasil:
wait %3 || echo failed ; systemctl suspend