GNU/Linux >> Belajar Linux >  >> Linux

Empat Tugas Secara Paralel… Bagaimana Melakukannya?

Saya memiliki banyak gambar PNG di direktori. Saya memiliki aplikasi bernama pngout yang saya jalankan untuk mengompres gambar-gambar ini. Aplikasi ini disebut dengan script yang saya buat. Masalahnya adalah skrip ini melakukan satu per satu, seperti ini:

FILES=(./*.png)
for f in  "${FILES[@]}"
do
        echo "Processing $f file..."
        # take action on each file. $f store current file name
        ./pngout -s0 $f R${f/.//}
done

Memproses hanya satu file pada satu waktu, membutuhkan banyak waktu. Setelah menjalankan aplikasi ini, saya melihat bahwa CPU hanya 10%. Jadi saya menemukan bahwa saya dapat membagi file-file ini dalam 4 batch, menempatkan setiap batch dalam direktori dan menjalankan 4, dari empat jendela terminal, empat proses, jadi saya memiliki empat contoh skrip saya, pada saat yang sama, memproses gambar-gambar itu dan pekerjaan membutuhkan 1/4 dari waktu.

Masalah kedua adalah saya kehilangan waktu untuk membagi gambar dan kumpulan dan menyalin skrip ke empat direktori, buka 4 jendela terminal, bla bla…

Bagaimana dengan satu naskah, tanpa harus membagi apapun?

Maksud saya dua hal:pertama bagaimana saya dari skrip bash, menjalankan proses ke latar belakang? (tambahkan &sampai akhir?) Kedua:bagaimana cara berhenti mengirim tugas ke latar belakang setelah mengirim tugas keempat dan meletakkan skrip untuk menunggu hingga tugas berakhir? Maksud saya, hanya mengirim tugas baru ke latar belakang saat satu tugas berakhir, selalu menjaga 4 tugas secara paralel? jika saya tidak melakukannya, loop akan menjalankan jutaan tugas ke latar belakang dan CPU akan tersumbat.

Jawaban yang Diterima:

Jika Anda memiliki salinan xargs yang mendukung eksekusi paralel dengan -P , Anda cukup melakukannya

cetak '%s
Linux
  1. Bagaimana Cara Men-debug Skrip Bash?

  2. Bagaimana cara membuat daftar file yang diubah dalam rentang waktu tertentu?

  3. Bagaimana Memutar Suara Saat Eksekusi Skrip Sudah Siap?

  1. Bagaimana Menjalankan Skrip??

  2. Cara Memisahkan String dalam Skrip Bash

  3. Periksa Berapa Lama Skrip Bash Dijalankan Dengan Perintah Waktu

  1. Bagaimana cara mengatur Tugas Otomatis pada VPS Linux Menggunakan Cron?

  2. Cara Menjadwalkan Tugas Menggunakan di di Linux

  3. Bagaimana cara mengukur waktu eksekusi rata-rata sebuah skrip?