Linux

用於讀取多個文件並執行它們的 Linux Shell 腳本

  • December 24, 2021

我正在使用一個 centos 集群,我在其中執行 LAMMPS 軟體進行模擬。現在我必須在一個文件夾中執行多個文件,現在每個文件都有類似類型的子文件,即它們包含 3 個文件 1. 輸入數據文件(file.restart.3500000) 2. 腳本(in.open) 3. PBS 文件(到在子節點而不是主節點上執行程式碼)。

我的需要是使用一個過於並行而不是串列的命令來執行文件夾中的所有文件。即我希望系統同時執行所有文件,而不是像第一個文件完成然後啟動第二個文件。

在此處輸入圖像描述在此處輸入圖像描述

目前,我必須轉到各個文件夾並執行腳本,這非常耗時,因為我必須執行多個文件。

要執行文件,我在文件夾中給出一次“qsub runme.pbs”命令。由於所有文件的內容都是相同的,所以可以做些什麼嗎?

PS:-我只是這個Linux領域的初學者,所以任何幫助都會非常有用。

您可以使用一個簡單的 for 循環來執行它們,基於以下內容:

cd /path/to/wherever
for d in D_[0-9]*/; do
 cd "$d"
 qsub runme.pbs
 cd ..
done

qsub將每個作業送出到作業隊列,集群將按照其調度程序允許的方式執行它們。

或者,使用pushd "$d"andpopd代替cd "$d"and cd -

qsub在後台執行每個(使用 )可能會有一些微小的好處,qsub runme.pbs &但可能不會,這更有可能一次使調度程序超載過多的工作並減慢速度。

引用自:https://unix.stackexchange.com/questions/683734