Cách chạy script khi boot trên Raspberry Pi

Có rất nhiều lý do khiến bạn muốn chạy script Python, ứng dụng hoặc loại script khác (ví dụ: script Bash) mỗi khi Raspberry Pi boot. Chẳng hạn như bạn có một robot hoặc thiết bị IoT phải sẵn sàng thực hiện một nhiệm vụ ngay khi Raspberry Pi khởi động. Hoặc có thể bạn chỉ muốn có một chương trình cụ thể chạy trong nền mọi lúc và không muốn khởi chạy thủ công vào mỗi phiên.

Có một số cách để tự động khởi động script khi boot Raspberry Pi, nhưng cách dễ nhất là sử dụng crontab, một tính năng lập lịch cũng cho phép bạn đặt script chạy vào những thời điểm cụ thể.

Cách chạy script khi Raspberry Pi boot

1. Chỉnh sửa danh sách crontab bằng cách gõ:

sudo crontab -e

Bạn có thể khởi chạy crontab mà không cần nhập sudo, nhưng nếu làm như vậy, bạn sẽ không thể chạy các script yêu cầu quyền admin. Trên thực tế, bạn nhận được một danh sách các crontab khác nếu bạn không sử dụng sudo, vì vậy đừng quên sử dụng nó.

2. Chọn nano nếu bạn được hỏi về trình soạn thảo.

Chọn nano nếu bạn được hỏi về trình soạn thảo
Chọn nano nếu bạn được hỏi về trình soạn thảo

Một file sẽ mở ra.

3. Thêm một dòng ở cuối file có nội dung như sau:

@reboot python3 /home/pi/myscript.py

Dòng này phải bắt đầu bằng @reboot, nó sẽ chạy nó mỗi khi bạn boot Raspberry Pi. Nếu nó là một script Python, bạn sẽ muốn đặt lệnh để khởi chạy trình thông dịch python hoặc python3, theo sau là đường dẫn đầy đủ đến script Python.

Nếu đó là script Bash hoặc ứng dụng khác, chỉ cần đặt đường dẫn đầy đủ đến nó.

Thêm một dòng ở cuối file
Thêm một dòng ở cuối file

4. Lưu và thoát. Trong Nano, bạn làm điều đó bằng cách nhấn CTRL+X, trả lời Y và nhấn Enter khi được nhắc.

5. Hãy làm cho script có thể thực thi được nếu nó là script Bash. Các script Python sẽ không cần phải thực thi được vì đã có trình thông dịch python. Bạn có thể làm cho bất kỳ script nào có thể thực thi được bằng cách gõ:

sudo chmod a+x FILENAME

Nếu bạn muốn xóa script của mình khỏi crontab, chỉ cần nhập lại sudo crontab -e và xóa hoặc ghi chú dòng đó. Lưu ý rằng, nếu bạn đang xây dựng một dự án không yêu cầu sử dụng môi trường có cửa sổ, bạn có thể tiết kiệm tài nguyên hệ thống bằng cách cấu hình Raspberry Pi để boot vào dòng lệnh bằng cách nhập sudo raspi-config và sau đó điều hướng đến Boot Options > Desktop / CLI và chọn Console Autologin.

Cách tự động chạy script hoặc ứng dụng trong GUI của Raspberry Pi

Nếu bạn muốn chạy script hoặc ứng dụng khi khởi động Raspberry Pi trong GUI, hãy làm theo các bước sau.

1. Tạo một file có tên myapp.desktop (hoặc một tên gì đó khác .desktop) trong thư mục /etc/xdg/autostart/.

sudo nano /etc/xdg/autostart/myapp.desktop

2. Sử dụng bố cục sau trong file myapp.desktop.

[Desktop Entry] Exec=chromium-browser https://www.tomshardware.com

Đặt lệnh và bất kỳ tham số nào trên dòng Exec=. Ví dụ, để trình duyệt Chrome mở ra một trang web, bạn cần nhập “chromium-browser [URL]”. Nếu ứng dụng yêu cầu quyền sudo, bạn có thể đặt sudo trong lệnh Exec.

Đặt lệnh và bất kỳ tham số nào trên dòng Exec=
Đặt lệnh và bất kỳ tham số nào trên dòng Exec=

Để chạy script trong cửa sổ Terminal, hãy sử dụng lxterminal theo sau là tham số --command và dấu ngoặc kép với “/bin/bash -c ‘MYCOMMANDS HERE; /bin/bash”’. Ví dụ, để khởi chạy một script python3 yêu cầu quyền sudo, bạn cần sử dụng:

Exec=lxterminal --command”/bin/bash -c ‘sudo python3 /home/pi/myscript.py; /bin/bash’”

Điều đó sẽ khởi chạy một cửa sổ Terminal trong môi trường có cửa sổ khi boot với script chạy trong đó. Khi script kết thúc (hoặc bạn hủy bỏ nó bằng cách nhấn CTRL+C), cửa sổ Terminal sẽ trở về dấu nhắc. Nếu muốn cửa sổ Terminal tự đóng sau khi hoàn thành script, bạn có thể bỏ qua ;/bin/bash ở cuối.

Chạy một script trong cửa sổ Terminal như thế này có thể hữu ích, bởi vì nếu nó có một script Python với vòng lặp vô tận (chẳng hạn như bạn có một con robot), bạn có thể dễ dàng kết thúc (kill) script bằng cách nhấn CTRL+C. Mặt khác, để kết thúc script, bạn phải tìm tiến trình được mô tả bên dưới.

Kết thúc script

Điều gì sẽ xảy ra nếu bạn muốn dừng script tự động chạy sau khi Raspberry Pi đã khởi động? Nếu script đã chạy xong, nó sẽ biến mất khỏi bộ nhớ, nhưng nếu nó được thiết kế để làm một điều gì đó liên tục, bạn sẽ cần phải tìm kiếm và kết thúc tác vụ.

1. Tìm kiếm script bằng cách sử dụng lệnh ps aux và đặt tên script (hoặc ít nhất là một phần tên) sau grep.

ps aux | grep app.py

Thay thế app.py bằng tên script của bạn. Bạn sẽ thấy một danh sách các số tiến trình.

2. Kết thúc từng số tiến trình bằng lệnh sudo kill -9. Ví dụ:

sudo kill -9 437 sudo kill -9 438
Thứ Ba, 14/07/2020 08:06
51 👨 112
0 Bình luận
Sắp xếp theo