CHẠY ỨNG DỤNG LÚC START BOOT VỚI SYSTEMD

Trong quá trình phát triển các ứng dụng trên Linux hoặc Gateway IoT, chúng ta thường sẽ gặp trường hợp cần chạy ứng dụng lúc khởi động. Thông thường chúng ta sẽ sử dụng các tools như crontab, nhưng nhược điểm của nó là phải chờ ít nhất 1 phút sau khi đăng nhập. Vì thế, trong bài viết ngày mình sẽ hướng dẫn các bạn sử dụng systemd để chạy ứng dụng lúc khởi động với ưu điểm là nhanh và dễ quản lý bởi hệ thống systemd service của Linux.

Deploy oneshot systemd service

Lấy source

  • git clone https://github.com/ninhnn2/systemd_service_start_at_boot.git

Trong repo này chứa các file sau:

├── deploy.sh
├── foo.service
├── README.md
├── setup-foo.sh
└── teardown-foo.sh

foo.service

  • Chọn type cho systemd là oneshot
  • Khi service được chạy sẽ thực thi lệnh chạy script "setup-foo.sh", chúng ta có thể implement các lệnh cần thực thi trong script này hay chạy một ứng dụng nào đó.
[Unit]
Description=Setup foo
#After=network.target

[Service]
Type=oneshot
ExecStart=/opt/foo/setup-foo.sh
RemainAfterExit=true
ExecStop=/opt/foo/teardown-foo.sh
StandardOutput=journal

[Install]
WantedBy=multi-user.target

Install systemd service

Đi tới thư mục source

cd systemd_service_start_at_boot/

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

sudo chmod +x ./ deploy.sh

Chạy script deploy để install systemd service vào hệ thống

sudo ./deploy.sh