Chạy file jar giống như một service trên Ubuntu (Linux)

1532

Bài viết được sự cho phép của tác giả Trần Hữu Cương

Chạy file jar giống như một service trên Ubuntu (Linux).

Trong bài này chúng ta sẽ thực hiện chạy 1 ứng dụng java (file .jar) trên ubuntu giống như 1 service (chạy ngầm). Tức là chúng ta có thể start, stop nó giống như 1 service hay có thể thể lựa chọn khởi động cùng hệ thống, xem log …

  Hướng dẫn sử dụng filebeat để đọc và quản lý logs hệ thống nginx trên ubuntu
  Sếp nhớ trả lương em gấp 10 nha (phần 2) - HĐH Ubuntu

Giả sử mình có 1 file jar là spring-boot-hello.jar nằm trong folder /home/cuongth/workspace . Bây giờ mình sẽ thực hiện chạy file jar này giống như 1 service.

Bước 1: Tạo một service

Ở đây mình sẽ tạo 1 service với tên là spring-boot-hello. Do đó mình cần tạo file spring-boot-hello.service trong folder /etc/systemd/system với nội dung sau:

spring-boot-hello.service
[Unit]

Description=Demo Spring Boot Hello

[Service]

User=cuongth

# The configuration file application.properties should be here:




#change this to your workspace

WorkingDirectory=/home/cuongth/workspace




#path to executable.

#executable is a bash script which calls jar file

ExecStart=/bin/bash /home/cuongth/workspace/spring-boot-hello.sh

SuccessExitStatus=143




TimeoutStopSec=10

Restart=on-failure

RestartSec=5




[Install]

WantedBy=multi-user.target

Trong đó:

Description: mô tả service

User: user dùng để chạy service

ExecStart: lệnh chạy script (ở đây mình chạy file bash ở vị trí: /home/cuongth/workspace/spring-boot-hello)

Để tạo file trên các bạn có thể dùng lệnh vi, rồi copy nội dung trên vào là được. (hoặc dùng text editor như nanogedit…)

sudo vi /etc/systemd/system/spring-boot-hello.service

Bước 2: Tạo Script chạy file jar

spring-boot-hello.sh

/opt/java/jdk1.8.0_241/bin/java -jar spring-boot-hello.jar

Ở đây mình dùng lệnh java để chạy file spring-boot-hello.jar, hiện trên máy mình đang cài java ở folder /opt/java/jdk1.8.0_241. Các bạn sửa lại thành folder chứa java trên máy của các bạn là ok.

Cấp quyền thực thi cho file script:

sudo chmod +x spring-boot-hello.sh

Chạy file jar giống như một service trên Ubuntu (Linux)

Bước 3: Chạy service

sudo systemctl daemon-reload

sudo systemctl enable spring-boot-hello.service

sudo systemctl start spring-boot-hello

sudo systemctl status spring-boot-hello

Chạy file jar giống như một service trên Ubuntu (Linux)

Trong file spring-boot-hello.jar của mình là 1 web app đã nhúng sẵn tomcat và chạy trên port 8081, sau khi start service thì truy cập đường dẫn http://localhost:8081 sẽ có kết quả như sau:

Chạy file jar giống như một service trên Ubuntu (Linux)

Bước 4: Xem log

Để xem log của service ta dùng lệnh sau:

sudo journalctl --unit=my-webapp . See real-time logs by using the -f option.

If you want to trim them, use -n <# of lines> to view the specified number of lines of the log:

sudo journalctl -f -n 1000 -u spring-boot-hello

Trong đó:

  • -f: xem log realtime (log thay đổi gì sẽ hiện ra luôn)
  • -n: hiển thị số dòng log từ thời điểm hiện tại về trước đó
  • -u: tên service

Kết quả:

Chạy file jar giống như một service trên Ubuntu (Linux)

Để stop lại service ta dùng lệnh:

sudo systemctl stop spring-boot-hello

Để không cho service khởi động cùng hệ thống ta dùng lệnh:

sudo systemctl disable spring-boot-hello.service

Okay, Done!

Download file spring-boot-hello.jar tại đây https://github.com/stackjava/spring-boot-hello

References:

https://dzone.com/articles/run-your-java-application-as-a-service-on-ubuntu

Bài viết gốc được đăng tải tại stackjava.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev