Nếu bạn đã tạo một ứng dụng Qt - hoặc bất kỳ ứng dụng nào khác - cho Raspberry Pi 4, bạn thường muốn ứng dụng được gọi ngay sau khi khởi động lại Raspberry sau khi ứng dụng đã hoàn tất.
Điều này thường được thử với các tập lệnh bắt đầu có thể được nhập ở nhiều nơi khác nhau.
Tuy nhiên, sẽ hợp lý hơn khi thiết lập điều này thông qua systemd . Tôi đã sử dụng hình ảnh raspbian-buster-lite và cài đặt Qt như được mô tả trong Qt trên Raspberry Pi 4 làm điểm khởi đầu.
Ứng dụng Qt nằm trong thư mục "/home/pi/application" và được đặt tên là "application_one" trong ví dụ này.
Tạo tệp .service
Điều đầu tiên cần làm là tạo tệp .service trong thư mục "/etc/systemd/system":
sudo nano application_one.service
Sau đây hiện được nhập vào đây:
[Unit]
Description=Qt application autostart
After=graphical.target
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/application
ExecStart=/home/pi/application/application_one
[Install]
WantedBy=multi-user.target
Các mục thực sự tự giải thích. Ứng dụng "application_one" (ExecStart = / home / pi / application / application_one) được bắt đầu với tài khoản người dùng "pi" (User=pi). Mục "After = network-online.target" vẫn nói rằng ứng dụng được khởi động cho đến khi kết nối mạng được thiết lập.
</:code2:></:code1:>
Làm cho dịch vụ được hệ thống biết đến
Sau đó, bạn phải nói với hệ thống rằng dịch vụ mới sẽ hoạt động:
sudo systemctl enable application_one.service
Sau đó thực hiện khởi động lại và ứng dụng sẽ tự động khởi động.
</:code3:>
Ứng dụng không khởi động?
Nếu ứng dụng không tự động khởi động, bạn có thể đăng nhập bằng
sudo systemctl status application_one.service
Hiển thị trạng thái và sử dụng thông tin để khắc phục sự cố. </:code4:>