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
Bình luận