Unixでバッチコマンドを実行する方法

Unixでバッチコマンドを実行する方法

スーパーコンピュータ(UNIXベース)を利用して勉強しています。

.sh形式で複数のコマンドを同時に実行する必要があります。

私は毎回これをします

am@tinaroo1:~/.../Codes> qsub 69sk_01_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_02_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_04_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_08_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_16_800999.sh
am@tinaroo1:~/.../Codes> qsub 69sk_01_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_02_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_04_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_08_140239.sh
am@tinaroo1:~/.../Codes> qsub 69sk_16_140239.sh
...
...
am@tinaroo1:~/.../Codes> qsub 69sk_01_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_02_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_04_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_08_158220.sh
am@tinaroo1:~/.../Codes> qsub 69sk_16_158220.sh

100個のファイルに対して100個のコマンドを入力する必要があります。

一度に100個のコマンドを実行する方法はありますか?

ベストアンサー1

ループを使って実行できます

for script in 69sk*.sh; do
    qsub "$script"
done

スクリプトqsubは自分自身をバックグラウンドで送信し、すぐに返します。このスクリプトなしでスクリプトを実行するには、次のようにバックグラウンドに直接分岐できます&

for script in 69sk*.sh; do
    ./"$script" &
done

これにより、スケジューラは必ずしも各スクリプトを独自のコアに配置するわけではありません。 100個のコアがあり、各スクリプトを1つのコアに固定するにはさらに作業が必要です。

おすすめ記事