电竞比分网-中国电竞赛事及体育赛事平台

分享

PBS,QSUB常用命令

 panhoy 2014-09-06

1、后臺提交作業(yè)qsub

       語法: qsub [-a date_time] [-A account_string] [-e path] [-h] [-I] [-j join] [-k keep] [-l resource_list] [-m mail_options] [-n Node_allocation_Method [-L v1,[v2,[v3,[v4]]]]] [-M user_list] [-N name] [-o path] [-p priority] [-q pool] [-r y|n] [-u user_list] [-v variable_list] [-V] [script]

        參數(shù): script參數(shù)被省略時,該命令可以從標準輸入獲得腳本文件名。

       -a 間。格式為[[[[CC]YY]MM]DD]hhmm[.SS]。CC表示世紀,YY表示年(后兩位數(shù)字),MM表示月(兩位數(shù)字),DD表示天(兩位數(shù) 字),hh表示小時(兩位數(shù)字),mm表示分(兩位數(shù)字),SS表示秒(兩位數(shù)字)。如果DD指定的是未來日子,而未指定MM,則MM缺省值為當前月,否 則,MM的缺省值為下個月。如果hhmm指定的未來時間,而未指定DD,則DD的缺省值為當天,否則,DD的缺省值為明天。如果提交作業(yè)時使用該選項,當 指定時間還沒到時,作業(yè)狀態(tài)顯示為”W”。

       -e 指定錯誤輸出文件名,格式為[hostname:]path_home。Hostname是返回錯誤輸出文件的主機名,path_home是錯誤輸出文件 的絕對路徑,如果指定了相對路徑,則相對用戶的主目錄。不使用該選項時,缺省值是在用戶主目錄下,以“作業(yè)名.e作業(yè)ID”命名的文件

       -o 指定輸出文件名,格式為[hostname:]path_home。缺省值是在用戶主目錄下,以“作業(yè)名.e作業(yè)ID”命名的文件

       -h 指定在提交作業(yè)時,設(shè)置用戶級’u’掛起。如果不指定,則設(shè)置掛起類型為’n’,即不掛起。

       -I 指定作業(yè)以交互方式運行。

       -j 指定合并錯誤輸出和實際輸出。如果指定’oe’,則合并到標準輸出文件中;如果指定’eo’,則合并到標準錯誤輸出文件中.

       -k 指定執(zhí)行主機是否保留錯誤輸出和實際輸出。如果指定‘o’,則僅保留標準輸出;如果指定’e’,則僅保留標準錯誤輸出;如果指定’oe’或‘eo’,則保留標準輸出和標準錯誤輸出;如果指定’n’,則不保留任何輸出。

       -l 指定作業(yè)所需要的資源,設(shè)定對可消耗資源的限制。如果不設(shè)置,則無限制。例如: resource_name[=[value]][,resource_name[=[value]],…]

       LINUX系統(tǒng)可以設(shè)置的資源有cput, file, pcput, pmem, pvmem, vmem, walltime, arch, nodes, ncpus等;

       Cput指作業(yè)的所有進程使用cpu最長時間;

       File指作業(yè)可以建立單個文件大小的最大限制;

       Pcput指作業(yè)的單個進程可以使用CPU的最長時間;

       vmem指作業(yè)可以使用的物理內(nèi)存的最大值;

       Pmem指作業(yè)的單個進程可以使用的物理內(nèi)存的最大值;

       Pvmem指作業(yè)的單個進程可以使用的虛擬內(nèi)存的最大值;

       walltime指作業(yè)處于運行狀態(tài)的最長時間;

       arch 指定系統(tǒng)管理員所定義的系統(tǒng)結(jié)構(gòu)類型;

       host指定作業(yè)運行的主機名;

       nodes指定作業(yè)獨占使用的結(jié)點數(shù)目和屬性,使用“+”可以連接多種結(jié)點的定義。

       結(jié)點的屬性和主機名或數(shù)目之間通過“:”分隔。如果不指定結(jié)點數(shù),則缺省為1。結(jié)點的屬性包括ppn(每個結(jié)點上的進程數(shù),缺省為1)和系統(tǒng)管理員設(shè)置的屬性(如batch、bigmem)

       例如:請求12個結(jié)點,不管其屬性

           -l nodes=12

       請求12個屬性為batch的結(jié)點和14個屬性為bigmem的結(jié)點

           -l nodes=12:batch+14:bigmem

       請求4個結(jié)點,每個結(jié)點上使用2個CPU

           -l nodes=4:ppn=2

       software 指作業(yè)要求的軟件包

       -m 定義何時給用戶發(fā)送有關(guān)作業(yè)的郵件??稍O(shè)定的選項有:

           n 不發(fā)送郵件

           a 當作業(yè)被批處理系統(tǒng)中斷時,發(fā)送郵件

            b 當作業(yè)開始執(zhí)行時,發(fā)送郵件

           e 當作業(yè)執(zhí)行結(jié)束時,發(fā)送郵件

       -M 指定發(fā)送有關(guān)作業(yè)信息的郵件用戶列表。格式為user[@host][,user@[host],…]缺省值為提交作業(yè)的用戶。

       -N 指定作業(yè)的名字。缺省值為腳本的名字,如果沒有指定腳本,則為STDIN。

       -p 指定作業(yè)的優(yōu)先級,優(yōu)先級的范圍是[-1024, +1023]。缺省值是沒有優(yōu)先級。

       -q 指定作業(yè)的目的地(結(jié)點池),目的地可有三種格式:

              pool

              @server

              pool@server

       -r y|n 指定作業(yè)是否可重新運行。指定‘y’時,作業(yè)可以重新運行;指定’n’時,作業(yè)不能重新運行。缺省值為’n’。

       -v 格式為variable1,variable2,…或variable1=value,variable2=value,…這些變量和其值可以傳遞到作業(yè)中。

       -V 指定qsub命令的所有的環(huán)境變量都傳遞到批處理作業(yè)中。

           作用: 以腳本文件的形式向批處理服務(wù)器提交作業(yè)。

           舉例:

           運行MPI程序的腳本cpi.ljrs如下:

           #!/bin/sh

           ### Job name

           #LJRS -N test

           ### Declare job non-rerunable

           #LJRS -r n

           ### Output files

           #LJRS -e test.err

           #LJRS -o test.log

           ### Mail to user

           #LJRS -m ae

           ### pool name (small, medium, long, verylong)

           #LJRS -q dque

           ### Number of nodes (node property ev67 wanted)

           #LJRS -l nodes=8:batch

           # This job’s working directory

           echo Working directory is $LJRS_O_WORKDIR

           cd $LJRS_O_WORKDIR

           echo Running on host ‘hostname‘

           echo Time is ‘date‘

           echo Directory is ‘pwd‘

           echo This jobs runs on the following processors:

           echo ‘cat $LJRS_NODEFILE‘

           # Define number of processors

           NPROCS=‘wc -l < $LJRS_NODEFILE‘

           echo This job has allocated $NPROCS nodes

           # Run the parallel MPI executable “a.out”

           mpirun -v -machinefile $LJRS_NODEFILE -np $NPROCS cpi

          

           1、把腳本文件cpi.ljrs提交到結(jié)點池dque中運行。

              $ qsub cpi.ljrs

              35.console

              $ qstat

              Job id Name User TimeUse S Pool

              35.console cpi zhangxq 0:00:00 R dque

           2、把腳本作業(yè)cpi.ljrs提交到結(jié)點池long中運行,并且當作業(yè)開始運行時,給用戶發(fā)送電子郵件。

              $qsub -P long -m b cpi.ljrs $qstat

              Job id Name User TimeUse S Pool

              36.console cpi zhangxq 0 R long

           3、使用15個結(jié)點運行cpi.ljrs,運行時間不能大于2小時,作業(yè)占用的內(nèi)存能大于15mb

              $qsub –l nodes=15,walltime=2:00:00,mem=15mb cpi.ljrs

 

           4、綜合考慮CPU、內(nèi)存、緩沖區(qū)、硬盤等因素的使用情況,設(shè)置其權(quán)值分別為5, 4, 3, 2.

              $qsub –l nodes=5 -n syn –L 5, 4, 3, 2 cpi.ljrs

           5、使用-I和–l選項在指定的結(jié)點上交互式運行作業(yè)

              $ qsub –I -l nodes=c0101

              運行該命令后,系統(tǒng)將自動切換到c0101的虛擬終端,所有的標準輸入和標準輸出和標準錯誤輸出均都顯示在該終端上. 在系統(tǒng)出現(xiàn)”waiting to jobid to start”時,用戶若按^C鍵,即可中斷該交互作業(yè).當該交互作業(yè)已經(jīng)啟動后,用戶除了交互式運行作業(yè)外,還可進行以下操作:

              ~. 該命令將使qsub退出,且終止作業(yè)。

              ~^Z掛起qsub,作業(yè)依然保持運行狀態(tài),無任何輸入輸出。用戶可以在本地shell上提交命令。

              ~^Y部分掛起qsub,因為還可以給作業(yè)發(fā)送輸入,而且接受作業(yè)的輸出的同時,還可以在本地shell提交命令。

 

    2、查看狀態(tài)qstat

       語法:qstat [-f][-W site_specific] [job_identifier... | destination...]

             qstat -Q [-f][-W site_specific] [destination...]

             qstat -B [-f] [-W site_specific] [server_name...]

       參數(shù):destination可以為pool,@server,pool@server

       作用:查看作業(yè)、結(jié)點池和批處理服務(wù)器的狀態(tài)。命令格式一可以輸出所指定作業(yè)ID或者結(jié)點池中所有作業(yè)的狀態(tài),命令格式二可以輸出每個結(jié)點池的狀態(tài)信息,命令格式三可以輸出服務(wù)器的狀態(tài)。

       舉例:

       1. 顯示已經(jīng)配置的所有結(jié)點池狀態(tài)信息。

           qstat -q

       2. 顯示已經(jīng)提交的作業(yè)狀態(tài)信息

           qstat -a

       3. 顯示指定作業(yè)的所有狀態(tài)信息

           $ qstat -f 23.console

           mtime = Sun Apr 28 19:54:48 2002

           Output_Path = console:/home/zhangxq/cpi.o23

           Priority = 0

           qtime = Sun Apr 28 19:54:48 2002

           Rerunable = True

           Resource_List.cput = 00:00:59

           Resource_List.nodect = 2

           Resource_List.nodes = 2:ppn=1

           Variable_List = LJRS_O_HOME=/home/zhangxq,LJRS_O_LANG=en_US

           ……

       4. 顯示服務(wù)器的狀態(tài)

           $qstat –B

           Server Max Tot Que Run Hld Wat Trn Ext Status

           console 0 0 0 0 0 0 0 0 Active

 

    3、查詢作業(yè)qselect

       語法:qselect [-a [op]date_time] [-A account_string] [-h old_list] [-l resource_list] [-N name] [-p [op]priority] [-q destination] [-r y|n] [-s states] [-u user_list]

       參數(shù):op表示某一個作業(yè)屬性值和選項參數(shù)值之間的關(guān)系。如

       .eq. (等于)

       .ne. (不等于)

       .ge. (大于或等于)

       .gt. (大于)

       .le. (小于)

       其它參數(shù)含義見qsub命令。

       作用:列出符合選項要求的作業(yè)ID。這些作業(yè)來自于單個服務(wù)器。如果沒有任何選項,該命令則列出該用戶被授權(quán)的服務(wù)器上的所有作業(yè)。對那些普通用戶來說,該命令只顯示該用戶所提交的作業(yè)。

       舉例:

       1. 查詢用戶所提交的作業(yè)

           $ qsub -q long cpi.ljrs

           28.console

           $ qselect

           25.console

           28.console

       2. 查詢指定結(jié)點池中的作業(yè)

           $ qstat

           Job id Name User TimeUse S Pool

           25.console cpi zhangxq 0 Q dque

           29.console cpi zhangxq 0 R long

           $ qselect -P dque

           25.console

       3. 查詢指定主機上的作業(yè)

           $ qstat

           Job id Name User TimeUse S Pool

           25.console cpi zhangxq 0 Q dque

           29.console cpi zhangxq 0 R long

           $ qselect -P @console

           25.console

           29.console

 

    4、掛起作業(yè)qhold

        語法:qhold [-h hold_list] job_identifier …

        作用:掛起批處理作業(yè)。掛起有三種類型:普通用戶級‘u’、管理員級(操作員級)‘o’、系統(tǒng)級‘s’,缺省值為不掛起‘n’。用戶只能在用戶級別掛起自己提交的作業(yè),操作員可以在用戶級和操作員級掛起任何作業(yè),系統(tǒng)管理員可以在任何級別上掛起任何作業(yè)。

        在執(zhí)行該命令時,如果作業(yè)在運行結(jié)點池里排隊,那么作業(yè)將直接被掛起;如果作業(yè)處于運行狀態(tài),為了中斷作業(yè)的執(zhí)行,必須采取其他辦法。如果被掛起作業(yè)的主 機系統(tǒng)支持一致點檢查或者重新啟動,則掛起正在運行作業(yè)將引發(fā)以下操作:首先檢查作業(yè)的一致性,然后釋放該作業(yè)所占用的資源,最后該作業(yè)位于執(zhí)行結(jié)點池 中,處于掛起狀態(tài);如果被掛起作業(yè)的主機系統(tǒng)不支持一致點檢查或者重新啟動,則僅設(shè)置指定的掛起作業(yè)類型,而實際上并不能掛起,除非調(diào)用qrerun命令 重新運行該作業(yè)時,該掛起請求才生效。

        舉例:

        1. 使用普通用戶身份掛起作業(yè)

           $ qhold -h u 25.console $ qstat

           Job id Name User TimeUse S Pool

            25.console cpi zhangxq 0 H dque

        2. 以操作員身份掛起作業(yè)

            $ qhold -h o 25

           qhold: Unauthorized Request 25.console

           $ su root

            $ qhold -h o 25

           $ qstat

           Job id Name User TimeUse S Pool

            25.console cpi zhangxq 0 H dque

 

    5、釋放作業(yè)qrls

        語法:qrls [-h hold_list] job_identifier ...

        作用:釋放被掛起的批處理作業(yè)。由于作業(yè)的掛起有三種類型:USER、OPERATOR和SYSTEM。所以,要釋放不同類型的作業(yè)掛起,用戶就必須具有相應(yīng)的權(quán)限。缺省為USER級

        舉例:釋放在普通用戶和操作員級被掛起的作業(yè)。

            $ qstat

           Job id Name User TimeUse S Pool

           25.console cpi zhangxq 0 H dque

            $ qrls -h uo 25

           $ qstat

           Job id Name User TimeUse S Pool

            25.console cpi zhangxq 0 Q dque

 

    6、重新運行作業(yè)qrerun

       語法:qrerun job_identifier ...

       作用:重新運行所指定的作業(yè)。

       舉例:如果作業(yè)允許別重新執(zhí)行(缺省值是可以重新運行)。ROOT用戶運行該命令,可以終止本次運行,把該作業(yè)放入其原來所在的結(jié)點池中,重新運行。

           $ qrerun 27

           qrerun: Unauthorized Request 27.console

           $ su – root

           $ qstat

           Job id Name User TimeUse S Pool

           25.console cpi zhangxq 0 Q dque

           27.console cpi zhangxq 0 R dque

           $ qrerun 27

           $ qstat

           Job id Name User TimeUse S Pool

           25.console cpi zhangxq 0 Q dque

           27.console cpi zhangxq 0 R dque

 

    7、更改作業(yè)屬性qalter

       語法:qalter [-a date_time] [-A account_string] [-e path] [-h hold_list] [-j join] [-k keep] [-l resource_list] [-m mail_options] [-M user_list] [-N name] [-o path] [-p priority] [-r c] [-u user_list] job_identifier...

       參數(shù):各參數(shù)的含義見qsub命令。

       作用:更改批處理作業(yè)的屬性。主要修改所指定作業(yè)ID的相關(guān)屬性(選項表中所列出的屬性)。

       舉例:1. 更改批處理作業(yè)的運行時間屬性。

           $ qalter -a 0309251000 23.console

       2. 更改給用戶發(fā)送郵件的時間為作業(yè)中止和運行結(jié)束時

           $ qalter –m ae 23.console

 

    8、刪除作業(yè)qdel

       語法:qdel [-W delay|force] job_identifier ...

       參數(shù):-W 當指定delay 時,表示在刪除作業(yè)前需要等待的時間(秒)

