1. 程式人生 > >Windows的cmd下讓程式在後臺執行

Windows的cmd下讓程式在後臺執行

在windows下啟動JBoss伺服器,需要在命令列中輸入run.bat。但是執行後如果你想停止伺服器,可能的做法就是直接按Ctrl+C鍵強行終止伺服器,顯然這種方式是不友好的。另一種方法就是再開一個cmd視窗,進入Jboss的bin目錄,然後鍵入shutdown.bat -S.  這樣畢竟費時費力,如果能像Linux下在命令列的後面加一個&讓它在後臺執行,要關閉時就不用另開視窗直接輸入相應的關閉命令就好了。

    答案就在下面:

    在執行的命令前加上start /b,比如start /b run.bat。就相當於Linux下的run.sh &。

windows上面檢視程序,使用tasklist 命令
linux上面顯示程序 使用 ps -ef 命令
----------------------------------------
在windows上面殺程序用taskkill命令
taskkill /im iperf.exe /t /f
linux上面用killall或者 kill命令
killall iperf1.7 
----------------------------------------
在windows上面後臺執行可以使用start 命令 並且指定/b 選項, linux系統需要在命令後面加上& 符號即可。

後臺執行 iperf.exe 網路測試程式,並且把輸出儲存到 c:\iperf_multicast_server_logfile.txt 
start /b iperf.exe -s -u -l 1k -B 224.0.100.2 -w 1G > c:\iperf_multicast_server_logfile.txt

後臺執行/root/iperf1.7 網路測試程式,並且把輸出儲存到 /root/iperf_multicast_client_logfile.txt 
/root/iperf1.7 -c 224.0.100.2 -u -l 1k -b 400M -w 1G -i 5 -t 60 -T 4 > /root/iperf_multicast_client_logfile.txt&

---------------------------------
windows上面顯示 文字檔案內容,可以用type命令。
type   c:\iperf_multicast_server_logfile.txt

Linux上面顯示文字檔案內容,使用cat 命令即可
cat /root/iperf_multicast_client_logfile.txt


兩者的區別在於“任務計劃”會在前臺執行,執行帳戶為當前使用者;

而at命令在後臺執行,執行帳戶為system。

當然at命令也可以使用/interactive選項在前臺執行。

使用at命令要注意兩點:

  1. 因為執行帳戶不同,所以一些環境變數是不同的,比如使用pscp遠端拷貝的時候,當前使用者的key已經在登錄檔裡,但是system使用者沒有,導致執行失敗。(system如果第一次執行pscp會出現主機驗證,解決方案是要麼用/interactive執行一次,要麼使用pscp -batch)
  2. 只有可執行檔案(.exe .bat .com)可以直接使用at命令執行,cmd內建命令(如copy、ren和bat的語法等)要使用at 19:00 cmd /c copy ….的形式來執行,如果bat檔案中也包含cmd命令,也要使用這種方式。
NT Server的AT命令詳解 
Windows NT Server的服務程式管理器只能設定某項服務的啟動方式(自動、手動、失效),而在日常管理工作中,常常要求某項服務能定時開啟、關閉。Windows NT Server提供的AT命令能夠實現這一點。利用它可實現RAS服務定時開關,其具體步驟如下: 
    1.在“設定”“控制面板”“服務”中啟動Schedule服務,並將其啟動方式屬性設定為自動。 
    2.在命令視窗中使用AT命令設定服務程式的定時啟動關閉。 
    AT命令的格式如下: 
    AT [\\computername] time [/interactive] [/every:date[,]|next:date[,]] ″command″ 
    引數含義: 
    無引數:顯示所有已設定的計劃命令情況。 
    \\computername:指示執行該命令的計算機名,如省略則在本機執行。 
    time:命令執行時間 
    /interactive:當程式執行時是否與正在登入的使用者進行互動。 
    /every:date[,]:指定程式執行的日期(如每週二、三:/every:T,W),每月1,2號:/every:1,2)。 
    next:date[,]:指定程式下一次執行的日期。 
    ″command″:定時執行的Windows NT命令,程式,批處理。 
    AT [\\computername] [[id][/delete][/yes]] 
    引數含義: 
    id:分配給計劃命令的識別號碼,可由不帶引數的AT命令查到。 
    /delete:取消指定的計劃命令,如果id省略的話,取消所有的計劃命令。 
    /yes:強制對所有的取消詢問回答yes。
  用法一,定時啟動關閉某個服務 

  以RAS服務方例,讓該服務在每日19:00啟動,次日7:30關閉,AT命令如下: 
  AT 19:00 /every:M,T,W,Th,F,S,Su net start ″remote access server″ 
  AT 7:30 /every:M,T,W,Th,F,S,Su net stop ″remote access server″ 

  用法二,定時關機 

  1.編寫一個批處理檔案,內容如下: 
  shutdown /l 
  如果是讓機器重新啟動則使用 
  shutdown /r 
  檔案存為c:\autoshut.bat 
  2.建立自動執行條目: 
  at 22:00 c:\autoshut.bat 

  這樣每天晚上22:00機器都會自動關機,在關機前會進行30秒鐘的提示. 
  shutdown程式是win2k的Rkit中自帶的,windowxp預設自帶。

