Tự động chạy app khi khởi động Raspberry PI

 

Bạn đã từng viết application trên Raspberry hay chưa ?

 

Nếu có thì chắc các bạn cũng gặp trường hợp là muốn application của mình được chạy mỗi khi Rasperry Pi khởi động đúng không ? Còn không thì hôm nay các bạn sẽ được biết cách viết application trên Raspberry PI nhé.

 

 

Bước 1. Viết một ứng dụng C đơn giản nhất.

 

 

- Tạo một file tên là main.c chứa nội dung dưới đây.

 

 

#include <stdio.h>

 

#include <unistd.h> 


int main(void) {


       while(1) {

               printf("Hello Raspberry PI\n");

               sleep(1);

       }

}
 

Bước 2. Biên dịch file main.c ra file thực thi.

 

 

- Gõ command trên Raspberry PI.

 

 

     # gcc -g -o raspberry_app main.c

 

 

- Giờ bạn đã có file thực thi tên là raspberry_app.

 

- Chạy thử nhé, bạn sẽ thấy dòng Hello Raspberry PI được print ra mỗi 1 giây.

 

 

     # ./raspberry_app

 

 

- Copy file thực thi raspberry_app” vào nơi chứa các file binary trên hệ thống.

 

 

     # sudo cp raspbery_app usr/local/bin/

 

 

Bước 3. Tạo service systemd tự động chạy app khi khởi động.

 

 

Giới thiệu về SYSTEMD

 

 

- Systemd là một công cụ với nhiều tính năng trên hệ thống Linux giúp quản lý các tiến trình trên Linux. Ở đây chúng ta sẽ sử dụng service systemd để quản lý app trên Raspberry PI.

 

- Tạo file tên “raspberry.service” chưa nội dung in nghiên dưới đây.

 

 

[Unit]
Description=gateway_app_manager pop service
After=network.target
StartLimitIntervalSec=0l
[Service]
Type=simple
Restart=always
RestartSec=2
User=pi
ExecStart=/usr/bin/sudo /usr/local/bin/
raspberry_app

[Install]
WantedBy=multi-user.target

 

 

- Di chuyển file “raspberry.service” vào thư mục chứ các service khác của hệ thông trên PI.

 

 

     # sudo cp raspberry.service /etc/systemd/system/

 

 

Giải thích nội dung cần thiết trong service “raspberry.service”

 

User=pi

 

=> Khai báo tên user để chạy service này, ở đây mình dùng Raspberry PI nên user của mình là pi.

 

 

ExecStart=/usr/bin/sudo /usr/local/bin/raspberry_app

 

 

=> Ở đây mình muốn chạy app với sudo nên thêm/usr/bin/sudo” vào service.

 

 

=> /usr/local/bin/raspberry_app là vị trí app raspberry_app trên PI của mình. Bạn có thể thay thế bằng đường dẫn khác nếu bạn muốn.

 

Bước 4. Enable service để chạy app lúc khởi động.

 

 

- Sau khi tạo mới hoặc chỉnh sữa một service nào đó chúng ta cần reload lại hệ thống systemd.

 

 

     # sudo systemctl daemon-reload

 

 

- Enable service vừa khởi tạo.

 

 

     # sudo systemctl enable raspberry.service

 

 

- Sau khi enable, hãy reboot Raspberry PI để test xem service có hoạt động không nhé.

 

- Chạy service.

 

     # sudo systemctl start raspberry.service

 

- Kiểm tra trạng thái service, nếu thành công thì kết quả như hình sau.

 

 

    # sudo systemctl status raspberry.service

 

 

 

- Tạm dừng service

 

     # sudo systemctl stop raspberry.service

 

=> Sau khi reboot service sẽ tự động chạy lại.

 

- Không cho phép chạy service cho đến khi được enable lại.

 

     # sudo systemctl disable raspberry.service