當指定force時,強制刪除該作業(yè)。

       作用:刪除批處理作業(yè)。按照命令行中所指定的作業(yè)ID的順序來刪除作業(yè)。

       舉例:$ qstat

           Job id Name User TimeUse S Pool

           22.console cpi zhangxq 0 Q long

           $ qdel 22

 

    9、給作業(yè)發(fā)送消息qmsg

       語法:qmsg [-E] [-O] message_string job_identifier ...

       參數(shù):-E 將消息串寫入錯誤輸出文件

             -O將消息串寫入輸出文件

       作用:給批處理作業(yè)發(fā)送消息。該命令通過給作業(yè)的所有者(批處理服務(wù)器)發(fā)送消息,從而把消息寫入作業(yè)的輸出文件,也就是說,該命令并不是直接把消息寫入作業(yè)的輸出文件。

       舉例:給正在運行的作業(yè)發(fā)送消息,該消息被寫入所指定作業(yè)的錯誤輸出文件中。

           $ qstat

           Job id Name User TimeUse S Pool

           25.console cpi zhangxq 0 Q dque

           26.console cpi zhangxq 0 R dque

           $ qmsg “The job is running” 26

           $ more cpi.e26

           The job is running

 

    10、在結(jié)點池之間移動作業(yè)qmove

       語法:qmove destination job_identifier ...

       參數(shù):destination可以為結(jié)點池名

       作用:把批處理作業(yè)移到其他結(jié)點池中去運行。即把作業(yè)從所在的結(jié)點池中刪除,并放在其他結(jié)點池中。

       舉例:

           $ qstat

           Job id Name User TimeUse S Pool

           22.console cpi zhangxq 0 Q dque

           $ qmove long 22

           $ qstat

           Job id Name User TimeUse S Pool

           22.console cpi zhangxq 0 Q long

 

    11、給作業(yè)發(fā)送信號qsig

       語法:qsig [-s signal] job_identifier ...

       參數(shù):參數(shù)signal可以為信號名稱,如SIGKILL,KILL,SIGNULL或者無符號整數(shù),如9、0。

       作用:給正在運行的批處理作業(yè)發(fā)送信號。如果不指定-S選項,則發(fā)送“SIGTERM”信號。如果有下列原因之一,如用戶無權(quán)給作業(yè)發(fā)送信號、作業(yè)未處于運行狀態(tài)和該信號請求對作業(yè)所運行的系統(tǒng)無效,則拒絕執(zhí)行該命令請求。

 

    12、查看和管理結(jié)點ljrsnodes

       語法:ljrsnodes [- {c|o|r}] [nodename …] ljrsnodes - {a|l }]

       參數(shù):-a 列出所有結(jié)點及其屬性,屬性包括“state”和“properties”

       -c 清除結(jié)點列表中的“offline”或“down”狀態(tài)設(shè)置,使結(jié)點可以被分配給作業(yè)。

       -l 以行的方式列出被標記的結(jié)點的狀態(tài) -o 將指定結(jié)點的狀態(tài)標記為“offline”。這將幫助管理員暫時停止某些結(jié)點的服務(wù)。

       -r 清除指定結(jié)點的“offline”狀態(tài)

       作用:該命令可以標記結(jié)點的狀態(tài)為“offline”、“down”或“free”,也可以幫助用戶查看結(jié)點信息。除了”-a” 和“-l”選項外,使用其他選項需要擁有操作員和管理員權(quán)限。

       舉例:1、查看所有結(jié)點信息

           ljrsnodes -a

       2、將結(jié)點標記為“offline”狀態(tài)

           ljrsnodes –o c0108

       3、清除結(jié)點的“offline”狀態(tài)設(shè)置

           ljrsnodes –c c0108 或 ljrsnodes –r c0108

 

    13、查看所有計算結(jié)點的狀態(tài)shownodes

       語法:shownodes [-h]

       作用:按照結(jié)點池分類顯示各結(jié)點池中結(jié)點的狀態(tài),結(jié)點狀態(tài)以不同顏色顯示。并在結(jié)點名后以數(shù)字代表可用CPU數(shù)和總共CPU數(shù)。例如c0101-2/2, 表示c0101結(jié)點可用2CPU總共2CPU,c0102-1/2表示C0102可用1CPU總共2CPU。

       舉例:$shownodes –h

