我正在运行两个java
应用程序ubuntu
,我为此搜索过,但我不知道如何为每个 java 应用程序提供唯一的进程名称。我将应用程序作为 jar 文件(java -jar app.jar
)运行。但是当我看到使用 shell 命令的进程时最佳 。
它只显示 java,而不是应用程序名称。有关此的任何帮助。
如果您在后台运行命令(&
在末尾添加),您可以获得 using 的 PID $!
:
后台运行的最后一个作业的 PID(进程 ID)
java -jar app.jar &; echo $!
您可以从终端尝试ps -aef | grep java
。它将列出正在运行的 Java 命令,您可以通过查看命令参数从中推断出应用程序名称。
如果这是启动/停止 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