บรรทัดสคริปต์ทุบตีมีความหมายอะไรที่ขึ้นต้นด้วย # $?


13

ฉันพบสคริปต์นี้bashใน GitHub ที่ฉันต้องการใช้สำหรับงานของฉันเอง คำถามของฉันมีดังต่อไปนี้บรรทัดที่ 2 ถึง 5 หมายถึงอะไร พวกเขาเพียงแค่แสดงความคิดเห็นหรือพวกเขาทำหน้าที่ใด ๆ ?

#!/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!"

คำตอบ:


19

บรรทัดที่ขึ้นต้นด้วย#$ตัวเลือกqsubคือคำสั่งที่ใช้ในการส่งงานไปยังคลัสเตอร์ SGE ซึ่งเป็นระบบกำหนดเวลาที่อธิบายไว้ในreadme นี้ :

การใช้สภาพแวดล้อมแบบคลัสเตอร์ BIMSB (เร็ว ๆ นี้จะเรียกว่า MAX) นั้นคล้ายคลึงกับการใช้สภาพแวดล้อมแบบ unix / linux สำหรับการส่งงานของคุณ (เช่นการเรียกใช้สคริปต์หรือซอฟต์แวร์อื่น ๆ ) ความแตกต่างคือคุณต้องระบุทรัพยากรที่จำเป็นไว้ล่วงหน้า คลัสเตอร์ถูกควบคุมโดย SGE (ซอฟต์แวร์ Sun Grid Engine) ที่จัดการคิวและทรัพยากร ระบบการจัดตารางเวลาประเภทนี้มีความจำเป็นเมื่อทรัพยากรการคำนวณที่ จำกัด นั้นถูกใช้ร่วมกันโดยหลาย ๆ คน และมันจะมีประโยชน์ถ้าคุณกำลังรันการจัดแนวสำหรับตัวอย่างหลายตัวอย่างและต้องการกระจายงาน (งาน) เหล่านั้นไปยังเครื่องหรือซีพียูหลายเครื่องหรือเมื่อใช้การจำลองเชิงสถิติที่ต้องใช้กับซีพียูหลายตัวเป็นเวลานาน สำหรับกรณีเหล่านี้และอื่น ๆ อีกมากมายเหมือนกัน

SGE จะทำการ "จัดตารางเวลางาน" นั่นหมายความว่าคุณสามารถส่งงานทั้งหมดของคุณและ SGE จะจัดคิวงานเหล่านั้นและทำงานเมื่อทรัพยากรที่คุณร้องขอพร้อมใช้งาน SGE ยังจะบรรลุ "load balancing" ซึ่งจะกระจายงานเพื่อให้โหนดที่เฉพาะเจาะจงไม่ได้รับมากเกินไป นอกจากนี้ SGE จะช่วยให้คุณทำ "การตรวจสอบงานและการบัญชี" ซึ่งจะเป็นประโยชน์เมื่อคุณต้องการตรวจสอบว่างานของคุณทำงานอยู่หรือไม่และหากล้มเหลวจะช่วยให้คุณเข้าใจสิ่งที่ผิดพลาด

มีการqsubอธิบายไวยากรณ์ของคำสั่งใน manpageสคริปต์ของคุณใช้ตัวเลือกต่อไปนี้:

  • -l h_rt=<hh:mm:ss> - ระบุเวลาทำงานสูงสุด (ชั่วโมงนาทีและวินาที)
  • -V - ส่งตัวแปรสภาพแวดล้อมทั้งหมดไปยังงาน
  • -N <jobname>- ระบุชื่อของงาน สิ่งนี้คุณจะเห็นเมื่อคุณใช้qstatเพื่อตรวจสอบสถานะงานของคุณ
  • -j y[es]|n[o] - ระบุว่ากระแสข้อผิดพลาดมาตรฐานของงานจะถูกรวมเข้ากับกระแสเอาต์พุตมาตรฐานหรือไม่

ในฐานะที่เป็นวิธีการส่งงานโดยใช้ qsubอธิบายหนึ่งสามารถตั้งค่าตัวเลือกโดยตรงในสคริปต์ในสายที่ขึ้นต้นด้วยqsub #$นี่เป็นทางเลือกที่จะผ่านพวกเขาด้วยqsubคำสั่งบนบรรทัดคำสั่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.