Ubuntu có khác với Linux trên máy Mac không? Xin lỗi nếu đây là một câu hỏi cơ bản ... Tôi chưa quen với điều này. Tôi đang cố chạy tập lệnh bash để tạo tập lệnh .sh từ một số tệp FASTQ. Điều này hoạt động trong thiết bị đầu cuối trên Mac OS. Tôi đang cố chạy nó trên máy tính xách tay Windows của mình và nó bỏ qua việc thoát #s của tôi và chỉ nói rằng không tìm thấy một số lệnh. tôi đã thử sử dụng dos2unix
và kiểm tra lại với con mèo -A file.sh
nhưng nó đã không giúp được gì.
Mã tôi đang cố chạy sẽ lấy tất cả các tệp fastq trong một thư mục và tạo tệp .sh để gửi công việc SLURM bằng tên tệp của chúng (cần thiết cho cụm máy tính của trường đại học của tôi và tôi cần tạo hơn 100 tập lệnh công việc). Vì vậy, phiên bản Mac OS như sau:
cho TỆP trong *fastq; #thay đổi loại tệp khi cần (ví dụ: fasta, fastq, fastq.gz)
làm tiếng vang -e \
\#\!/bin/bash \
\n\#SBATCH --partition=nonpre \# Phân vùng \(hàng đợi công việc\) \
\n\#SBATCH --requeue \# Đưa công việc trở lại hàng đợi nếu được ưu tiên \
\n\#SBATCH --job-name=samples \# Chỉ định tên ngắn cho công việc của bạn \
\n\#SBATCH --nodes=1 \# Số nút bạn yêu cầu \
\n\#SBATCH --nt task=1 \# Tổng số \# nhiệm vụ trên tất cả các nút \
\n\#SBATCH --cpus-per-task=64 \# Số lõi mỗi tác vụ \(\>1 nếu tác vụ đa luồng\) \
\n\#SBATCH --mem=180000 \# Yêu cầu bộ nhớ thực \(RAM\) \(MB\) \
\n\#SBATCH --time=72:00:00 \# Tổng giới hạn thời gian chạy \(HH:MM:SS\) \
\n\#SBATCH --output=slurm.%N.${FILE}.out \# Tệp đầu ra STDOUT \
\n\#SBATCH --error=slurm.%N.${FILE}.err \# Tệp đầu ra STDERR \(tùy chọn\) \
\N \
\n\#THÊM BẤT KỲ MÃ NÀO BẠN MUỐN VÀO ĐÂY KHI NỘP CÔNG VIỆC SLURM CỦA BẠN \
\N \
\nsacct --format=JobID,JobName,NTasks,NNodes,NCPUS,MaxRSS,AveRSS,AveCPU,Elapsed,ExitCode -j \$SLURM_JOBID \#điều này sẽ nhận số liệu thống kê chạy công việc từ SLURM\; sử dụng những thứ này để giúp chỉ định bộ nhớ của các lần gửi trong tương lai \
> ${FILE}.sh;
xong
Khi chạy cái này trên Windows, tôi nhận được:
Slurm_Generator.sh: dòng 13: #!/bin/bash: Không có tệp hoặc thư mục như vậy
Slurm_Generator.sh: dòng 14: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 16: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 18: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 20: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 22: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 24: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 26: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 28: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 30: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 32: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 35: \n: không tìm thấy lệnh
Slurm_Generator.sh: dòng 36: \n#ADD: không tìm thấy lệnh
Slurm_Generator.sh: dòng 39: \n: không tìm thấy lệnh
Slurm_Generator.sh: dòng 40: \nsacct: không tìm thấy lệnh
Mọi trợ giúp sẽ được đánh giá cao và một số giải thích về sự khác biệt giữa Ubuntu trên Windows so với Terminal trên Mac. Tôi đã thử nghiên cứu vấn đề này nhưng tôi vẫn tìm thấy mã được đề xuất mà không có lời giải thích hoặc đó không phải là vấn đề đặc biệt của tôi. Cảm ơn bạn!
Chỉnh sửa: Tôi đã thử chạy chmod +x script.sh
và tôi sẽ nhận được các lỗi trên. Tôi đang chạy 'echo' sai? Thậm chí chạy:
'đối với TẬP TIN trong *fastq;
làm
tiếng vang -e
xin chào;
xong'
nói Không tìm thấy lệnh 'xin chào'
Chỉnh sửa: Chạy 'bash file.sh' mang lại kết quả như sau:
tập tin bash.sh
mang lại kết quả như sau (cho mỗi trong số 5 tệp .fastq trong directoy của tôi):
Slurm_Generator.sh: dòng 8: #!/bin/bash: Không có tệp hoặc thư mục như vậy
Slurm_Generator.sh: dòng 9: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 11: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 13: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 15: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 17: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 19: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 21: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 23: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 25: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 27: \n#SBATCH: không tìm thấy lệnh
Slurm_Generator.sh: dòng 30: \n: không tìm thấy lệnh
Slurm_Generator.sh: dòng 31: \n#ADD: không tìm thấy lệnh
Slurm_Generator.sh: dòng 34: \n: không tìm thấy lệnh
Slurm_Generator.sh: dòng 35: \nsacct: không tìm thấy lệnh
nếu tôi chạy con mèo -A file.sh
tôi thấy một $
ở cuối mỗi dòng. Ngay cả khi tôi loại bỏ những thứ này, tôi vẫn nhận được kết quả như trên.
Đang chạy ls -al script.sh
đưa ra: -rwxrwxrwx 1 cerberus cerberus 1209 ngày 16 tháng 6 00:17 Slurm_Generator.sh
Chỉnh sửa:
Tôi đã thay đổi tập lệnh của mình thành:
#! /bin/bash
cho TỆP trong *fastq; #thay đổi loại tệp khi cần (ví dụ: fasta, fastq, fastq.gz)
làm tiếng vang -e \
"
#\!/bin/bash
#SBATCH --partition=nonpre # Phân vùng (hàng đợi công việc)
#SBATCH --requeue # Đưa công việc trở lại hàng đợi nếu được ưu tiên
#SBATCH --job-name=samples # Đặt tên ngắn cho công việc của bạn
#SBATCH --nodes=1 # Số nút bạn yêu cầu
#SBATCH --ntasks=1 # Tổng số nhiệm vụ trên tất cả các nút
#SBATCH --cpus-per-task=64 # Số lõi mỗi tác vụ (>1 nếu tác vụ đa luồng)
#SBATCH --mem=180000 # Yêu cầu bộ nhớ thực (RAM) (MB)
#SBATCH --time=72:00:00 # Tổng giới hạn thời gian chạy (HH:MM:SS)
#SBATCH --output=slurm.%N.${FILE}.out # Tệp đầu ra STDOUT
#SBATCH --error=slurm.%N.${FILE}.err # Tệp đầu ra STDERR (tùy chọn)
#THÊM BẤT KỲ MÃ NÀO BẠN MUỐN Ở ĐÂY NHƯ NỘP CÔNG VIỆC SLURM CỦA BẠN \
sacct --format=JobID,JobName,NTasks,NNodes,NCPUS,MaxRSS,AveRSS,AveCPU,Elapsed,ExitCode -j \$SLURM_JOBID \#điều này sẽ nhận số liệu thống kê chạy công việc từ SLURM\; sử dụng những thứ này để giúp chỉ định bộ nhớ của subm$ trong tương lai" \
> ${FILE}.sh;
xong
Đầu ra mới của tôi là như sau (tốt hơn nhiều):
#\!/bin/bash
#SBATCH --partition=nonpre # Phân vùng (hàng đợi công việc)
#SBATCH --requeue # Đưa công việc trở lại hàng đợi nếu được ưu tiên
#SBATCH --job-name=samples # Đặt tên ngắn cho công việc của bạn
#SBATCH --nodes=1 # Số nút bạn yêu cầu
#SBATCH --ntasks=1 # Tổng số nhiệm vụ trên tất cả các nút
#SBATCH --cpus-per-task=64 # Số lõi mỗi tác vụ (>1 nếu tác vụ đa luồng)
#SBATCH --mem=180000 # Yêu cầu bộ nhớ thực (RAM) (MB)
#SBATCH --time=72:00:00 # Tổng giới hạn thời gian chạy (HH:MM:SS)
#SBATCH --output=slurm.%N.Sample1.fastq.out # Tệp đầu ra STDOUT
#SBATCH --error=slurm.%N.Sample1.fastq.er # Tệp đầu ra STDERR (tùy chọn)
#THÊM BẤT KỲ MÃ NÀO BẠN MUỐN Ở ĐÂY NHƯ NỘP CÔNG VIỆC SLURM CỦA BẠN
sacct --format=JobID,JobName,NTasks,NNodes,NCPUS,MaxRSS,AveRSS,AveCPU,Elapsed,ExitCode -j $SLURM_JOBID \#điều này sẽ nhận số liệu thống kê chạy công việc từ SLURM\; sử dụng những thứ này để giúp chỉ định bộ nhớ của các lần gửi trong tương lai
Vấn đề duy nhất mà tôi đang gặp phải là trong khi nó in ra điều này cho từng tệp .fastq, đó là điều tôi muốn, thì các tệp .sh kết quả mà nó ghi ra lại trống. Vì vậy, nó không nhận ra > ${Tệp}.sh
một phần của kịch bản.
Cảm ơn mọi người!