2011-05-06 95 views

回答

4

有沒有自動方式來做到這一點。如果您使用的是Unix系統,則可以在程序運行時按下Ctrl + Z以發送STOP信號。它會等待,直到您再次發送一個CONT信號(最簡單的方法是使用shell命令fg)。已停止的進程仍駐留在內存中,但未運行。

有更復雜的方法可以將正在運行的程序的「快照」保存到磁盤。稍後,您可以加載快照並繼續執行該程序。例如,請參見CryoPID

1

簡短的回答:沒有付出一些努力讓程序'自我休眠',沒有。

如果你在UNIX上運行,那麼我確信你可以設置一個cron作業來在需要時暫停/恢復程序。在Windows下,你不會享受到這樣的奢侈。

2

你可以自動化它。正如已經提到的那樣,Crtl-Z和fg只不過是信號。在Unix中,您可以使用kill命令發送它們。所以kill -19 $ PID會停止你的進程(當$ PID是它的PID時)並且kill -18會繼續它。

你只需要編寫一個包裝腳本,看起來像:

#!/bin/sh 

PIDFILE=wherever/myprogram.pid 

if [ -e $PIDFILE ]; then 
    kill -18 `cat $PIDFILE` 
else 
    myprogram & 
    echo $! > $PIDFILE 
fi 

sleep 30 
kill -19 `cat $PIDFILE` 

(很短的,未經檢驗的,你要小心刪除pidfile進程文件,當你殺的過程)。第一次運行它時,它會開始執行(30秒),稍後它將撤銷你的程序。你可以改進它,例如通過在開始時檢查進程列表中是否存在程序進程,以及是否已刪除pid文件。所以它在重新啓動或終止您的過程後甚至可以正確運行。

+0

而不是任意實現特定的數字,你應該使用'-STOP'和'-CONT' ... – 2011-05-06 10:58:52

相關問題