Python 標准庫中的 argparse 可以根據程序中的定義,從 sys.argv 中解析參數,並且自動生成幫助信息。
使用 add_argument 方法為應用程序添加參數,其中 add_argument 方法的參數比較多,這也使得 argparse 庫的使用不夠簡潔,後續將繼續為大家介紹更好用的命令行參數解析的開源庫 click 。
下面是 add_argument 方法的參數及含義總結:
解析參數需要使用 ArgumentParser 實例的 parse_args 方法,此方法返回一個 NameSpace 對象;可以通過訪問 NameSpace 對象屬性的方式獲取參數值。
下面是一個簡單的例子:通過 parser.server 獲取 --host 選項的值,通過 parse.boolean_switch 獲取 -t 選項的值。
查看幫助信息:
參數默認值:
指定參數:
列印幫助信息:
列印版本信息:
傳遞參數:
② 求java命令行參數詳解
作用:
當你使用命令行的形式運行.class文件時,向你的類傳遞參數.
C:\>java YourClassName 參數1 [參數2 參數3 ....]
參數之間用一個空格作為間隔符.
String[] args 這個字元串數組是保存運行main函數時輸入的參數的,例如main函數所在的類名為test 那麼你在cmd運行 java test a b c 時,args[0] = a ,args[1]=b, args[2]=c 你就可以在你的程序中調用你輸入的這些變數了。
args[]不就是那個字元串This is a simple Java program嗎?
-------完全不是的,你理解不對。這樣好了,你在運行的時候加個參數,比如 java test XX。然後在你的main函數裡面加這段話:System.out.println("arg is"+args[0]),然後看看輸出是什麼?
是不是這個:
This is a simple Java program
arg is XX
在運行時輸入java test xx yy zz,並且在你的main函數裡面加這段話:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然後看看輸出是什麼?
是不是:
This is a simple Java program
arg is xx yy zz
現在你理解了嗎。。。
如果沒關系,為什麼程序中去掉String args[]會出現錯誤?
--------之所以去掉會出錯在於,不帶String args[]的main函數和帶String args[]的main函數,本質上已經不是同一個函數了,java 本身不存在不帶String args[]的main函數,所以當然出錯了。
另外,虛機團上產品團購,超級便宜
③ Python筆記:命令行參數解析
有些時候我們需要通過命令行將參數傳遞給腳本,C語言中有個getopt()方法,python中也有個類似的命令行參數解析方法getopt()。python也提供了比getopt()更簡潔的argparse方法。另外,sys模塊也可以實現簡單的參數解析,本文將對這3種命令行參數解析方法簡要介紹。
sys.argv是傳入的參數列表,sys.argv[0]是當前python腳本的名稱,sys.argv[1]表示第一個參數,以此類推。
命令行運行:
可以看到傳入的參數通過sys.argv來獲取,它就是一個參數列表。
python的getopt與C語言的的getopt()函數類似。相比於sys模塊,支持長參數和短參數,並對參數解析賦值。但它需要結合sys模塊進行參數解析,語法格式如下:
短參數為單個英文字母,如果必須賦值需要在後面加英文冒號( : ),長參數一般為字元串(相比短參數,更能說明參數含義),如果必須賦值需要在後面加等號( = )。
命令行運行:
注意:短參數(options)和長參數(long_options)不需要一一對應,可以任意順序,也可以只有短參數或者只有長參數。
argparse模塊提供了很多可以設置的參數,例如參數的默認值,幫助消息,參數的數據類型等。argparse類主要包括ArgumentParser、add_argument和parse_args三個方法。
下面介紹這三個函數的使用方法。
argparse默認提供了 -h | --help 參數:
命令行運行:
下面列出部分參數:
下面來添加參數:
命令行運行:
parse_args() 方法用於解析參數,在前面的示例代碼中使用parse_args方法來提取參數值,對於無效或者錯誤的參數會列印錯誤信息和幫助信息:
命令行運行:
本文介紹了Python的三種命令行參數解析方法sys.argv、getopt和argparse,可以根據自己的需要進行選擇,getopt和argparse兩種方法相比來說,建議選擇argparse,代碼量更少更簡潔。更詳細的使用方法參考官方文檔:
--THE END--
④ Windows批處理-for命令詳解
摘自Windows XP的幫助文檔。
For對一組文件中的每個文件運行指定的命令。
語法
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
參數
{%variable|%%variable}
必需。代表可替換的參數。使用 %variable 通過命令提示符執行 for 命令。使用 %%variable 在批處理文件中執行 for 命令。變數要區分大小寫,並且必須用 Alpha 值表示,例如,%A、%B 或 %C。
(set)
必需。指定要用指定命令處理的一個或多個文件、目錄、數值范圍以及文本字元串。需要括弧。
command
必需。指定要對包括在指定 (set) 中的每個文件、目錄、數值范圍以及文本字元串所執行的命令。
CommandLineOptions
指定要通過指定命令使用的任何命令行選項。
/?
在命令提示符顯示幫助。
注釋
使用 for
可以在批處理文件中或直接從命令提示符使用 for 命令。
使用批處理參數
下列屬性適用於 for 命令:
for 命令使用指定 set 中的每個文本字元串替換 %variable 或 %%variable,直到 command 處理所有文件為止。
記住,for variable名是區分大小寫、全局的,並且每次總共不超過 52 個是活動的。
要避免批處理參數從 %0 到 %9 混淆,對 variable 可以使用除數字 0 到 9 之外的任何字元。對於簡單的批處理文件,單個字元即可奏效,例如 %%f。
在復雜的批處理文件中可以使用 variable 的多個值來區分不同的可替換變數。
顯示一組文件
set 參數可以代表單個或多個文件組。可以使用通配符(即,* 和 ?)指定文件組。以下為有效文件組:
(*.doc)
(*.doc *.txt *.me)
(jan*.doc jan*.rpt feb*.doc feb*.rpt)
(ar??1991.* ap??1991.*)
在使用 for 命令時,set 中的第一個值代替 %variable 或 %%variable,然後由指定的命令處理該值。這一直會繼續下去,直到處理完與 set 值相對應的所有文件(或文件組)為止。
使用 in 和 do 關鍵字
In 和 do 不是參數,但必須將它們與 for 一起使用。如果省略其中任何一個關鍵字,就會出現錯誤消息。
使用 for 的其它形式
如果命令擴展名處於啟用狀態(即,默認設置),則支持 for 的下列其它形式:
僅為目錄
如果 set 包含通配符(* 和 ?),則為匹配 set 的每個目錄(而不是指定目錄中的文件組)而執行指定的 command。語法是:
for /D {%% | %}variable in (set) do command [CommandLineOptions]
遞歸
進入根目錄樹 [Drive:]Path,在樹的每個目錄中執行 for 語句。如果在 /R 後沒有指定目錄,則假定為當前目錄。如果 set 只是一個句號 (.),則只列舉目錄樹。語法是:
for /R [[Drive :]Path] {%% | %}variable in (set) do command [CommandLineOptions]
重復數值范圍
使用迭代變數設置起始值 (start#) ,然後一步步執行一系列設置范圍的值,直到該值超過設置的終止值 (end#)。/L 將通過對 start# 與 end# 進行比較,執行迭代變數。如果 start# 小於 end#,就會執行該命令。如果迭代變數超過 end#,則命令解釋程序退出此循環。也可以使用負 step# 以遞減數值的方式一步步執行此范圍內的值。例如,(1,1,5) 生成順序 1 2 3 4 5,而 (5,-1,1) 則生成順序 (5 4 3 2 1)。語法是:
for /L {%% | %}variable in (start#,step#,end#) do command [CommandLineOptions]
重復和文件解析
使用文件解析過程處理命令輸出、字元串和文件內容。使用迭代變數定義要檢查的內容或字元串,以及使用各種 ParsingKeywords 選項進一步修改解析方式。使用 ParsingKeywords 令牌選項指定哪些令牌應該傳遞為迭代程序變數。注意:在沒有使用令牌選項時,/F 將僅檢查第一個令牌。
文件解析過程包括讀取輸出、字元串或文件內容、分成獨立的文本行及然後將每行解析成零個或更多個令牌。然後通過設置為令牌的迭代程序變數值,調用 for 循環。默認情況下,/F 傳遞每個文件每一行的第一個空白分隔符號。跳過空行。語法的不同點為:
for /F ["ParsingKeywords"] {%% | %}variable in (filenameset) do command [CommandLineOptions]
for /F ["ParsingKeywords"] {%% | %}variable in ("LiteralString") do command [CommandLineOptions]
for /F ["ParsingKeywords"] {%% | %}variable in ('command') do command [CommandLineOptions]
filenameset 參數指定一個或多個文件名稱。在繼續到 filenameset 中的下一個文件之前,每個文件都會被打開、讀取和處理。要覆蓋默認解析行為,指定 "ParsingKeywords"。這是一個引用字元串,它包含一個或多個關鍵字以指定不同的解析選項。
如果使用 usebackq 選項,請使用如下語法之一:
for /F ["usebackqParsingKeywords"] {%% | %}variable in ("filenameset") do command [CommandLineOptions]
for /F ["usebackqParsingKeywords"] {%% | %}variable in ('LiteralString') do command [CommandLineOptions]
for /F ["usebackqParsingKeywords"] {%% | %}variable in (`command`) do command [CommandLineOptions]
下表列出可以用於 ParsingKeywords 的解析關鍵字。
關鍵字 說明
eol=c 指定行尾字元(只一個字元)。
skip=n 指定在文件的開頭跳過的行數。
delims=xxx 指定定界符集合。這將替換空格和製表符的默認分隔符集。
tokens=x,y,m-n 指定將哪些令牌從每行傳遞到每個迭代的 for 正文。結果就分配了附加變數名稱。m-n 格式是一個范圍,指定從 mth 到 nth 的令牌。如果 tokens=字元串中最後一個字元是星號 (*),則將分配附加的變數,並在解析的最後一個令牌後在行上接收剩餘的文本。
usebackq 指定可以使用引號引用 filenameset 中的文件名稱,將後面帶有引號的字元串作為一個命令執行,而帶有單引號的字元串是文字字元串命令。
變數替換
已經增強了 for 變數引用的替換修改程序。下表列出可選語法(對於任意變數 I)。
帶有修改程序的變數 說明
%~I 展開刪除任何前後引號 ("") 的 %I。
%~fI 將 %I 展開到完全合格的路徑名。
%~dI 只將 %I 展開到驅動器號。
%~pI 只將 %I 展開到路徑。
%~nI 只將 %I 展開到文件名 。
%~xI 只將 %I 展開到文件擴展名。
%~sI 展開路徑以只包含短名稱。
%~aI 將 %I 展開到文件的文件屬性。
%~tI 將 %I 展開到文件的日期和時間。
%~zI 將 %I 展開到文件大小。
%~$PATH:I 搜索 PATH 環境變數所列出的目錄,並將 %I 展開到第一個找到的完全合格的名稱。如果沒有定義環境變數名稱,或搜索沒有找到文件,則此修改程序擴展成空字元串。
下表列出可用來獲得綜合結果的修改程序組合。
變數(使用組合的修改程序) 說明
%~dpI 只將 %I 展開到驅動器號和路徑。
%~nxI 只將 %I 展開到文件名和擴展名。
%~fsI 將 %I 展開到只包含短名稱的完整路徑名。
%~dp$PATH:I 在 PATH 環境變數中所列出的目錄中搜索 %I,並展開到第一個找到結果的驅動器號和路徑。
%~ftzaI 將 %I 展開到輸出行(如 dir一樣)。
在上述範例中,可以用其它有效值替換 %I 和 PATH。有效的 for 變數名終止 %~ syntax。
使用大寫變數名(例如 %I),可以使代碼更具可讀性,並且避免與不區分大小寫的修改程序混淆。
解析字元串
通過將 Filenameset 包括在圓括弧內,並且外面再帶上單引號(即,'filenameset'),可以使用 for /F 對直接字元串解析邏輯。將 Filenameset 視為從某個文件輸入的單行,然後接受解析。
解析輸出
通過將圓括弧之間的 filenameset 變為後面帶有引號的字元串,可以利用 for /F 命令解析命令輸出。將它作為命令行,此命令被傳遞給子 Cmd.exe,並將輸出捕獲到內存並進行解析,就象它是一個文件一樣。
範例
要在批處理文件中使用 for,請使用以下語法:
for %%variable in (set) do command [CommandLineOptions]
要通過使用可替換變數 %f 顯示當前目錄中擴展名為 .doc 或 .txt 的所有文件的內容,請鍵入:
for %f in (*.doc *.txt) do type %f
在前述範例中,當前目錄中擴展名為 .doc 或 .txt 的每個文件都被替代為變數 %f ,直到每個文件的內容都顯示為止。要在批處理文件中使用該命令,只需使用 %%f 替換 %f 的每個事件。否則忽略此變數,並顯示一條錯誤消息。
要解析文件,同時忽略注釋行,請鍵入:
for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
這個命令解析 myfile.txt 文件的每一行,忽略以分號開頭的行,將第二和第三個令牌從各行傳遞到 FOR 正文(令牌通過逗號或空格分隔)中。FOR 語句的正文引用 %i 以獲得第二個令牌,引用 %j 以獲得第三個令牌,引用 %k 以獲得其餘全部令牌。如果您提供的文件名包含空格,請使用引號將文本引起來(例如,"File Name")。要使用引號,必須使用 usebackq。否則,就將引號解釋為定義要解析的文字字元串。
要通過將 filenameset 放在括弧之間來解析命令輸出,請鍵入:
for /F "usebackq delims==" %i IN (`set`) DO @echo %i
這個範例列舉當前環境中的環境變數名。
⑤ 命令行是什麼
問題一:命令行是什麼意思? 命令行是在DOS下運行的命令.
在這里,先解釋什麼是DOS?
DOS――Disk Operation System 磁碟操作系統
目前我們常用的操作系統有windows 9x/Me,NT,2000等,都是可視化的界面。在這些系統之前的人們使用的操作系統是DOS系統。DOS系統目前已經沒有什麼人使用了,但是dos命令卻依然存在於我們使用的windows系統之中。大部分的DOS命令都已經在Windows里變成了可視化的界面,但是有一些高級的DOS命令還是要在DOS環境下來執行。所以學習命令行對於我們熟練操作Windows系統是很有必要的。
不同的操作系統要用不同的命令進入命令行界面。
在Win9x/Me的開始菜單中的運行程序中鍵入mand命令,可進入命令行界面。
在Win2000/NT的開始菜單中的運行程序中鍵入cmd命令,可進入命令行界面。
膽的作用,比如裝系統必須在DOS下進行.還有如格式化...等等..
很多很多.
問題二:從命令行運行是什麼意思? 點擊 開始「-----> 運行」(或WINDOWS徽標鍵+R),然後在打開的提示框中輸入dotNetFx35setup.exe /lang:ENU,確定,即可。
問題三:命令行中cd是什麼意思 cd――改變當前目錄
1.功能:改變當前目錄
2.類型:內部命令
3.格式:cd[盤符:][路徑名][子目錄名]
4.使用說明:
(1)如果省略路徑和子目錄名則顯示當前目錄;
(2)如採用「cd\」格式,則退回到根目錄;
(3)如採用「cd..」格式則退回到上一級目錄。
例:(1)進入到user子目錄;(2)從user子目錄退回到子目錄;(3)返回到根目錄。
c:\>cd fox\user(進入fox子目錄下的user子目錄)
c:\fox\user>cd.. (退回上一級根目錄,注意cd後面跟著兩個點..)。
c:\fox>cd\ (返回到根目錄)
c:\
問題四:打開任務管理器的命令行是什麼 1,右鍵任務欄選任務管理器,2,按ctrl+alt+del,3開始運行輸入taskmgr或者taskmg.exe確定,4,打開我的電腦打開C盤windows文件夾裡面的system32子文件夾找到taskmgr.exe雙擊
問題五:DOS命令提示符是什麼 命令提示符 DOS似乎只有現在的老鳥有過接觸,新學電腦的人對DOS只是一知半解。它曾經佔領了個人電腦操作系統領域的大部分,全球絕大多數電腦上都能看到它的身影。由於DOS系統並不需要十分強勁的硬體系統來支持,所以從商業用戶到家庭用戶都能使用。雖然用現在的眼光看它不是出色的操作系統,但微軟軟體向下兼容的特點,決定了Windows出問題的時候,很多時候需要在DOS下才能得到解決,尤其對於廣大電腦愛好者及平時喜歡DIY的朋友來說,因此了解與學習DOS還是很有必要的。 啟動
命令提示符常用啟動方式有兩種:1:開始\所有程序\附件\命令提示符
2:開始\運行\cmd
基本指令-不分大小寫DOS 命令總共大約有一百個(包括文本編輯、查殺病毒、配置文件、批處理等),我們。這里詳細介紹幾個常用的DOS 命令。
1 dir
dir 是英文單詞directory(目錄)的縮寫,主要用來顯示一個目錄下的文件和子目錄。
【功能】:顯示指定磁碟、目錄中的文件和子目錄信息,包括文件及子目錄所在磁碟的卷標、文件與子目錄的名稱、每個文件的大小、文件及目錄建立的日期時間,以及文件子目錄的個數、所佔用總位元組數以及磁碟上的剩餘總空間等信息。
【格式】:dir [C:][path][filename][.ext][/o][/s][/p][/w][/a]
【說明】:dir 是DOS 命令中最常用的一個。斜杠表示後面的內容是參數。DOS 參數最常用的參數如下: dir 命令常用參數含義
參 數 意 義
/p 顯示信息滿一屏時,暫停顯示,按任意鍵後顯示下一屏 /o 排序顯示。o 後面可以接不同意義的字母
/w 只顯示文件名目錄名,每行五個文件名。即寬行顯示
/s 將目錄及子目錄的全部目錄文件都顯示
/a 將目錄的全部文件(包括系統文件和隱藏文件)都顯示
【舉例】:查看顯示【C:\】文件夾裡面的所有文件。在DOS 命令提示符下輸入【dir c:\ /a /p】,首先輸入dir 命令,空格,其次輸入要查看的目錄的名字c:\,再次輸入該命令的參數/a(顯示所有文件)、/p(暫停顯示),最後回車執行命令。小提示:DOS 中取得幫助可以:直接輸入【Help】查看全部幫助,也可以【命令/?】查看該命令的幫助。 2 cd
cd 是英文change directory(改變目錄)的縮寫,用於改變目錄位置。
【功能】:改變或顯示當前目錄
【格式】:cd [C:][path]
【說明】:路徑可以使用絕對路徑和相對路徑兩種。如果只有cd 而沒有參數,則只顯示當前路徑。注意:子目錄中一定有兩個「特殊目錄」,即「.」、「..」,其中一點表示當前目錄,兩點表示上一層目錄。從簡單實用的角度來看,我們只要學會逐層進入(cd 下一層某目錄名),和逐層退出(cd..)就可以解決所有問題。當然也可以用絕對路徑的辦法。
【舉例】進入c:盤根目錄下的【Windows】目錄。 3 md
md 是英文make directory(創建目錄)的縮寫,用於創建一個空子目錄。
【功能】:創建一個子目錄
【格式】:md [C:]path
【舉例】:用md 在c:根目錄建立一個叫做kingstone 的目錄......>>
問題六:* .* 在linux命令中是什麼意思 所有文件 以*.*機構的文件 比如 AAA.txt 如果沒有後綴名就不行了
*是通配符代表不定字元數量,也是不定字元種類,中文英文數字都可以
只有那個小數點是必須的。
問題七:指令是什麼? 指令是指示計算機執行某種操作的命令,它由一串二進制數碼組成。
一條指令通常由兩個部分組成:操作碼 +地址碼 。
操作碼:指明該指令要完成的操作的類型或性質,如取數、做加法或輸出數據等。
地址碼:指明操作對象的內容或所在的存儲單元地址。
宏指令:
宏指令是匯編語言程序中的一種偽指令
它的格式為
[ 宏指令名 ] MACRO [形式參數]
……
代碼段
……
ENDM
使用了「形式參數「,它們引用宏指令時被給出的一些名字或數值(實在參數)所替換。使用形式參數給宏指令帶來了很大的靈活性。
宏調用格式
[ 宏指令名 ] [實際參數]
實參數項將對應替換宏指令中形式參數。如果形式參數為標號時,則在宏調用中,實參也應為標號,且要求實參是唯一的。如果宏定義中有自己的標號,則在宏調用時,匯編程序自動地把標號變成唯一的標號.
偽指令:
偽指令(偽操作)不像機器指令那樣是在程序運行期間由計算機來執行的,它是在匯編程序對源程序匯編期間由匯編程序處理的操作.它可以完成如處理器選擇,定義程序模式,定義數據,分配存儲區,指示程序結束等功能.偽指令在編譯的時候並不生成代碼.偽指令在編譯之後就就不存在了
問題八:CMD中的CD命令是什麼 先進入D盤
d:
cd d:\文件夾名
問題九:dos命令是什麼 dos命令大全winver---------檢查Windows版本kGEh
wmimgmt.msc----打開windows管理體系結構(WMI)xAk9
wupdmgr--------windows更新程序XBS2
wscript--------windows腳本宿主設置QQ0L
write----------寫字板DMz4
winmsd---------系統信息Y8Kl
wiaacmgr-------掃描儀和照相機向導RJ1C
winchat--------XP自帶區域網聊天etfL
yDG
mem.exe--------顯示內存使用情況qya9
Msconfig.exe---系統配置實用程序3yNN
mplayer2-------簡易widnowskmediakplayerkHSN
mspaint--------畫圖板ynm8
mstsc----------遠程桌面連接WnGv
mplayer2-------媒體播放機m5WG
magnify--------放大鏡實用程序gryK
mmc------------打開控制台z470
mobsync--------同步命令KCNf
p0m
dxdiag---------檢查DirectX信息beRv
drwtsn32------q系統醫生q2Cx
devmgmt.msc---5設備管理器5B5K
dfrg.msc-------磁碟碎片整理程序qYsF
diskmgmt.msc---磁碟管理實用程序DBvf
dfg-------打開系統組件服務cQGy
ddeshare-------打開DDE共享設置s7Vh
dvdplay--------DVD播放器fK7C
8jB
netUstopUmessenger-----停止信使服務Uwgg
nettstarttmessenger----開始信使服務tEc9
notepad--------打開記事本VN7I
nslookup-------網路管理的工具向導iCCJ
ntbackup-------系統備份和還原CYS1
narrator-------屏幕「講述人」lujK
ntm *** gr.msc----移動存儲管理器0hUA
ntmsoprq.msc---移動存儲管理員操作請求6YaL
netstatk-an----(TC)命令檢查介面kWG5
qSB
syncapp--------創建一個公文包1GVM
sysedit--------系統配置編輯器DZJR
sigverif-------文件簽名驗證程序WdMr
sndrec32-------錄音機keBq
shrpubw--------創建共享文件夾KOyi
secpol.msc-----本地安全策略23oR
syskey---------系統加密,一旦加密就不能解開,保護windowszxp系統的雙重密碼z8Wn
services.msc---本地服務設置9VUt
Sndvol32-------音量控製程序MkNz
sfc.exe--------系統文件檢查器fTFL
sfcd/scannow---windows文件保護dbRZ
Qmh
tsshutdn-------60秒倒計時關機命令CWp1
tourstart------xp簡介(安裝完成後出現的漫遊xp程序)zE3y
taskmgr--------任務管理器x9HY
a6l
eventvwr-------事件查看器zbej
eudcedit-------造字程序zcPr
explorer-------打開資源管理器xkVs
e......>>
問題十:DOS的每個命令分別是什麼意思 PING命令參數詳解1、-a 解析計算機NetBios名。[1]示例:C:\>ping -a 192.168.1.21Pinging iceblood.yofor [192.168.1.21] with 32 bytes of data: Reply from 192.168.1.21: bytes=32 timeping -n 50 202.103.96.68 Pinging 202.103.96.68 with 32 bytes of data: Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 Request timed out. ……………… Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 Reply from 202.103.96.68: bytes=32 time=50ms TTL=241 Ping statistics for 202.103.96.68: Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds: Minimum = 40ms, Maximum = 51ms, Average = 46ms 從以上我就可以知道在給202.103.96.68發送50個數據包的過程當中,返回了48個,其中有兩個由於未知原因丟失,這48個數據包當中返回速度最快為40ms,最慢為51ms,平均速度為46ms。 3、-l size . 定義echo數據包大小。在默認的情況下windows的ping發送的數據包大小為32byt,我們也可以自己定義它的大小,但有一個大小的限......>>
⑥ Oracle中通過命令行實現定時操作詳解
Oracle中通過命令行實現定時操作詳解 Oracle中通過命令行實現定時操作詳解 Oracle基礎
眾所周知 一般操作系統會提供定時執行任務的方法 例如 Unix平台上提供了讓系統定時執行任務的命令Crontab 但是 對於某些需求 例如 一些對資料庫表的操作 最為典型的是證券交易所每日收盤後的結算 它涉及大量的資料庫表操作 如果仍然利用操作系統去定時執行 不僅需要大量的編程工作 而且還會出現用戶不一致等運行錯誤 甚至導致程序無法執行
一 分析問題
事實上 對於以上需求 我們可以利用資料庫本身擁有的功能Job Queue(任務隊列管理器)去實現 任務隊列管理器允許用戶提前調度和安排某一任務 使其能在指定的時間點或時間段內自動執行一次或多次 由於任務在資料庫中被執行 所以執行效率很高
任務隊列管理器允許我們定製任務的執行時間 並提供了靈活的處理方式 還可以通過配置 安排任務在系統用戶訪問量少的時段內執行 極大地提高了工作效率 例如 對於資料庫日常的備份 更新 刪除和復制等耗時長 重復性強的工作 我們就可以利用任務隊列管理器去自動執行以減少工作量
目前 擁有此項功能的資料庫有許多 最有代表性的是SQL Server Oracle 等 但是 要讓任務隊列管理器工作 還需要我們加以配置才能實現 SQL Server的功能配置是在一個圖形化界面(GUI)中實現的 非常簡單 利用OEM客戶端管理工具 Oracle的配置也可以在一個圖形界面中完成 然而大多數的用戶更習慣於命令行的方式去操縱資料庫 本文介紹如何通過命令行實現這種配置
二 實現步驟
.確保Oracle的工作模式允許啟動任務隊列管理器
Oracle定時執行 Job Queue 的後台程序是SNP進程 而要啟動SNP進程 首先要確保整個系統的模式是可以啟動SNP進程的 這需要以DBA的身份去執行如下命令
svrmgrl> alter system enable restricted session; 或sql> alter system disenable restricted session;
利用如上命令更改系統的會話方式為disenable restricted 為SNP的啟動創造條件
.確保Oracle的系統已經配置了任務隊列管理器的啟動參數
SNP的啟動參數位於Oracle的初始化文件中 該文件放在$ORACLE_HOME/dbs路徑下 如果Oracle的SID是myora 的話 則初始化文件就是initmyora ora 在文件中對SNP啟動參數的描述部分如下
job_queue_process=n job_queue_interval=N
第一行定義SNP進程的啟動個數為n 系統預設值為 正常定義范圍為 ~ 根據任務的多少 可以配置不同的數值
第二行定義系統每隔N秒喚醒該進程一次 系統預設值為 秒 正常范圍為 ~ 秒 事實上 該進程執行完當前任務後 就進入睡眠狀態 睡眠一段時間後 由系統的總控負責將其喚醒
如果該文件中沒有上面兩行 請按照如上配置添加 配置完成後 需要重新啟動資料庫 使其生效 注意 如果任務要求執行的間隔很短的話 N的配置也要相應地小一點
.將任務加入到資料庫的任務隊列中
調用Oracle的dbms_job包中的存儲過程 將任務加入到任務隊列中
dbms_job submit( job out binary_integer whatinarchar next_date indate intervalinvarchar no_parseinboolean)
其中
●job 輸出變數 是此任務在任務隊列中的編號
●what 執行的任務的名稱及其輸入參數
●next_date 任務執行的時間
●interval 任務執行的時間間隔 下面詳細討論一下dbms_job submit中的參數interval 嚴格地講 interval是指上一次執行結束到下一次開始執行的時間間隔 當interval設置為null時 該job執行結束後 就被從隊列中刪除 假如我們需要該job周期性地執行 則要用 sysdate+m 表示
將任務加入到任務隊列之前 要確定執行任務的資料庫用戶 若用戶是scott 則需要確保該用戶擁有執行包dbms_job的許可權 若沒有 需要以DBA的身份將權利授予scott用戶
svrmgrl> grant execute on dbms_job to scott;
.將要執行的任務寫成存儲過程或其他的資料庫可執行的pl/sql程序段
例如 我們已經建立了一個存儲過程 其名稱為my_job 在sql/plus中以scott用戶身份登錄 執行如下命令
sql> variable n number; sql> begin dbms_job submit(:n my_job; sysdate sysdate+ / ); mit; end; /
系統提示執行成功
Sql> print :n;
系統列印此任務的編號 例如結果為
如上 我們創建了一個每隔 分鍾執行一次的任務號為 的任務 可以通過Oracle提供的數據字典user_jobs察看該任務的執行情況
sql> select job next_date next_sec failures broken from user_jobs;
執行結果如下
job next_date next_sec failures broken / / : : N
這表示任務號為 的任務 下一次將在 / / : : 執行 此任務的執行失敗記錄為 次 注意 當執行job出現錯誤時 Oracle將其記錄在日誌里 失敗次數每次自動加 當執行失敗次數達到 時 Oracle就將該job標志為broken 此後 Oracle不再繼續執行它 直到用戶調用過程dbms_job broken 重新設置為not broken 或強制調用dbms_job run來重新執行它
lishixin/Article/program/Oracle/201311/17096