AI越來越火了,我們想要不被淘汰就得主動擁抱。推薦一個人工智能學習網站,通俗易懂,風趣幽默,最重要的屌圖甚多,忍不住分享一下給大家。點擊跳轉到網站
廢話不多說,進入正題。下面開始說如何使用 systemctl 來管理一個 Java 應用程序(例如 hello.jar)
- 創建 Systemd 服務文件
在 /etc/systemd/system/ 目錄下創建一個新的服務文件,例如 hello.service;創建完成后,往里面寫入:
[Unit]
Description=Video Application Service
After=network.target[Service]
# 設置 Java 路徑(如果已經配置了 JAVA_HOME 環境變量,可以省略)
Environment="JAVA_HOME=/opt/jdk-17"# 啟動命令 /usr/hello.jar 為jar路徑 (-XX:+UseG1GC:使用 G1 垃圾回收器;-XX:MaxMetaspaceSize=256m:設置元空間最大大小為 256MB;-Xmx:設置最大堆內存。-Xms:設置初始堆內存。)
ExecStart=/opt/jdk-17/bin/java -Xms512m -Xmx1024m -XX:+UseG1GC -XX:MaxMetaspaceSize=256m -jar /usr/hello.jar# 工作目錄(可選)
WorkingDirectory=/usr# 用戶和組(可選,根據需要修改)
User=root
Group=root# Environment="JAVA_OPTS=-Xms512m -Xmx1024m" # 設置 JVM 參數
# Environment="APP_CONFIG=/etc/myapp/config.properties" # 設置應用程序配置文件路徑# 重啟策略
Restart=always
RestartSec=5# 日志配置(可選)
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=video[Install]
WantedBy=multi-user.target
解釋一下這些參數:
Description:服務的描述信息。After=network.target:確保服務在網絡啟動后運行。ExecStart:啟動服務的命令。這里使用 java -jar 運行你的 hello.jar。WorkingDirectory:設置工作目錄(可選)。User 和 Group:指定運行服務的用戶和組(可選)。如果不需要特殊權限,可以省略。Restart=always:如果服務崩潰或意外退出,自動重啟。RestartSec=5:重啟前等待 5 秒。WantedBy=multi-user.target:指定服務在系統多用戶模式下啟動。
-
重新加載 Systemd 配置
創建服務文件后,需要重新加載 systemd 配置以使其生效:sudo systemctl daemon-reload
-
啟動服務
使用以下命令啟動服務:sudo systemctl start hello.service
-
檢查服務狀態
查看服務是否正常運行:sudo systemctl status hello.service
應該可以看到下面的輸出:
● video.service - Video Application ServiceLoaded: loaded (/etc/systemd/system/hello.service; disabled; vendor preset: disabled)Active: active (running) since Mon 2023-10-09 12:00:00 UTC; 5s agoMain PID: 12345 (java)Tasks: 10 (limit: 4915)Memory: 100.0MCGroup: /system.slice/video.service└─12345 /opt/jdk-17/bin/java -jar /usr/hello.jar
-
設置開機自啟動
sudo systemctl enable video.service
查看日志:
sudo journalctl -u video.service