用戶通過qsub命令來向系統(tǒng)提交任務(wù),有兩種方式提交:腳本方式和命令行方式。(一般情況下,不允許root用戶使用qsub命令提交作業(yè))。下面先講一下用這兩種方式提交作業(yè)的過程。
腳本方式提交

用戶將需要執(zhí)行的程序或命令寫入腳本中,再加入一些必要或者可選的語句,就可以通腳本方式提交。腳本提交比較方便,用戶可以用最簡單的文字編輯器(例如 vi)編寫一個腳本,然后使用 qsub 命令提交該腳本,pbs 會按照腳本內(nèi)容執(zhí)行相應(yīng)的任務(wù)。腳本提交的不足之處就是需要用戶執(zhí)行任務(wù)前編寫腳本。
腳本方式提交任務(wù)的一般格式為:qsub [script_name],script_name 是任務(wù)腳本的名稱。
下面介紹 pbs 任務(wù)腳本的編寫方法。
pbs 任務(wù)腳本包括三部分:

    * shell 說明語句:用來說明用戶使用的是哪種 shell,例如 #!/bin/sh說明用戶需要使用 Bourne shell,如果用戶沒有指定,則默認為 Bourne shell
    * pbs 指示語句:pbs 指示語句是用戶用來請求任務(wù)運行時所需的資源或設(shè)置任務(wù)的一些屬性的。以#PBS開頭,如#PBS –N taskname 是用來設(shè)置任務(wù)名稱的。pbs 指示語句是可選的,用戶可以不用關(guān)心它如何寫,系統(tǒng)會自動設(shè)置。
    * pbs 指示句的一個主要作用是請求任務(wù)執(zhí)行時所需要的系統(tǒng)資源,如 cpu 數(shù)目,存儲容量,運行時間,運行優(yōu)先級等等。以腳本方式提交的任務(wù)的資源請求是通過 pbs 指示語句,一般格式為 #PBS –l [選項=] [選項對應(yīng)的值],如#PBS –l ncpus=5 表示請求 5 個cpu為之服務(wù)。系統(tǒng)資源如下所示

