Giả sử rằng tôi có kịch bản bash đơn giản sau đây mà tôi muốn gửi đến một máy chủ batch qua SLURM:đèo đối số dòng lệnh qua sbatch
#!/bin/bash
#SBATCH -o "outFile"$1".txt"
#SBATCH -e "errFile"$1".txt"
hostname
exit 0
Trong kịch bản này, tôi chỉ đơn giản muốn viết đầu ra của hostname
trên một textfile có tên đầy đủ để kiểm soát thông qua các dòng lệnh, như vậy:
login-2:jobs$ sbatch -D `pwd` exampleJob.sh 1
Submitted batch job 203775
Thật không may, có vẻ như dòng lệnh cuối cùng lập luận của tôi (1) không được phân tích cú pháp thông qua sbatch, kể từ khi các tập tin được tạo ra không có hậu tố mà tôi đang tìm kiếm và chuỗi "$ 1" là int erpreted nghĩa đen:
login-2:jobs$ ls
errFile$1.txt exampleJob.sh outFile$1.txt
Tôi đã nhìn xung quanh nơi ở SO và elsewhere, nhưng tôi đã không có bất kỳ may mắn. Về cơ bản những gì tôi đang tìm kiếm là tương đương với công tắc -v
của tiện ích qsub
trong các cụm hỗ trợ Torque.
Chỉnh sửa: Như đã đề cập trong chuỗi nhận xét cơ bản, tôi đã giải quyết vấn đề của mình một cách khó khăn: thay vì có một tập lệnh đơn lẻ sẽ được gửi nhiều lần đến máy chủ bó. một "tập lệnh chính" chỉ đơn giản là lặp lại và chuyển hướng cùng một nội dung lên các kịch bản lệnh khác nhau, nội dung của từng được thay đổi bởi tham số dòng lệnh được truyền. Sau đó, tôi đã gửi tất cả những người đó đến máy chủ theo lô của mình thông qua sbatch
. Tuy nhiên, điều này không trả lời câu hỏi ban đầu, vì vậy tôi ngần ngại thêm nó như là một câu trả lời cho câu hỏi của tôi hoặc đánh dấu câu hỏi này được giải quyết.
Tôi không biết SLURM. Bạn có thể đơn giản hóa tập lệnh thành các dòng 'touch outfile $ {1} .txt', vì vậy chúng tôi có thể cố gắng tạo lại lỗi và sửa lỗi không? –
Số 1 được chuyển đến tập lệnh nhưng không được xem xét cho tên của tệp khi slurm tiền xử lý tệp để nhận cờ, nhưng biến sẽ có sẵn bên trong tập lệnh. Làm thế nào để bạn làm điều đó trên Torque? –
@WalterA: Giải pháp của bạn hoạt động trong trường hợp 'touch', có nghĩa là, đối số mà tôi chuyển qua' sbatch' được đọc bởi kịch bản là '$ 1'. Tuy nhiên, có vẻ như '$ 1' được phân tích theo nghĩa đen bởi' sbatch' trong trường hợp '-o' và' -e', sao cho tôi kết thúc với các tệp như 'outFile $ {1} .txt'on disk. @CarlesFenoy: Tôi tin rằng bạn đúng trong những gì bạn đang nói trong đó SLURM xử lý trước tệp để nhận các cờ '-o' và' -e' (xem phản hồi của tôi với @WalterA ở trên). Trong Torque, bạn có thể làm một cái gì đó như 'qsub -D 'pwd' -v var = 1 script.sh' và' $ var' sẽ có giá trị là 1 trong 'script.sh'. – Jason