在 Windows 2000 中,您可以使用“控制面板”中的“任務計劃”工具來安排任務。您也可以使用 at 命令手動安排任務。本文介紹如何使用 at 命令建立和取消計劃任務。 

回到頂端

AT 命令概述

您可以使用 at 命令來安排命令、指令碼或程式在指定的日期和時間執行。您也可以使用此命令檢視現有的計劃任務。 

要使用 at 命令,“任務計劃程式”服務必須在執行中,而且您必須以本地管理員組成員的身份登入。使用 at 命令建立任務時,您必須對任務進行配置,使之在同一使用者帳戶下執行。 

at 命令使用以下語法: at \\computername time /interactive | /every:date,.../next:date,... command at \\computername id /delete | /delete/yes 以下列表介紹可用於 at 命令的引數:
  • \\computername:此引數用於指定遠端計算機。如果省略此引數,則任務將安排在本地計算機上執行。
  • time:此引數用於指定執行任務的時間。時間是按 24 小時制的 hour:minutes 形式指定的。例如,0:00 代表午夜,20:30 代表晚上 8:30。
  • /interactive:此引數用於允許任務執行時與處於登入狀態的使用者的桌面進行互動。
  • /every:date,...:此引數用於安排任務在指定的日期或在一週或一月內指定的一天或多天執行,例如每星期五或每月的第八天。將 date 指定為一週內的一天或多天(使用下面的縮寫形式:M、T、W、Th、F、S、Su)或一月內的一天或多天(使用數字 1 至 31)。多個日期項之間一定要用逗號隔開。如果省略此引數,則任務將安排在當天執行。
  • /next:date...:此引數用於安排任務在當天之後的某個時間執行(例如,下個星期一)。將 date 指定為一週內的一天或多天(使用下面的縮寫形式:M、T、W、Th、F、S、Su)或一月內的一天或多天(使用數字 1 至 31)。多個日期項之間一定要用逗號隔開。如果省略此引數,則任務將安排在當天執行。
  • command:此引數用於指定要執行的 Windows 2000 命令、程式(.exe 或 .com 檔案)或批處理程式(.bat 或 .cmd 檔案)。如果該命令要求使用路徑作為引數,請使用絕對路徑名(以驅動器號開頭的完整路徑)。如果該命令位於遠端計算機上,請使用統一命名約定 (UNC) 路徑名(\\ServerName\ShareName)。如果該命令不是可執行 (.exe) 檔案,必須在命令前面新增 cmd /c,例如,cmd /c copy C:\*.* C:\temp
  • id:此引數用於指定分配給計劃任務的標識號。
  • /delete:此引數用於取消計劃任務。如果省略 id 引數,則將取消計算機上的所有計劃任務。
  • /yes:此引數用於強制對取消計劃任務時系統發出的所有查詢回答“是”。如果省略此引數,系統將提示您確認對任務的刪除。
注意:使用 at 命令時,計劃任務是通過使用系統帳戶憑據來執行的。

回到頂端

如何建立計劃任務

  1. 單擊開始,指向程式,指向附件,然後單擊命令提示符
  2. 在命令提示符下,鍵入下面一行,然後按 Enter 顯示當前執行的服務的列表: net start 如果“任務計劃程式”未顯示在列表中,則請鍵入下面一行,然後按 Enter: net start "task scheduler"
  3. 在命令提示符下,鍵入下面一行(使用與您的情況相符的引數),然後按 Enter: at \\computername time /interactive | /every:date,.../next:date,... command