arch 所需要的系統(tǒng)結(jié)構(gòu),只用在資源塊中 -l arch=linux
cput 任務(wù)的所有進程擁有的最大 cpu 執(zhí)行時間 -l cput=1:00:00
file 任務(wù)能夠創(chuàng)建的文件的大小 -l file=45mb
host 指定執(zhí)行主機的名稱 -l nodes=X:host 分配 X個主機名稱 中含有 host的執(zhí)行節(jié)點
mem 任務(wù)的所有進程能夠分配到的最大物理內(nèi)存數(shù) -l mem=100mb
ncpus 請求的 cpu數(shù) -l ncup=5
nice 任務(wù)運行時的 nice 優(yōu)先級值 -l nice=3
pcput 任務(wù)的任何一個進程擁有的最大 cpu 執(zhí)行時間 -l pcput=1:00:00
pmem 任務(wù)的任何一個進程能夠分配到的最大物理內(nèi)存數(shù) -l pmem=45mb
pvmem 任務(wù)的任何一個進程能夠使用的虛擬內(nèi)存的最大數(shù) -l pvmem=100mb
vmem 任務(wù)的所有并發(fā)進程能夠使用的最大虛存數(shù) -l pvmem=100mb
walltime 任務(wù)可以處于運行態(tài)的最大 wall-clock 時間 -l walltime=1:00:00
custom resources 用戶自定義資源

