2011-11-18 92 views
2

我有一個glassfish安裝,我想要一個簡單的終端命令檢查它是否正在運行。如果是,它將關閉該過程。或者如果它沒有運行,它會啓動服務器。終端命令:啓動或停止過程如果它正在運行

要開始我可以進入服務器:

/Applications/NetBeans/glassfish-3.1.1/bin/./asadmin start-domain domain 

要停止我可以進入服務器:

/Applications/NetBeans/glassfish-3.1.1/bin/.asadmin stop-domain domain 

我會想作一個簡單的腳本Alfred.app比可以啓動這個如果它沒有運行,則將其停止;如果它正在運行,則停止它。

回答

1

執行此操作的一種方法是在文件中記錄服務器啓動時的進程標識,並進行其他腳本檢查以查看該進程是否正在運行。

例如,腳本A(無條件地運行服務器):

#!/bin/sh 
/Applications/NetBeans/glassfish-3.1.1/bin/./asadmin start-domain domain 
# file name is arbitrary 
pgrep whateverTheProcessNameIs > ~/.glassfish-server.pid 

而且在腳本B:

#!/bin/sh 
pid=`pgrep -F ~/.glassfish-server.pid` # file chosen in script A 
if [ "x$pid" = "x" ] ; then 
    # process has died; restart by running script A 
    /path/to/scriptA 
fi 

需要注意的是僅適用於Mac OS X 10.8(山獅)安裝pgrep默認;否則你不得不使用其他方法(如解析ps輸出)來查看正在運行的進程。

至於如何定期執行此檢查,有多種方法。我假設阿爾弗雷德會運行任何可執行的腳本(chmod +x scriptA scriptB),但我不知道。

相關問題