Menggunakan paralel untuk menjalankan skrip tanpa input

10

Saya mencoba menjalankan banyak contoh skrip dengan GNU parallel, tetapi skrip tidak mengambil argumen.

Jika saya hanya menjalankan 'parallel foo.sh' saya mendapatkan ini:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
pengguna1700840
sumber

Jawaban:

10

Dengan asumsi Anda ingin menjalankan sepuluh kali, sintaks ini akan berfungsi:

parallel -n0 foo.sh ::: {1..10}

parallelmembutuhkan urutan input dengan panjang tertentu ( ::: {1..10}) DAN Anda perlu mengabaikan konten dari urutan input ( -n0), Anda hanya peduli tentang panjangnya.

Perintah asli Anda parallel foo.sh:, tidak mengandung urutan input untuk menunjukkan berapa banyak paralelisme yang Anda inginkan. Peringatan samar memberitahu Anda bahwa parallelakan mulai mendengarkan terminal untuk urutan input, dan bahwa ini mungkin bukan yang Anda inginkan.

Inilah contoh tutorialnya:

seq 10 | parallel -n0 my_command my_args

Bagaimana itu bekerja:

  • parallelselalu mengambil urutan input dari suatu tempat. Itu bisa berupa urutan ruang-dibatasi inline yang didahului oleh :::ATAU urutan yang dibatasi-baris baru dari file atau sumber seperti filel seperti pipa. Dalam contoh ini urutan input dari pipa.
  • seq 10 menghasilkan urutan digit berbatas garis baru dari satu hingga sepuluh.
  • The -n0pilihan memberitahu sejajar dengan mengabaikan nilai-nilai dalam urutan masukan. Yang kami pedulikan hanyalah panjang urutannya, bukan isinya. Meskipun digit tidak digunakan, perintah masih akan mengeksekusi sepuluh kali.

Contoh lain:

parallel -n0 echo -n 'x' ::: {1..5}

Bagaimana itu bekerja:

  • Urutan input sebaris.
  • {1..5} menghasilkan urutan digit yang dibatasi ruang dari satu hingga lima.
  • -n0mengabaikan nilai-nilai urutan (dan kami 'x'malah menggaungkan string setiap kali.)
  • Keluaran: xxxxx

Dibandingkan dengan:

parallel echo -n ::: {1..5}

Bagaimana itu bekerja:

  • Urutan input sebaris.
  • {1..5} menghasilkan urutan digit yang dibatasi ruang dari satu hingga lima.
  • Setiap nilai dari urutan input digunakan sebagai argumen untuk echo. Pesanan tidak dijamin.
  • Output: 43215. Bisa pesanan apa saja.
jwfearn
sumber