最常用的幾種資源是:walltime, ncpus, mem, host。其它可以不用太關(guān)心。

 資源請求的兩種方式:

a、資源塊方式:資源塊是將任務(wù)所需的資源作為一個整體,這個整體中說明了所需要的各種資源的數(shù)目。其格式為:-l select=[N:]chunk[+[N:]chunk…],如qsub –l select=2:ncpus=3:mem=4gb:arch=linux ,select=2表示需要2個這樣的資源塊,一個資源塊包括3個cpu,4gb的內(nèi)存,系統(tǒng)結(jié)構(gòu)要求是linux,即總共需要6個cpu,8gb的內(nèi)存。再如:-l select=2:ncpus=1:mem=10GB+3:ncpus=2:mem=8GB:arch=solaris注意中間的+號,是兩個資源塊的分隔符
b、請求全任務(wù)(job-wide)資源:格式為 –l  keyword=value[,keyword=value ...]如:qsub -l ncpus=4,mem=123mb,arch=linux

任務(wù)(程序或命令):可以是用戶程序(如C程序),也可以是系統(tǒng)命令
下面是一個完整的任務(wù)腳本例子,腳本名為 mytask:

       1. #!/bin/sh                 //指明所用的 shell
       2. #PBS –N mytask     //設(shè)置任務(wù)名稱
       3. #PBS -l walltime=1:00:00       //請求任務(wù)執(zhí)行時間
       4. #PBS -l select=ncpus=4:mem=400mb    //請求任務(wù)執(zhí)行所需資源
       5. #PBS -j oe                       //設(shè)置相關(guān)屬性(文件合并)
       6. date /t                           //系統(tǒng)命令(打印日期時間)
       7. .\my_application                 //所要執(zhí)行的任務(wù)(當前目錄名為 my_application的任務(wù))
       8. date /t       //  系統(tǒng)命令

