Làm cách nào để chạy tập lệnh python liên tục?

Bạn có thể sử dụng bất kỳ chương trình nào bạn muốn chạy khi khởi động; . Chương trình mẫu này sẽ sử dụng gói Espeak gói để làm cho Raspberry pi nói “Chào mừng đến với thế giới Robot”

Nếu bạn chưa cài đặt gói Espeak package installed , run the following in terminal to install:

sudo apt-get install espeak

Để tìm hiểu thêm về cách để Raspberry Pi nói, chúng tôi có hướng dẫn tại đây.

Trong thư mục /home/pi, mở một tệp để chỉnh sửa

sudo nano sample.py

Và nhập đoạn mã sau và lưu lại [nhấn CTRL+X và nhập Y ]

#! /usr/bin/env python
from subprocess import call
call[[‘espeak “Welcome to the world of Robots” 2>/dev/null’], shell=True]

Phương pháp 1. rc. địa phương


Phương pháp đầu tiên để chạy chương trình trên Raspberry Pi của bạn khi khởi động là sử dụng tệp rc. địa phương. Để lệnh hoặc chương trình chạy khi Pi khởi động, bạn có thể thêm lệnh vào rc. tệp cục bộ . Điều này đặc biệt hữu ích nếu bạn muốn cấp nguồn cho Pi của mình ở chế độ không đầu [nghĩa là không có màn hình được kết nối] và để Pi chạy chương trình mà không cần cấu hình hoặc khởi động thủ công.

chỉnh sửa rc. địa phương

Trên Pi của bạn, hãy chỉnh sửa tệp /etc/rc. local bằng trình chỉnh sửa bạn chọn. Bạn phải chỉnh sửa nó với quyền root.

sudo nano /etc/rc.local

Thêm các lệnh để thực thi chương trình python, tốt nhất là sử dụng tham chiếu tuyệt đối của vị trí tệp [ưu tiên đường dẫn tệp đầy đủ]. Nhớ để dòng exit 0 ở cuối, sau đó lưu tệp và thoát. Trong nano, để thoát, hãy nhập Ctrl-x, rồi Y.

Nếu chương trình của bạn chạy liên tục [chạy một vòng lặp vô hạn] hoặc có khả năng không thoát ra, bạn phải đảm bảo rẽ nhánh quá trình bằng cách thêm dấu và [“&”] vào cuối lệnh, chẳng hạn như

sudo python /home/pi/sample.py &

Pi sẽ chạy chương trình này khi khởi động và trước khi các dịch vụ khác được bắt đầu. Nếu bạn không bao gồm dấu và nếu chương trình của bạn chạy liên tục, Pi sẽ không hoàn thành quá trình khởi động của nó. Dấu và cho phép lệnh chạy trong một tiến trình riêng biệt và tiếp tục khởi động với tiến trình chính đang chạy

Bây giờ hãy khởi động lại Pi để kiểm tra

sudo reboot

gợi ý

Ngoài ra, hãy đảm bảo tham chiếu tên tệp tuyệt đối thay vì liên quan đến thư mục chính của bạn. Ví dụ: sử dụng `/home/pi/myscript. py` thay vì `myscript. py`.

Nếu bạn thêm tập lệnh vào /etc/rc. cục bộ, nó được thêm vào trình tự khởi động. Nếu mã của bạn bị kẹt thì trình tự khởi động không thể tiếp tục. Vì vậy, hãy cẩn thận với mã bạn đang cố chạy khi khởi động và kiểm tra mã đó một vài lần. Bạn cũng có thể lấy đầu ra của tập lệnh và lỗi được ghi vào tệp văn bản [giả sử nhật ký. txt] và sử dụng nó để gỡ lỗi

sudo python /home/pi/sample.py & > /home/pi/Desktop/log.txt 2>&1

Phương pháp 2.  . bashrc


Phương pháp thứ hai để chạy chương trình trên Raspberry Pi của bạn khi khởi động là sửa đổi. tệp bashrc. với. bashrc, chương trình python của bạn sẽ chạy khi bạn đăng nhập [xảy ra tự động khi bạn khởi động và truy cập trực tiếp vào màn hình nền] và mỗi khi thiết bị đầu cuối mới được mở hoặc khi kết nối SSH mới được tạo. Đặt lệnh của bạn ở dưới cùng của '/home/pi/. bashrc'. Chương trình có thể bị hủy bỏ với 'ctrl-c' trong khi chương trình đang chạy

sudo nano /home/pi/.bashrc

Chuyển đến dòng cuối cùng của tập lệnh và thêm

________số 8_______

Câu lệnh echo ở trên được sử dụng để chỉ ra rằng các lệnh trong. bashrc được thực thi khi khởi động cũng như kết nối với bảng điều khiển bash

Bây giờ hãy khởi động lại Pi để nghe Pi nói khi khởi động

sudo reboot

Hình ảnh dưới đây cho thấy các lệnh được thêm vào. tệp bashrc được thực thi ngay cả khi mở một thiết bị đầu cuối mới

Phương pháp 3. trong đó. thư mục d



