Apa arti dari baris skrip bash yang dimulai dengan # $?


13

Saya menemukan skrip inibash di GitHub yang ingin saya gunakan untuk pekerjaan saya sendiri. Pertanyaan saya adalah sebagai berikut: Apa arti garis 2 sampai 5? Apakah mereka hanya komentar atau melayani tujuan apa pun?

#!/bin/bash
#$ -l h_rt=72:00:00
#$ -V
#$ -N index_calc
#$ -j y

source ~/modules.sh

cd $1

l_file=`find . -name 'L*stack' -type f`
for l in $l_file; do
    echo "Running on file:"
    echo $l
      extract=${l:0:45}
    name=${extract}_index.tif
    echo "Name of index stack:"
    echo $name
    echo "Executing code..."
    ~/Documents/misc/spectral/transforms.py \
    -v $l $name evi ndvi nbr ndmi 

done

echo "Done!"

Jawaban:


19

Baris yang dimulai dengan #$opsi untuk qsub, perintah yang digunakan untuk mengirimkan pekerjaan ke gugus SGE, sistem penjadwalan yang dijelaskan dalam readme ini :

Menggunakan lingkungan cluster BIMSB (segera disebut MAX) mirip dengan menggunakan lingkungan unix / linux untuk pengiriman pekerjaan Anda (misalnya menjalankan skrip atau perangkat lunak lain). Perbedaannya adalah bahwa Anda perlu menentukan sumber daya yang diperlukan sebelumnya. Cluster ini dikendalikan oleh SGE (Sun Grid Engine Software) yang mengatur antrian dan sumber daya. Sistem penjadwalan semacam ini diperlukan ketika sumber daya komputasi terbatas dibagikan oleh banyak orang. Dan, akan berguna jika Anda menjalankan keberpihakan untuk beberapa sampel dan ingin mendistribusikan tugas-tugas (pekerjaan) tersebut di beberapa mesin atau CPU, atau ketika menjalankan simulasi statistik yang perlu dijalankan pada banyak CPU untuk waktu yang lama. Untuk kasus ini dan banyak lagi yang sama,

SGE akan melakukan "penjadwalan pekerjaan". Itu berarti Anda dapat mengirimkan semua pekerjaan Anda dan SGE akan mengantreinya dan menjalankannya ketika sumber daya yang Anda minta tersedia. SGE juga akan mencapai "load balancing" di mana pekerjaan akan didistribusikan sehingga node tertentu tidak menjadi kelebihan beban. Selain itu, SGE akan memungkinkan Anda untuk melakukan "pemantauan pekerjaan dan akuntansi" yang akan berguna ketika Anda ingin memeriksa apakah pekerjaan Anda sedang berjalan, dan jika gagal itu akan membantu Anda memahami apa yang salah.

Sintaks qsubperintah dijelaskan pada halaman manualnya , skrip Anda menggunakan opsi berikut:

  • -l h_rt=<hh:mm:ss> - tentukan waktu lari maksimum (jam, menit, dan detik)
  • -V - Lewati semua variabel lingkungan ke pekerjaan
  • -N <jobname>- tentukan nama pekerjaan. Ini akan Anda lihat saat Anda menggunakanqstat , untuk memeriksa status pekerjaan Anda.
  • -j y[es]|n[o] - Menentukan apakah aliran kesalahan standar pekerjaan digabungkan ke dalam aliran output standar

Seperti Cara mengirimkan pekerjaan menggunakan qsub menjelaskan orang dapat mengatur qsubopsi langsung di skrip di baris yang dimulai dengan #$. Ini merupakan alternatif untuk melewati mereka dengan qsubperintah di command-line.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.