Topic: 求教java exec(String comm);

  Print this page

1.求教java exec(String comm); Copy to clipboard
Posted by: skwujinhua
Posted on: 2008-11-27 17:37

import java.io.*;
public class shell
{
public static void main(String [] args) throws Exception {
{
try{
Process pro = Runtime.getRuntime().exec("/bin/sh service ntpd stop");
ImputStreamReader ir = new ImputStreamReader(Proc .getInputStream());
LineNumberReader imput = new LineNumberReader (ir);
/********************************/
pro.waitFor();
/*******************************/
}
}
}

該程序單獨執行可以停止ntpd服務﹐但是如果把它放到一個排程里﹐一個小時執行一次就不行了。讓我百思不得其解。高手給我點提示﹐謝謝。不勝感激。

2."緣"來如此 [Re: skwujinhua] Copy to clipboard
Posted by: skwujinhua
Posted on: 2008-12-02 08:17

哈哈。。。。我知道咋回事了。

將exec("/bin/sh service ntpd stop");
改成exec("/bin/sh etc/init.d ntpd stop");
這樣放到排程里面就可以了。哈哈哈。。。。OY

3.Re:求教java exec(String comm); [Re: skwujinhua] Copy to clipboard
Posted by: JiafanZhou
Posted on: 2008-12-08 19:39

The problem is that the Linux cannot find the correct command.

?? is it not exec("/bin/sh /etc/init.d/ntpd stop")???

Glad to hear that the code is working correctly.

Jiafan

4.Re:求教java exec(String comm); [Re: skwujinhua] Copy to clipboard
Posted by: skwujinhua
Posted on: 2008-12-27 14:43

當手動運行程序時﹐系統當前的路徑就是運行程序時候的路徑﹐而將程序放到系統排程中運行時﹐系統當前的路徑就變成了系統路徑。

比如﹕如果我的程序放在/usr下面﹐手動運行時﹐路徑就是/usr

如果放在排程中運行,那么當前的路徑就成了系統路徑﹐/root

就會找不到shell命令﹐而使用/bin/sh/etc/init.d則解決了。這几天才想到的。

還得對init.d再研究下。希望對兄弟們有幫助﹐謝謝Jiafan Zhou


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923