第 1 行說明所用的 shell;第 2 至5 行是 pbs 指示語句,設(shè)置了任務(wù)的一些屬性,并請求了資源;第 6 至8行是要執(zhí)行的命令及任務(wù)。
編寫完腳本后,使用 qsub 命令提交腳本,在 shell下輸入:

    qsub mytask

后敲回車。
系統(tǒng)會輸出一個任務(wù)標識符:sequence-number.servername,如 220.cnode01。sequence-number是任務(wù)編號,后面需要用這個號查看任務(wù)的執(zhí)行狀態(tài),ervername
是 pbs server的名稱。

命令行方式提交
命令行方式提交不用寫腳本,用戶可以直接從命令行輸入。輸入的內(nèi)容基本上和在腳本中輸入的相同。其基本格式如下:
qsub <return>         //輸入qsub命令后回車
[directives]     //pbs指示語句(以#PBS為前綴)
[tasks]       //任務(wù)或命令
ctrl-D        //結(jié)束輸入,提交任務(wù)
對于上面用腳本方式提交的任務(wù),用命令行方式提交的格式如下:

       1. qsub
       2. #PBS –N mytask
       3. #PBS –l walltime=1:00:00
       4. #PBS –l select=ncpus=4:mem=400mb
       5. #PBS -j oe
       6. date /t
       7. ./my_application
       8. date /t

注:以命令行方式提交任務(wù)時,這些命令選項都要以 pbs 指示語句的格式給出,即選項之前要加前綴#PBS。
任務(wù)提交后,用戶如果要知道任務(wù)的當前運行狀態(tài),可以通過 qstat 命令查詢。qstat 命令的常用選項有:
無選項:當 qstat 命令不帶任何選項時,以默認方式顯示任務(wù)信息,例如

    [soofree@node32]$ qstat
    Job id           Name             User        Time Use   S               Queue
    —————-   —————-      —————-    ————   ——
    569.node32    test             soofree          0             R               small

