Deploying Java app as daemon
Using Systemd
sudo pico /etc/systemd/system/service_name.service [Unit] Description=Service Name [Service] WorkingDirectory=/path/to/app PIDFile=/tmp/service_name ExecStart=/usr/lib/jvm/java-8-oracle/bin/java -cp "/path/to/libs/*:/path/to/app/my.jar" com.company.Main Restart=on-failure RestartSec=20 5 [Install] WantedBy=multi-user.target
Using init.d
sudo pico /etc/init.d/service_name #!/bin/sh # chkconfig: 2345 90 60 SERVICE_NAME=service_name PATH_TO_JAR=/path/to/app/my.jar PATH_TO_LIB=/path/to/libs/* MAIN_METHOD=com.company.Main PID_PATH_NAME=/tmp/service_name LOG_PATH=/path/to/logs/service_name.log case $1 in start) echo "Starting $SERVICE_NAME ..." if [ ! -f $PID_PATH_NAME ]; then nohup java -cp "$PATH_TO_LIB:$PATH_TO_JAR" $MAIN_METHOD 2>> $LOG_PATH >> $LOG_PATH & echo $! > $PID_PATH_NAME echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is already running ..." fi ;; stop) if [ -f $PID_PATH_NAME ]; then PID=$(cat $PID_PATH_NAME); echo "$SERVICE_NAME stoping ..." kill $PID; echo "$SERVICE_NAME stopped ..." rm $PID_PATH_NAME else echo "$SERVICE_NAME is not running ..." fi ;; restart) if [ -f $PID_PATH_NAME ]; then PID=$(cat $PID_PATH_NAME); echo "$SERVICE_NAME stopping ..."; kill $PID; echo "$SERVICE_NAME stopped ..."; rm $PID_PATH_NAME echo "$SERVICE_NAME starting ..." nohup java -cp "$PATH_TO_LIB:$PATH_TO_JAR" $MAIN_METHOD 2>> $LOG_PATH >> $LOG_PATH & echo $! > $PID_PATH_NAME echo "$SERVICE_NAME started ..." else echo "$SERVICE_NAME is not running ..." fi ;; esac
AI Summary
Chrome On-device AI
2025-02-08 11:16:56
Share Article