Phương pháp thứ ba để chạy chương trình trên Raspberry Pi của bạn khi khởi động là thêm chương trình [sẽ chạy khi khởi động] vào /etc/init. d thư mục. Thư mục này chứa các tập lệnh được bắt đầu trong quá trình khởi động [ngoài ra, tất cả các chương trình ở đây đều được thực thi khi bạn tắt hoặc khởi động lại hệ thống].

Thêm chương trình sẽ chạy khi khởi động vào init. d bằng cách sử dụng các dòng sau

sudo nano sample.py
0

Di chuyển đến thư mục init và mở tập lệnh mẫu

sudo nano sample.py
1

Thêm các dòng sau vào tập lệnh mẫu để biến nó thành Cơ sở Tiêu chuẩn Linux [LSB] [Một tiêu chuẩn cho cấu trúc hệ thống phần mềm, bao gồm hệ thống phân cấp hệ thống tệp được sử dụng trong Linux operating system] init script.

sudo nano sample.py
2

init. tập lệnh d yêu cầu phải ghi lại các phụ thuộc thời gian chạy ở trên để có thể xác minh thứ tự khởi động hiện tại, thứ tự khởi động bằng cách sử dụng các phụ thuộc này và chạy song song các tập lệnh khởi động để tăng tốc quá trình khởi động.  

Bạn có thể học viết init. d script làm theo hướng dẫn tại đây.

Làm cho tập lệnh mẫu trong thư mục init có thể thực thi được bằng cách thay đổi quyền của nó

sudo nano sample.py
3

Chạy lệnh này

sudo nano sample.py
4

Bây giờ hãy khởi động lại để nghe Pi nói khi khởi động

sudo reboot

Phương pháp 4. HỆ THỐNG


Phương pháp thứ tư để chạy chương trình trên Raspberry Pi của bạn khi khởi động là sử dụng tệp systemd. systemd cung cấp một quy trình chuẩn để kiểm soát chương trình nào chạy khi hệ thống Linux khởi động. Lưu ý rằng systemd chỉ khả dụng trên các phiên bản Jessie của Hệ điều hành Raspbian.

Bước 1– Tạo một tệp đơn vị

Mở tệp đơn vị mẫu bằng lệnh như hình bên dưới

sudo nano sample.py
6

Thêm vào văn bản sau

sudo nano sample.py
7

Bạn nên lưu và thoát trình chỉnh sửa nano

Điều này xác định một dịch vụ mới có tên là “Dịch vụ mẫu” và chúng tôi yêu cầu dịch vụ này được khởi chạy sau khi có sẵn môi trường nhiều người dùng. Tham số “ExecStart” được sử dụng để chỉ định lệnh chúng tôi muốn chạy. “Type” được đặt thành “idle” để đảm bảo rằng lệnh ExecStart chỉ được chạy khi mọi thứ khác đã được tải. Lưu ý rằng các đường dẫn là tuyệt đối và xác định vị trí đầy đủ của Python cũng như vị trí của tập lệnh Python của chúng tôi

Để lưu trữ đầu ra văn bản của tập lệnh trong tệp nhật ký, bạn có thể thay đổi dòng ExecStart thành

sudo nano sample.py
8

Quyền trên tệp đơn vị cần được đặt thành 644

sudo nano sample.py
9

Bước 2 – Định cấu hình systemd

Bây giờ tệp đơn vị đã được xác định, chúng tôi có thể yêu cầu systemd khởi động nó trong trình tự khởi động

#! /usr/bin/env python
from subprocess import call
call[[‘espeak “Welcome to the world of Robots” 2>/dev/null’], shell=True]
0

Khởi động lại Pi và dịch vụ tùy chỉnh của bạn sẽ chạy .

sudo reboot

Phương pháp 5. crontab


Bạn có thể tìm thấy hướng dẫn chi tiết về cách sử dụng crontab để chương trình chạy khi khởi động tại đây.

Bạn có thể sử dụng bất kỳ phương pháp nào trong số này để chạy chương trình của mình khi khởi động miễn là điểm chạy tập lệnh Python của bạn trong trình tự khởi động không quan trọng. Nếu tập lệnh của bạn dựa trên bất kỳ tính năng hệ thống nào khả dụng tại thời điểm đó, chẳng hạn như nmạng đang được kết nối và khả dụng, tthư mục /home/pi . phương pháp d. Các phương thức này kiểm soát điểm khởi động mà tại đó tập lệnh của bạn được thực thi trong khi khởi động. System time has been updated by NTP then it would be ideal to use either systemd or init.d methods.  These methods control the point in bootup at which your script is executed while booting.

Mong muốn của bạn là chỉ huy của tôi

Xem thêm

Bạn đang tìm cách xây dựng một số dự án tuyệt vời với Raspberry Pi và rô-bốt? . Hãy xem trang dự án của chúng tôi để biết thêm ví dụ về các dự án rô-bốt thú vị với Raspberry Pi của bạn

câu hỏi

Bạn có câu hỏi? . Ask away on our forums!

Tìm hiểu thêm

Nếu bạn thích hướng dẫn này, hãy cân nhắc mua Raspberry Pi tại đây và Thẻ SD với Raspbian cho Robot tại đây để tự mình thử

Chủ Đề