示例

  • 要想在午夜將“Documents”資料夾中的所有檔案複製到“MyDocs”資料夾中,請鍵入下面一行,然後按 Enter: at 00:00 cmd /c copy C:\Documents\*.* C:\MyDocs
  • 要想在每個工作日晚上 11:00 備份“Products”伺服器,請建立包含備份命令的批處理檔案(例如 Backup.bat),鍵入下面一行,然後按 Enter 安排該備份任務: at \\products 23:00 /every:M,T,W,Th,F backup
  • 要想安排 net share 命令上午 6:00 在“Sales”伺服器上執行,並將列表重定向到“Corp”伺服器上的共享資料夾“Reports”中的“Sales.txt”檔案,請鍵入下面一行,然後按 Enter: at \\sales 06:00 cmd /c "net share reports=d:\Documents\reports >> \\corp\reports\sales.txt"
回到頂端

如何取消計劃任務

  1. 單擊開始,指向程式,指向附件,然後單擊命令提示符
  2. 在命令提示符下,鍵入下面一行,然後按 Enter 顯示當前執行的服務的列表: net start 如果“任務計劃程式”未顯示在列表中,則請鍵入下面一行,然後按 Enter: net start "task scheduler"
  3. 在命令提示符下,鍵入下面一行(使用與您的情況相符的引數),然後按 Enter: at \\computername id /delete | /delete/yes

示例

  • 要取消在本地計算機上安排的所有任務,請鍵入 at /delete,然後按 Enter。
  • 要取消名為“MyServer”的計算機上的 ID 為 8 的任務,請鍵入 at \\MyServer 8 /delete,然後按 Enter。
回到頂端

如何檢視計劃任務

要檢視通過使用 at 命令建立的任務,請按照下列步驟操作:
  1. 單擊開始,指向程式,指向附件,然後單擊命令提示符
  2. 在命令提示符下,鍵入下面一行,然後按 Enter 顯示當前執行的服務的列表: net start 如果“任務計劃程式”未顯示在列表中,則請鍵入下面一行,然後按 Enter: net start "task scheduler"
  3. 在命令提示符下,執行下列步驟之一:
    • 要檢視通過使用 at 命令安排的任務的列表,請鍵入下面一行,然後按 Enter: at \\computername - 或 - 

    • 要檢視特定的計劃任務,請鍵入下面一行,然後按 Enter: at \\computername id

示例

  • 要檢視本地計算機上的所有計劃任務,請鍵入 at,然後按 Enter。
  • 要檢視名為“Support”計算機上的所有計劃任務,請鍵入 at \support,然後按 Enter。
  • 要檢視本地計算機上 ID 為 18 的任務,請鍵入 at 18,然後按 Enter。
回到頂端

疑難解答

  • 當您鍵入 at \\computername 以檢視計劃任務列表時,使用 at 命令建立的某些(或全部)計劃任務沒有列出。 

    使用 at 命令建立任務後,如果在“計劃任務”資料夾中修改了任務,則可能會發生此問題。當您使用 at 命令安排任務時,該任務顯示在“控制面板”中的“計劃任務”資料夾中。您可以檢視或修改任務。但是,如果修改了任務,當您使用 at 命令時,將無法檢視任務。 

    要解決此問題,請在“控制面板”中的“任務計劃”資料夾中檢視或修改該任務。有關此現象的其他資訊,請單擊下面的文章編號,以檢視 Microsoft 知識庫中相應的文章: 220149  無法使用任務計劃程式工具檢視 AT 任務
  • 當您使用 at 命令安排任務時,該任務在指定的時間或日期不執行。 

    如果滿足下列任一條件,就會發生這種現象:
    • 該命令的語法不正確。 

      安排任務後,請鍵入 at \\computername 以確認語法正確。如果命令列下顯示的資訊不正確,請取消該任務,然後重新建立它。 

      - 或 -
    • 您安排的任務執行的命令不是 .exe 檔案。 

      at 命令在執行命令之前不自動載入 cmd(命令直譯器)。除非您執行的是 .exe 檔案,否則您必須在命令的開頭載入 Cmd.exe,例如 at cmd /c dir > c:\test.txt
有關 AT 命令疑難解答的其他資訊,請單擊下面的文章編號,以檢視 Microsoft 知識庫中相應的文章: 142040  使用 /k 開關的 AT 命令疑難解答 121562  使用 AT 命令啟動的應用程式不是互動式應用程式