我正在尝试使用
从java应用程序启动nginx HTTP服务器Runtime.getRuntime().exec(command);
命令变量内容为:
/media/data/websites/php-desktop/bin/nginx/nginx/nginx -c "/tmp/conf/nginx.conf" -p "/media/data/websites/php-desktop/bin/nginx/"
命令应该从指定的路径启动nginx,配置文件在-c之后,并且在-p
之后带有前缀值问题是java无法启动nginx它只是默默地下降,我试图打印procccess输出,它不输出任何东西。
旁边当我从任何终端执行命令时它工作正常。 注意:我使用的是ubuntu linux,nginx是从源码构建的最新稳定版本。
答案 0 :(得分:1)
因为
Runtime.getRuntime().exec(command);
相当于
Runtime.getRuntime().exec(command, null, null);
所以它不起作用,因为参数数组为null,exetable文件为“/ media / data / websites / php-desktop / bin / nginx / nginx / nginx -c /tmp/conf/nginx.conf- p ....“。
请尝试
之一Runtime.getRuntime().exec(new String[] {
"/bin/sh"
,"-c"
,"/media/data/websites/php-desktop/bin/nginx/nginx/nginx -c \"/tmp/conf/nginx.conf\" -p \"/media/data/websites/php-desktop/bin/nginx/\"});
或者
Runtime.getRuntime().exec(new String[] {
"/media/data/websites/php-desktop/bin/nginx/nginx/nginx",
"-c",
"/tmp/conf/nginx.conf",
"-p",
"/media/data/websites/php-desktop/bin/nginx/"});
答案 1 :(得分:0)
尝试读取进程的inputStream。像这样......
Process p = Runtime.getRuntime().exec(command);
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
编辑:也尝试使用errorStream ... http://download.oracle.com/javase/6/docs/api/java/lang/Process.html#getErrorStream%28%29 (这可能是你发现任何错误的地方!)
HTH