java.io.IOException: не удается запустить программу «sudo sh /etc/rc.d/init.d/jbossas7 restart»: ошибка = 2, нет такого файла или каталога

1

Я хочу, чтобы приложение перезапускало JBoss, которое используется в качестве службы Linux. Вот как я это делаю:

String array[] = { "sudo sh /etc/rc.d/init.d/jbossas7 restart", "login" };
String pas = "pass";
Process proc = null;
BufferedWriter writer = null;
try {
    proc = Runtime.getRuntime().exec(array);
    writer =
            new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
    writer.write(pas);
} catch (IOException e) {
    e.printStackTrace();
}

Содержимое jbossas7:

#!/bin/bash### BEGIN INIT INFO  
#chkconfig: 345 90 10
#description: JBOSS 7
#processname: jbossas7
#Provides:          jbossas7  
#Required-Start:    $local_fs $remote_fs $network $syslog  
#Required-Stop:     $local_fs $remote_fs $network $syslog  
#Default-Start:     2 3 4 5  
#Default-Stop:      0 1 6  
#Short-Description: Start/Stop JBoss AS 7  
### END INIT INFO      



    ## Include some script files in order to set and export environmental variables  
    ## as well as add the appropriate executables to $PATH.  
    [ -r /etc/profile.d/java.sh ] && . /etc/profile.d/java.sh  
    [ -r /etc/profile.d/jboss.sh ] && . /etc/profile.d/jboss.sh  

    JBOSS_HOME=/usr/local/jboss-eap-6.2  

    AS7_OPTS="$AS7_OPTS -Dorg.apache.tomcat.util.http.ServerCookie.ALLOW_HTTP_SEPARATORS_IN_V0=true"   ## See AS7-1625  
    AS7_OPTS="$AS7_OPTS -Djboss.bind.address.management=0.0.0.0"  
    AS7_OPTS="$AS7_OPTS -Djboss.bind.address=0.0.0.0"  

    case "$1" in  
        start)  
            echo "Starting JBoss AS 7..."  
            #sudo -u jboss sh ${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS           ##  If running as user "jboss"  
            #start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS   ## Ubuntu  
            ${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS &  
        ;;  
        stop)  
            echo "Stopping JBoss AS 7..."  
            #sudo -u jboss sh ${JBOSS_HOME}/bin/jboss-admin.sh --connect command=:shutdown            ##  If running as user "jboss"  
            #start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/jboss-admin.sh -- --connect command=:shutdown     ## Ubuntu  
            ${JBOSS_HOME}/bin/jboss-cli.sh --connect command=:shutdown  
        ;;

    restart)
      echo "Stopping JBoss AS 7..."  
            #sudo -u jboss sh ${JBOSS_HOME}/bin/jboss-admin.sh --connect command=:shutdown            ##  If running as user "jboss"  
            #start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/jboss-admin.sh -- --connect command=:shutdown     ## Ubuntu  
            ${JBOSS_HOME}/bin/jboss-cli.sh --connect command=:shutdown  
    echo "Starting JBoss AS 7..."  
            #sudo -u jboss sh ${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS           ##  If running as user "jboss"  
            #start-stop-daemon --start --quiet --background --chuid jboss --exec ${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS   ## Ubuntu  
            ${JBOSS_HOME}/bin/standalone.sh $AS7_OPTS &  


    ;;  

        *)  
            echo "Usage: /etc/init.d/jbossas7 {start|stop|restart}"; exit 1;  
        ;;  
    esac  

    exit 0  

Команда:

sudo sh /etc/rc.d/init.d/jbossas7 restart

хорошо работает в режиме терминала. Но мой код говорит

java.io.IOException: Cannot run program "sudo sh/etc/rc.d/init.d/jbossas7 restart": error=2, No such file or directory

Что не так?

Теги:
jboss

1 ответ

2
Лучший ответ

Первый элемент входного массива интерпретируется как исполняемый файл. Пытаться

String array[] = 
        { "sudo", "sh", "/etc/rc.d/init.d/jbossas7", "restart", "login" };

Ещё вопросы

Сообщество Overcoder
Наверх
Меню