其中,Job id 是任務(wù)的標識符,Name 是任務(wù)名稱,User是任務(wù)所有者,Time Use 是CPU使用時間,S 是任務(wù)當前狀態(tài)(本例中 R表示正在運行),Queue表示任務(wù)所在隊列。任務(wù)的狀態(tài)如下:

        * B  只用于任務(wù)向量,表示任務(wù)向量已經(jīng)開始執(zhí)行
        * E  任務(wù)在運行后退出
        * H  任務(wù)被服務(wù)器或用戶或者管理員阻塞
        * Q  任務(wù)正在排隊中,等待被調(diào)度運行
        * R  任務(wù)正在運行
        * S  任務(wù)被服務(wù)器掛起,由于一個更高優(yōu)先級的任務(wù)需要當前任務(wù)的資源
        * T  任務(wù)被轉(zhuǎn)移到其它執(zhí)行節(jié)點了
        * U  由于服務(wù)器繁忙,任務(wù)被掛起
        * W  任務(wù)在等待它所請求的執(zhí)行時間的到來(qsub -a)
        * X  只用于子任務(wù),表示子任務(wù)完成

再舉一例,使用-a 選項指定任務(wù)開始執(zhí)行時間:

    [soofree@nod32]$ qsub -a 2102 test
    571.node32
    [soofree@node32]$ qstat

    Job id           Name     User    Time Use S  Queue
    —————- —————- —————- ———– — ——–
    570.cnode01      test       soofree     0    W    default

此時任務(wù)狀態(tài)(S)顯示 W,表示任務(wù)正在等待執(zhí)行時間的到來

PBS 命令與使用

PBS(Portable Batch System)是由NASA開發(fā)的靈活的批處理系統(tǒng)。它被用于集群系統(tǒng)、超級計算機和大規(guī)模并行系統(tǒng)。PBS主要有如下特征:
  • 易用性:為所有的資源提供統(tǒng)一的接口,易于配置以滿足不同系統(tǒng)的需求,靈活的作業(yè)調(diào)度器允許不同系統(tǒng)采用自己的調(diào)度策略。
  • 移植性:符合POSIX 1003.2標準,可以用于shell和批處理等各種環(huán)境。
  • 適配性:可以適配與各種管理策略,并提供可擴展的認證和安全模型。支持廣域網(wǎng)上的負載的動態(tài)分發(fā)和建立在多個物理位置不同的實體上的虛擬組織。
  • 靈活性:支持交互和批處理作業(yè)。
