1、sge提交腳本qsub
1、qsub work.sh work.sh 不能以數字開頭
2、qsub work.sh 默認工作路徑為/home/username
3、qsub -cwd work.sh 為當前路徑 -wd 為指定路徑!
4、qsub -cwd -l vf=*G -q all.q *.sh
-cwd 表示在當前路徑下投遞,sge的日志會輸出到當前路徑。
-l vf=*G 任務的預估內存,內存估計的值應稍微大於真實的內存,內存預估偏小可能會導致節點跑掛。
-q 指定要投遞到的隊列,如果不指定的話,SGE會在用戶可使用的隊列中選擇一個滿足要求的隊列。
5、qsub -cwd -l vf=*G -l h=node1 *.sh
qsub -cwd -l vf=*G -l h=node1 -P project -q all.q *.sh
qsub –cwd -l h= compute-1-1,vf=nG,p=n <shell script>
投遞任務到指定節點(h) 內存(vf) cpu數量(p)P為項目名字
2、查詢任務qstat
qstat -f 查看所有任務
qstat -j jobId 按任務id查看
qstat -u user 按用戶查看
任務狀態:
qw 表示等待狀態
Eqw 投遞任務出錯
r 表示任務正在運行
dr 節點掛了之后,刪除任務就會出現這個狀態,只有節點重啟之后,任務才會消失
3、任務刪除qdel
qdel -j 1111 刪除任務號為1111的任務
4、其他命令
qrsh 與qsub相比,是交互式的投遞任務,注意參數:
-now yes|no 默認設置為yes
若設置為yes,立即調度作業,如果沒有可用資源,則拒絕作業,任務投遞失敗,任務狀態為Eqw。
若設置為no,調度時如果沒有可用資源,則將作業排入隊列,等待調度。
例子: qrsh -l vf=*G -q all.q -now no -w n *sh
qacct 從集群日志中抽取任意賬戶信息
qalter 更改已提交但正處於暫掛狀態的作業的屬性
qconf 為集群和隊列配置提供用戶界面
qhold 阻止已提交作業的執行
qhost 顯示SGE執行主機(即各個計算節點)的狀態信息
qlogin 啟動telnet或類似的登錄會話。
5、bash腳本與Linux環境變量
為了防止腳本運行時找不到環境變量,在投遞的bash腳本的前面最好加上以下兩句話:
#! /bin/bash
#$ -S /bin/bash
6、日志查看
1、sge會產生兩個文件一個是test.sheID,一個是test.shoID其中test.sheID為錯誤文件。test.shoID為記錄文件!
調查中.....
7、sge常用命令
Sum Grid Engine常用命令
qacct #從群集日志文件抽取仲裁記錄信息
qalter #更改已提交但暫掛的作業的屬性
qconf #提供群集配置和隊列配置的用戶界面
qdel #為用戶、操作員或管理員提供向作業或其子集發送信號的方式
qhold #阻止已提交作業的執行
qhost #顯示執行主機的狀態信息
qlogin #啟用telnet或類似的帶有自動選擇的低負載、適當主機的登錄會話
qmake #標准Unix make工具的替代工具。qmake延伸了make的功能,使其能夠在一組合適的計算機之間分布一系列的make步驟。
qmod #使擁有者暫停或啟用隊列。所有與該隊列相關的活動的進程也都將得到信號。
qmon #提供 X Windows Motif 命令界面和監視工具。
qresub #通過復制運行的或暫掛的作業創建新作業。
qrls #將作業從之前分配到的留置區域(例如,通過qhold)釋放。
qrsh #可用於多種用途,比如以下的情形:
#<1>通過 Grid Engine 系統提供交互式應用程序的遠程執行。qrsh 是標准的 Unix 工具 rsh 相比較而言。
#<2>允許提交批處理作業,執行時支持終端 I/O 和終端控制。終端 I/O 包括標准輸出、標准錯誤和標准輸入。
#<3>提供一個在批處理作業結束之前保持活動狀態的提交客戶機。
#<4>允許在 Grid Engine 軟件控制下遠程執行並行作業任務。
qselect #打印與指定的選擇標准對應的隊列名稱列表。qselect 的輸出通常輸入到其他的 Grid Engine 系統命令,以便對選定的隊列組進行操作。
qsh #在較輕負荷主機的 xterm 中打開交互式 shell 。 在該 shell 中,任何類型的交互式作業都可以運行。
qstat #提供與群集相關的所有作業和隊列的狀態列表。
qsub #將批處理作業提交到 Grid Engine 系統的用戶界面。
qtchsh #完全兼容並可替代從普遍認同並廣泛使用的 Unix C Shell(csh) 衍生出來的 tcsh。qtcsh提供的命令shell可以通過 Grid Engine軟件透明地將指定應用程序的執行分布到適當且負荷較低的主機上。
###------------------------------------------------------------------------------
qacct -j job_id #查看指定作業的執行信息,不加job_id將顯示所有作業信息
qconf -sul #前已配置的 ACL 列表
qconf -sprjl #顯示項目列表
qconf -sm #顯示 Grid Engine 系統管理人員的列表
qconf -so #顯示操作人員列表
qconf -sq #顯示隊列和隊列屬性
qconf -sql #顯示隊列列表
隊列屬性的詳細說明:
qname – 請求的隊列名稱。
hostlist – 與隊列相關聯的主機和主機組的列表。
processors – 該隊列可以訪問的多處理器系統的處理器。(除非必要,否則請不要修改這些參數值。)
qtype – 隊列中可以運行的作業類型。當前,作業類型可為批處理或交互式。
slots – 可以和該隊列同時執行的作業數。
owner_list – 隊列擁有者,在管理人員、操作員和擁有者中有介紹。
user_lists – 用戶訪問權限列表中列在該參數下的用戶或組標識符可以訪問該隊列。
xuser_lists – 用戶訪問權限列表中列在該參數下的用戶或組標識符不能訪問該隊列。
project_lists – 列在該參數下的帶有項目標識符的提交作業有權訪問該隊列。
xproject_lists – 列在該參數下的帶有項目標識符的提交作業不能訪問該隊列。
complex_values – 根據提供給隊列的特定屬性定義集資源屬性指定性能。
qconf -sel #顯示當前配置為執行主機的所有主機的名稱列表
qconf -se hostname #顯示指定的執行主機的詳細信息
qconf -sh #顯示具有管理權限的主機列表
qconf -ss #顯示提交主機列表
qconf -sc #顯示所配置的資源屬性列表
qconf -sconf #顯示當前配置
qconf -aprj #添加一個新項目
qconf -sprjl #顯示項目列表
qconf -aq queue_name #添加一個隊列
qconf -ahgrp @host_group_name #添加主機組,hostlist中主機列表間隔用空格
qconf -mconf #編輯默認Shell【login_shells bash,sh,ksh,csh,tcsh】
qconf -aq #顯示默認隊列模板
###-----------------------
qsub 參數
-cwd #從當前工作路徑運行作業
-wd working_dir #定義工作目錄
-o path #定義標准輸出文件路徑、文件名
-e path #定義標准錯誤輸出文件路徑、文件名
-j y[es]|n[o] #定義作業的標准錯誤輸出是否寫入到輸出文件中
-now y[es]|n[o] #立即執行作業
-a date_time #作業開始運行時間
-b y[es]|n[o] #指定運行程序是二進制文件還是腳本文件,默認n
-m b|e|a|s|n #定義郵件發送規則。b:作業開始時發送。e:作業結束時發送。a:作業失敗時發送 s:作業掛起時發送。n:不發送
-M user[@host] #定義郵件地址
-l resource=value #表明作業運行所需要的資源。【-l arch=solaris64,h_vmem=750M,permas=1】
-N job_name #重命名作業名
-q queue_name #定義作業運行隊列
-S shell_path #指定運行Shell環境
-P project_name #定義項目名稱,前提是存在該項目
-p priority #定義優先級,-1023 到 1024 , 默認值0
-r y[es]|n[o] #定義作業失敗后是否重新運行
-v variable #定義環境變量
-dl date_time #定義作業到期時間,在作業到期時間之前,作業的優先級會逐步提高,直到管理員指定的最高級別。
-hold_jid wc_job_list #定義作業的依賴關系,制定作業需要在指定作業正常結束后才可以開始運行。wc_job_list 可以是JOB ID或作業名
-hold_jid_ad wc_job_list #定義陣列作業的依賴關系
-R y[es]|n[o] #定義是否為作業保留資源
-hard #定義作業被調度的硬性要求