圓圓
首先讓我們下載Se rvicePiIot命令行程序(下載地址:https:∥www.coretechnologies.com/products/ServicePilot/ServicePilot.exe)。下載之后,通過在命令提示符窗口中執(zhí)行“Service Pilot-help”命令,可以獲取關(guān)于該命令行程序的詳細(xì)參數(shù)說明文本(圖1)。英文的說明信息大家不一定能看明白,因此下面就一些重要的參數(shù)作必要的解釋。
ServicePiIot命令行的基本格式為:
ServicePilot.exe<-start|-Stop|-restart>[-wait][-noforce][-computer][-args][-verbose]
上述命令中的選項“-start”表示啟動服務(wù),“-stop”表示停止服務(wù),“-restart”表示重新啟動服務(wù)?!?wait”表示等待時間,單位是秒,如果未能提供此值,則默認(rèn)值為120秒?!?noforce”表示在停止服務(wù)時,如果所有其他操作都失敗,拒絕嘗試強制終止服務(wù)進程。在默認(rèn)的情況下,如果服務(wù)沒有在給定的超時時間內(nèi)轉(zhuǎn)換到停止?fàn)顟B(tài),ServicePilot將嘗試停止服務(wù)的進程,通過指定“-noforce”參數(shù)可關(guān)閉此行為?!?computer”表示不是使用本地計算機,而是使用網(wǎng)絡(luò)上計算機名稱(或lP地址)為的計算機上的服務(wù)?!?args”表示在啟動服務(wù)時傳遞給定的參數(shù)集,用空格分隔每個參數(shù)?!啊睘榉?wù)的名稱(也可以是服務(wù)的顯示名稱,但使用真實的服務(wù)名稱更有效),不能省略,必須提供。“-verbose”表示生成詳細(xì)的輸出信息。如果命令中的服務(wù)名稱至少包含一個空格,請務(wù)必用半角引號將其引起來。
此外,如果在批處理操作中引用該命令,我們還需要知道退出代碼的含義:完成命令之后,如果操作成功,則退出代碼為0;如果未成功完成,則退出代碼為1。我們可以在批處理程序中通過標(biāo)準(zhǔn)的ERRORLEVEL變量訪問該退出代碼。
在明白了該命令的基本含義之后,我們通過幾個簡單的例子來進一步加深對它用法的掌握。
重新啟動AppIe移動設(shè)備服務(wù)
如果iPhone、iPad或iPod touch在Windows上的iTunes中無法識別,則可能需要重新啟動蘋果移動設(shè)備服務(wù)。如果在連接這些設(shè)備時出現(xiàn)錯誤信息,顯示因為Apple Mobile Device服務(wù)沒有啟動此設(shè)備不能使用,這時可執(zhí)行如下命令來啟動它(圖2):
ServicePilot.exe-restart“Apple Mobile Device Service”
停止“慢”的或“忙”的服務(wù)
如果服務(wù)需要很長的時間才能停止,應(yīng)該在使用ServicePilot時設(shè)置足夠長的“等待時間”。例如,我們知道某個服務(wù)“Device Automation”可能需要兩分鐘才能關(guān)閉,這時可以使用這個命令來停止它(圖3):
ServicePllot.exe-stop-wait 120“Device Automation”
使用參數(shù)啟動服務(wù)
某些服務(wù)在啟動時接受設(shè)定的一些參數(shù),這些參數(shù)我們通常情況下是在服務(wù)的“屬性”控制窗口中指定的(圖4)。而現(xiàn)在,我們可以通過ServicePiIot命令行來提供參數(shù)。比如下面的這條命令,可以在調(diào)試模式下使用端口號8080啟動“RetailConnection”服務(wù)(圖5):
ServicePilot.exe-start-args“/port 8080/debug”RetailConnection
上述命令我們均可以將其寫入批處理或腳本文件中保存,這樣在使用時一鍵運行就可以控制相應(yīng)的服務(wù)了。
ServicaPilot相對于NET命令的優(yōu)勢
NET命令在等待服務(wù)的啟動或停止時,最多只能等待30秒。對于需要更長時間才能完成狀態(tài)過渡的服務(wù)來說,這是一個問題。NET的無法“耐心”等待會導(dǎo)致批處理文件出現(xiàn)意外錯誤。例如,一個NET腳本后跟另一個NET腳本,如果服務(wù)關(guān)閉時間超過30秒,則服務(wù)停止將失敗,隨后的服務(wù)啟動也將失敗。使用NET命令向服務(wù)傳遞參數(shù)也比較麻煩,每個項目必須分開且各自加上引號,并以斜杠(“/”)作為前綴。而ServicePilot傳遞多個參數(shù)時只需寫在一對引號中并用空格分開即可。
用ServicaPilot相對于SC命令的優(yōu)勢
SC.EXE文件也可以處理服務(wù)的啟動和停止,但它也有一些缺點:與NET START不同,SC START只是發(fā)出啟動服務(wù)的命令并立即結(jié)束,不會嘗試等待服務(wù)轉(zhuǎn)換到運行狀態(tài)。因此,使用SC重新啟動服務(wù)的腳本必須包含更復(fù)雜的表達(dá)式,在SC START之后,腳本必須循環(huán),定期檢查服務(wù)的狀態(tài),并在服務(wù)移動到運行狀態(tài)時中斷循環(huán)。ServicePilot則可以完全直接重新啟動一個服務(wù),而不會有額外的麻煩。