开机自动启动——java python 脚本
编写启动java程序的脚本,需要注意的是需要用jdk的绝对路径,不要在jar包后面加 & 符号。systemd 需要一个前台进程来保持服务状态。如果脚本中使用 & 将 java 命令放到后台运行,systemd 就无法跟踪进程状态,导致服务退出。使用 exec 替换当前脚本进程,使 java 进程直接作为 systemd 的主进程。移除 &,让 java 在前台运行。
#! /bin/bash
pid=`ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}'`
echo "$pid"
if [ -z "$pid" ]
then
echo "service is already stopped"
else
kill -TERM $pid
echo "service is killed"
fi
exec /usr/local/jdk/jdk-21.0.5/bin/java -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -Dfile.encoding=utf-8 -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --httpPort=8080
------------------------------------------------------------------------------
#! /bin/bash
pid=`ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}'`
echo "$pid"
if [ -z "$pid" ]
then
echo "service is already stopped"
else
kill -TERM $pid
echo "service is killed"
fi
----------------------------------------------------------------------------
[Unit]
Description=Jenkins Java Application
After=network.target
[Service]
User=root
WorkingDirectory=/usr/lib/jenkins
ExecStart=/bin/bash /usr/lib/jenkins/autostart.sh
ExecStop=/bin/bash /usr/lib/jenkins/stop.sh
Restart=on-failure
Environment=JAVA_HOME=/usr/local/jdk/jdk-21.0.5/bin/java
[Install]
WantedBy=multi-user.target
-----------------------------------------------------------------------------
systemctl daemon-reload
systemctl enable jenkins.service
systemctl start jenkins.service
systemctl status jenkins.service
---------------------------------------------------------------------------------
python脚本开机自动启动
[Unit]
Description=FTPServer Script Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/ftp-server
ExecStart=/usr/local/python3/bin/python3.10 /root/ftp-server/FTPServer.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
----------------------------------------------------------------------------------------------------
loki 服务端拉起:
[Unit]
Description=LokiServer Script Service
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/loki
ExecStart=/opt/loki/loki-linux-amd64 -config.file=/opt/loki/config.yaml
Restart=always
RestartSec=8
StandardOutput=syslog
StandardError=syslog
#Environment=JAVA_HOME=/usr/local/jdk/jdk-21.0.5/bin/java
[Install]
WantedBy=multi-user.target