OpenPBS( http://www.OpenPBS.org/)是PBS的Open Source的實現(xiàn)。商業(yè)版本的PBS可以參照: http://www./。
1、PBS命令
   PBS提供4條命令用于作業(yè)管理。
(1)     qsub 命令用于提交作業(yè)腳本
命令格式:
qsub  [-a date_time] [-c interval] [-C directive_prefix]
[-e path] [-I] [-j join] [-k keep] [-l resource_list]  [-m mail_options]
[-M user_list][-N name] [-o path] [-p priority] [-q destination] [-r c]
[-S path_list] [-u user_list][-v variable_list] [-V]
[-W additional_attributes] [-z]
[script]
參數(shù)說明:因為所采用的選項一般放在pbs腳本中提交,所以具體見PBS腳本選項。
例:# qsub  aaa.pbs         提交某作業(yè),系統(tǒng)將產(chǎn)生一個作業(yè)號
(2)     qstat 命令用于查詢作業(yè)狀態(tài)信息
命令格式:qatat [-f][-a][-i] [-n][-s] [-R] [-Q][-q][-B][-u]
參數(shù)說明:
-f  jobid  列出指定作業(yè)的信息
-a        列出系統(tǒng)所有作業(yè)
-i         列出不在運行的作業(yè)
-n        列出分配給此作業(yè)的結(jié)點
-s        列出隊列管理員與scheduler所提供的建議
-R       列出磁盤預留信息
-Q       操作符是destination id,指明請求的是隊列狀態(tài)     
-q        列出隊列狀態(tài),并以alternative形式顯示
-au userid  列出指定用戶的所有作業(yè)
-B       列出PBS Server信息
-r        列出所有正在運行的作業(yè)
-Qf queue 列出指定隊列的信息
-u        若操作符為作業(yè)號,則列出其狀態(tài)。
若操作符為destination id,則列出運行在其上的屬于user_list中用戶的作業(yè)狀態(tài)。
例:# qstat -f 211      查詢作業(yè)號為211的作業(yè)的具體信息。
(3) qdel 命令用于刪除已提交的作業(yè)
命令格式:qdel  [-W 間隔時間] 作業(yè)號
命令行參數(shù):
例:# qdel -W 15 211            15秒后刪除作業(yè)號為211的作業(yè)
(4)     qmgr 命令用于隊列管理
  qmgr -c "create queue batch queue_type=execution"
  qmgr -c "set queue batch started=true"
  qmgr -c "set queue batch enabled=true"
  qmgr -c "set queue batch resources_default.nodes=1"
  qmgr -c "set queue batch resources_default.walltime=3600"
  qmgr -c "set server default_queue=batch"
2、PBS腳本文件
PBS腳本文件由腳本選項和運行腳本兩部分組成。
(1) PBS作業(yè)腳本選項 (若無-C選項,則每項前面加‘#PBS’
            -a  date_time : date_time格式為:[[[[CC]YY]MM]DD]hhmm[.SS]
                                                 表示經(jīng)過date_time時間后作業(yè)才可以運行。
-c  interval   : 定義作業(yè)的檢查點間隔,如果機器不支持檢查點,則忽略此選項。
-C  directive_prefix :在腳本文件中以directive_prefix開頭的行解釋為qsub的命
令選項。(若無此選項,則默認為’#PBS’ )
-e  path     :將標準錯誤信息重定向到path
-I           :以交互方式運行
-j  join      :將標準輸出信息與標準錯誤信息合并到一個文件join中去。
-k  keep     :定義在執(zhí)行結(jié)點上保留標準輸出和標準錯誤信息中的哪個文件。
                          keepo 表示保留前者,e表示后者,oeeo表示二者都保留,
                          n表示皆不保留。若忽略此選項,二者都不保留。
-l  resource_list  : 定義資源列表。以下為幾個常用的資源種類。
 cput=N            : 請求N秒的CPU時間; N也可以是hh:mm:ss的形式。
          mem=N[K|M|G][B|W]:請求N {kilo|mega|giga}{bytes|words} 大小的內(nèi)存。
          nodes=N:ppn=M     :請求N個結(jié)點,每個結(jié)點M個處理器。
-m  mail_options :mail_optiona:作業(yè)abort時給用戶發(fā)信;為b:作業(yè)開始運行發(fā)信;為e:作業(yè)結(jié)束運行時發(fā)信。若無此選項,默認為a。
-M  user_list   : 定義有關(guān)此作業(yè)的mail發(fā)給哪些用戶。
-N  name      : 作業(yè)名,限15個字符,首字符為字母,無空格。
-o  path       : 重定向標準輸出到path。
-p  priority     : 任務(wù)優(yōu)先級,整數(shù),[-1024,1023],若無定義則為0.
-q  destination  : destination有三種形式: queue , @server,queue@server。
-r  y|n         : 指明作業(yè)是否可運行,y為可運行,n為不可運行。
-S  shell       : 指明執(zhí)行運行腳本所用的shell,須包含全路徑。
-u  user_list    : 定義作業(yè)將在運行結(jié)點上以哪個用戶名來運行。
-v  variable_list : 定義export到本作業(yè)的環(huán)境變量的擴展列表。
-V             : 表明qsub命令的所有環(huán)境變量都export到此作業(yè)。
-W  additional_attributes  : 作業(yè)的其它屬性。
-z             : 指明qsub命令提交作業(yè)后,不在終端顯示作業(yè)號。
(2)     運行腳本同LINUX下一般的運行腳本文件。
[]:腳本文件中的mpirun_rsh命令行中的節(jié)點列表文件要用環(huán)境變量表示
$PBS_NODEFILE,這個環(huán)境變量表示由pbs自動分配給作業(yè)的節(jié)點列表;
節(jié)點數(shù)為命令行中指定的進程數(shù)。
格式如下:
mpirun_rsh –np 進程數(shù) –hostfile $PBS_NODEFILE 可執(zhí)行程序名
 
命令詳解如下:
 
Getting Status on the System, Queues, and Jobs
CommandShort DescriptionTutorialManual Page
qstatlist information about queues and jobsUsing qstatqstat man page
qstat -qlist all queues on systemHTML and PSqstat man page
qstat -Qlist queue limits for all queuesHTML and PSqstat man page
qstat -alist all jobs on systemUsing qstatqstat man page
qstat -au useridlist all jobs owned by user useridUsing qstatqstat man page
qstat -slist all jobs with status commentsHTML and PSqstat man page
qstat -rlist all running jobsHTML and PSqstat man page
qstat -f jobidlist all information known about specified jobUsing qstatqstat man page
qstat -Qf queuelist all information known about specified queueUsing qstatqstat man page
qstat -BList summary information about the PBS serverHTML and PSqstat man page
Submitting a Job
qsub jobscriptsubmit jobscript to PBSUsing qsubqsub man page
qsub -Isubmit an interactive-batch jobUsing qsubqsub man page
qsub -q queuesubmit job directly to a specified queueUsing qsubqsub man page
Using the Graphical User Interface (GUI)
xpbsGraphical User Interface to PBS commandsUsing xpbsxpbs man page 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多