簡體   English   中英

使用jsvc守護Java程序

[英]Daemonizing a java program using jsvc

我正在嘗試使用JSVC將Java程序作為守護程序運行。 這是我使用的簡單代碼:

package daemonexample;
public class DaemonExample implements Daemon {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
}

@Override
public void init(DaemonContext dc) throws DaemonInitException, Exception {
    System.out.println("initializing ...");
}

@Override
public void start() throws Exception {
    System.out.println("starting ...");
}

@Override
public void stop() throws Exception {
    System.out.println("stopping ...");
}

@Override
public void destroy() {
    System.out.println("done.");
}

}

並執行以下命令:jsvc -debug -home $ JAVA_HOME -cp /path/to/commons-daemon.jar:/path/to/DaemonExample.jar-用戶編碼器-outfile /tmp/example.out -errfile / tmp / example。 err -pidfile /tmp/example.pid daemonexample.DaemonExample

運行此命令時,我得到:“將stdout重定向到/tmp/example.out,將stderr重定向到/tmp/example.err”。 但是目標文件為空。 我在這里想念什么?

檢出/tmp/example.err。 它應該包含錯誤詳細信息。

以下可能是問題所在:

1: you forgot import org.apache.commons.daemon.*; ?
2: if yes, then DaemonExample.class is not getting created.
3: make sure DaemonExample.class exists in DaemonExample.jar
4: jsvc, usually must be called using full path. i.e. /usr/bin/jsvc .... check your debug info

遞減命令線參數| 分離:真實| 顯示版本:否| 顯示幫助:否| 僅檢查:已禁用| 停止:錯誤| 等待:0 | 以服務方式運行:否| 安裝服務:否| 刪除服務:否| JVM名稱:“ null” | Java主頁:“ / Library / Java / Home” | PID文件:“ / tmp / example.pid” | 用戶名:“ root” | 額外選項:1 | “ -Djava.class.path = /用戶/用戶名/NetBeansProjects/DaemonExample/dist/DaemonExample.jar” | 調用的類:“ daemonexample.DaemonExample” 類參數:0

無需將用戶更改為“ root”! 未在命令行上指定用戶'root'驗證的Home,使用環境在命令行或環境中未在Home上搜索,試圖在/System/Library/Frameworks/JavaVM.framework/Home中找到Java Home試圖在VM配置文件/ System中定位/Library/Frameworks/JavaVM.framework/Home/jre/lib/jvm.cfg嘗試找到VM配置文件/System/Library/Frameworks/JavaVM.framework/Home/lib/jvm.cfg在/ System /找到了VM配置文件Library / Frameworks / JavaVM.framework / Home / lib / jvm.cfg在配置中找到了VM客戶端定義檢查庫/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib在配置中找到了VM jvm定義檢查庫/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib在配置中找到VM熱點定義檢查庫/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot .dylib在配置中找到VM服務器定義檢查庫/ System / L ibrary / Frameworks / JavaVM.framework / Home /../ Libraries / libserver.dylib在配置中找到VM經典定義檢查庫/System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclassic.dylib無法找到庫/System/Library/Frameworks/JavaVM.framework/Home中用於VM經典(跳過)Java Home的示例DUMPING JAVA HOME STRUCTURE | Java主頁:“ / System / Library / Frameworks / JavaVM.framework / Home” | Java VM配置:“ / System / Library / Frameworks / JavaVM.framework / Home / lib / jvm.cfg” | 找到的JVM:4 | JVM名稱:“客戶端” | “ /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libclient.dylib” | JVM名稱:“ jvm” | “ /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libjvm.dylib” | JVM名稱:“ hotspot” | “ /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libhotspot.dylib” | JVM名稱:“服務器” | “ /System/Library/Frameworks/JavaVM.framework/Home/../Libraries/libserver.dylib”

將stdout重定向到/tmp/example.out並將stderr重定向到/tmp/example.err

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM