2011-09-22 26 views
3
火Java方法

假設我投一個Java應用程序:如何使用bash

java -cp whatever.jar com.example.Start

進程啓動確定並保持與PID運行1314

現在我想系統火災的方法由用戶請求。
如何使用bash來指示正在運行的PID並讓它激發一種方法?

+1

也許bash腳本可以寫入一個文件,你的java進程可以監視/輪詢。 – Scorpion

+1

@Scorpion可以工作,但它並不高雅。 – Frankie

+0

是的,你是對的,但與Java 7看守服務這將是更容易做,並在性能方面更好。我不確定是否可以使用bash腳本來向消息隊列發送消息,因爲這是暴露函數的一種標準方法。 – Scorpion

回答

2

我的想法是讓bash通過命名管道向Java進程回顯數據,我非常確定Java支持這些數據。

+1

Java沒有,沒有它自己的支持命名管道 - 它可以通過nio和io軟件包在Linux/Unix上讀取/寫入它們,但它不能創建它們。 –

+0

啊,所以啓動腳本需要創建命名管道,然後啓動將連接到它的Java應用程序,然後以後的bash腳本可以通過該命名管道與它交互。涼。 – Drizzt321

+0

是的,只是mkfifo使命名的管道... IIRC它將是持久的,所以它不應該與每個腳本調用重新做..但你可以使用一個小bash腳本來看看它是否存在和如果沒有的話。 –

0

要使用Java進程通信,則通常會使用RMI從另一個進程(這可能是在同一個JAR)

但是,如果你想要一個純粹的bash/UNIX工具解決方案,可以讓應用程序在端口上偵聽命令併發迴響應。這意味着你可以使用普通的telnet發送命令並獲取輸出。其中一個例子是使用http服務器與wget或者您可以有一個簡單的基於套接字的解決方案。