Ý nghĩa của các dòng script bash bắt đầu bằng # $ là gì?


13

Tôi tìm thấy tập lệnh nàybash trên GitHub mà tôi muốn sử dụng cho công việc của mình. Câu hỏi của tôi là như sau: các dòng 2 đến 5 có nghĩa là gì? Họ chỉ là ý kiến ​​hay họ phục vụ cho mục đích nào?

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

Câu trả lời:


19

Các dòng bắt đầu bằng #$là các tùy chọn cho qsub, một lệnh được sử dụng để gửi một công việc đến cụm SGE, một hệ thống lập lịch được giải thích trong readme này :

Sử dụng môi trường cụm BIMSB (sắp được gọi là MAX) tương tự như sử dụng môi trường unix / linux để gửi công việc của bạn (ví dụ: chạy tập lệnh hoặc phần mềm khác). Sự khác biệt là bạn cần xác định trước các tài nguyên cần thiết. Cụm được điều khiển bởi SGE (Sun Grid Engine Software) tổ chức các hàng đợi và tài nguyên. Loại hệ thống lập lịch này là cần thiết khi nhiều nguồn lực tính toán hạn chế được chia sẻ bởi nhiều người. Và, sẽ hữu ích nếu bạn đang chạy sắp xếp cho nhiều mẫu và muốn phân phối các tác vụ (công việc) đó trên nhiều máy hoặc CPU hoặc khi chạy mô phỏng thống kê cần chạy trên nhiều CPU trong một thời gian dài. Đối với những trường hợp này và nhiều hơn nữa như nhau,

SGE sẽ thực hiện "lập kế hoạch công việc". Điều đó có nghĩa là bạn có thể gửi tất cả các công việc của mình và SGE sẽ xếp hàng chúng và chạy chúng khi tài nguyên bạn yêu cầu có sẵn. SGE cũng sẽ đạt được "cân bằng tải" trong đó các công việc sẽ được phân phối để các nút cụ thể không bị quá tải. Ngoài ra, SGE sẽ cho phép bạn thực hiện "giám sát công việc và kế toán", điều này sẽ hữu ích khi bạn muốn kiểm tra xem công việc của bạn có đang chạy hay không, và nếu thất bại, nó sẽ giúp bạn hiểu được những gì đã sai.

Cú pháp của qsublệnh được giải thích trên trang chủ của nó , tập lệnh của bạn sử dụng các tùy chọn sau:

  • -l h_rt=<hh:mm:ss> - chỉ định thời gian chạy tối đa (giờ, phút và giây)
  • -V - vượt qua tất cả các biến môi trường cho công việc
  • -N <jobname>- chỉ định tên của công việc. Điều này bạn sẽ thấy khi bạn sử dụng qstat, để kiểm tra trạng thái công việc của bạn.
  • -j y[es]|n[o] - chỉ định liệu luồng lỗi tiêu chuẩn của công việc có được hợp nhất vào luồng đầu ra tiêu chuẩn hay không

Như Cách gửi công việc bằng cách sử dụng qsub giải thích, người ta có thể đặt các qsubtùy chọn trực tiếp trong tập lệnh theo các dòng bắt đầu bằng #$. Đây là một cách thay thế để chuyển chúng bằng qsublệnh trên dòng lệnh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.