1

我正在运行两个java应用程序ubuntu,我为此搜索过,但我不知道如何为每个 java 应用程序提供唯一的进程名称。我将应用程序作为 jar 文件(java -jar app.jar)运行。但是当我看到使用 shell 命令的进程时最佳 。

它只显示 java,而不是应用程序名称。有关此的任何帮助。

4

3 回答 3

0

解决方案

如果您在后台运行命令(&在末尾添加),您可以获得 using 的 PID $!

后台运行的最后一个作业的 PID(进程 ID)

命令

java -jar app.jar &; echo $!
于 2013-04-05T13:54:19.400 回答
0

您可以从终端尝试ps -aef | grep java。它将列出正在运行的 Java 命令,您可以通过查看命令参数从中推断出应用程序名称。

于 2013-04-05T13:04:43.853 回答
0

如果这是启动/停止 Java 进程,您可以执行如下启动脚本:

#!/bin/sh

PROGRAM_NAME=sicm
PROGRAM_HOME=/usr/local/sicm
PIDFILE=/var/run/$PROGRAM_NAME.pid

application_start() {
        CMDLINE="/usr/lib/java/bin/java -jar $PROGRAM_NAME.jar"
        echo -n "Starting $PROGRAM_NAME daemon: $CMDLINE"
        cd $PROGRAM_HOME

        /usr/lib/java/bin/java -classpath lib -jar $PROGRAM_NAME.jar &
        ps -Ao pid,command | grep java | grep $PROGRAM_NAME.jar | awk '{print $1}' > $PIDFILE
        echo
}

application_stop() {
        echo -n "Stopping $PROGRAM_NAME daemon..."

        if [ -r $PIDFILE ]; then
                PID=`cat $PIDFILE`
                if [ $PID -gt 0 ]; then
                        kill $PID
                        echo
                        sleep 1
                        fi
                rm -f $PIDFILE
        fi
        killall $PROGRAM_NAME
}

application_restart() {
        application_stop
        sleep 1
        application_start
}

case "$1" in
'start')
        application_start
        ;;
'stop')
        application_stop
        ;;
'restart')
        application_restart
        ;;
*)
        echo "usage $0 start|stop|restart"
esac
于 2013-04-05T13:41:36.480 回答