Kiểm tra xem tập lệnh python có đang chạy bash không
Các nhiệm vụ lặp đi lặp lại đã chín muồi để tự động hóa. Các nhà phát triển và quản trị viên hệ thống thường tự động hóa các tác vụ thông thường như kiểm tra tình trạng và sao lưu tệp bằng tập lệnh shell. Tuy nhiên, khi các tác vụ đó trở nên phức tạp hơn, các tập lệnh shell có thể trở nên khó bảo trì hơn Show
Trong bài viết này, chúng ta sẽ xem xét các cách khác nhau để thực thi lệnh shell trong Python và tình huống lý tưởng để sử dụng từng phương thức Sử dụng hệ điều hành. hệ thống để chạy một lệnhPython cho phép chúng ta thực thi ngay một lệnh shell được lưu trữ trong một chuỗi bằng cách sử dụng hàm 4. Hãy bắt đầu bằng cách tạo một tệp Python mới có tên là 5 và nhập thông tin sau
Điều đầu tiên chúng tôi làm trong tệp Python của mình là nhập mô-đun 6, chứa hàm 7 có thể thực thi các lệnh trình bao. Dòng tiếp theo thực hiện chính xác điều đó, chạy lệnh 8 trong shell của chúng ta thông qua PythonTrong Terminal của bạn, hãy chạy tệp này bằng cách sử dụng lệnh sau và bạn sẽ thấy đầu ra tương ứng
Vì các lệnh 8 in tới 0 của chúng tôi, nên 4 cũng hiển thị đầu ra trên luồng 0 của chúng tôi. Mặc dù không hiển thị trong bảng điều khiển, nhưng lệnh 4 trả về mã thoát của lệnh shell. Mã thoát bằng 0 có nghĩa là nó chạy mà không có bất kỳ sự cố nào và bất kỳ số nào khác có nghĩa là có lỗi. Bằng cách này, bạn có thể kiểm soát luồng lệnh của mình, kiểm tra kết quả và thử lại hoặc trả về lỗi nếu bất kỳ cuộc gọi nào không thành côngTrong tập lệnh này, chúng tôi tạo hai biến lưu trữ kết quả thực hiện các lệnh thay đổi thư mục thành thư mục chính và thư mục không tồn tại. Chạy file này ta sẽ thấy ________số 8_______Lệnh đầu tiên, thay đổi thư mục thành thư mục chính, thực hiện thành công. Do đó, 4 trả về mã thoát của nó, số 0, được lưu trữ trong 5. Mặt khác, 6 lưu trữ mã thoát của lệnh bash không thành công để thay đổi thư mục thành thư mục không tồn tạiHàm 4 thực thi một lệnh, in bất kỳ đầu ra nào của lệnh ra bàn điều khiển và trả về mã thoát của lệnh. Nếu chúng ta muốn kiểm soát chi tiết hơn đầu vào và đầu ra của lệnh shell trong Python, chúng ta nên sử dụng mô-đun 8Chạy một lệnh với quy trình conMô-đun quy trình con là cách được đề xuất của Python để thực thi các lệnh shell. Nó mang lại cho chúng tôi sự linh hoạt để chặn đầu ra của lệnh shell hoặc xâu chuỗi đầu vào và đầu ra của nhiều lệnh khác nhau, trong khi vẫn cung cấp trải nghiệm tương tự như 4 cho các trường hợp sử dụng cơ bảnTrong một tệp mới có tên là 0, hãy chạy một lệnh với mô-đun 8
Trong dòng đầu tiên, chúng tôi nhập mô-đun 8, là một phần của thư viện chuẩn Python. Sau đó chúng ta sử dụng hàm 3 để thực hiện lệnh. Giống như 4, lệnh 3 trả về mã thoát của những gì đã được thực thiKhông giống như 4, hãy lưu ý cách mà 3 yêu cầu đầu vào là một danh sách các chuỗi thay vì một chuỗi đơn lẻ. Mục đầu tiên của danh sách là tên của lệnh. Các mục còn lại của danh sách là cờ và đối số của lệnhGhi chú. Theo nguyên tắc chung, bạn cần tách các đối số dựa trên khoảng trắng, ví dụ: 8 sẽ là 9, trong khi 0, sẽ là 1. Một ví dụ khác, 2 sẽ là 3, trong khi 4 hoặc 5 sẽ là 6Chạy tệp này và đầu ra của bảng điều khiển của bạn sẽ tương tự như
Bây giờ, hãy thử sử dụng một trong những tính năng nâng cao hơn của 3, cụ thể là bỏ qua đầu ra thành 0. Trong cùng một tệp 0, hãy thay đổi
để này
Đầu ra tiêu chuẩn của lệnh hiện chuyển đến thiết bị 0 đặc biệt, có nghĩa là đầu ra sẽ không xuất hiện trên bảng điều khiển của chúng tôi. Thực thi tệp trong trình bao của bạn để xem đầu ra sau
Nếu chúng ta muốn cung cấp đầu vào cho một lệnh thì sao? Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó Chúng tôi sử dụng 3 với khá nhiều lệnh, hãy xem qua chúng
Chạy cái này tạo ra đầu ra sau
Chúng tôi cũng có thể tăng 0 mà không cần kiểm tra giá trị trả về theo cách thủ công. Trong một tệp mới, 1, hãy thêm mã bên dưới
Trong Terminal của bạn, hãy chạy tệp này. Bạn sẽ thấy lỗi sau 0Bằng cách sử dụng 2, chúng tôi yêu cầu Python đưa ra bất kỳ ngoại lệ nào nếu gặp lỗi. Vì chúng tôi đã gặp lỗi nên câu lệnh 3 ở dòng cuối cùng không được thực thiHàm 3 mang lại cho chúng ta sự linh hoạt to lớn mà hàm 4 không có khi thực thi các lệnh trình bao. Hàm này là sự trừu tượng hóa đơn giản của lớp 6, cung cấp chức năng bổ sung mà chúng ta có thể khám pháChạy lệnh với PopenLớp 6 hiển thị nhiều tùy chọn hơn cho nhà phát triển khi tương tác với trình bao. Tuy nhiên, chúng ta cần nói rõ hơn về truy xuất kết quả và lỗiTheo mặc định, 6 không dừng xử lý chương trình Python nếu lệnh của nó chưa thực thi xong. Trong một tệp mới có tên là 9, hãy nhập nội dung sau 1Mã này tương đương với mã của 0. Nó chạy một lệnh bằng cách sử dụng 6 và đợi nó hoàn thành trước khi thực hiện phần còn lại của tập lệnh PythonGiả sử chúng ta không muốn đợi lệnh shell của mình thực thi xong để chương trình có thể làm việc trên những thứ khác. Làm sao nó biết khi nào lệnh shell đã thực thi xong? Phương thức 2 trả về mã thoát nếu một lệnh đã chạy xong hoặc 3 nếu nó vẫn đang thực thi. Ví dụ: nếu chúng tôi muốn kiểm tra xem 4 đã hoàn thành hay chưa thay vì đợi nó, chúng tôi sẽ có dòng mã sau 2Để quản lý đầu vào và đầu ra với 6 ta cần sử dụng phương thức 6Trong một tệp mới có tên là 7, hãy thêm đoạn mã sau 3Phương thức 6 nhận một đối số 2 được sử dụng để truyền đầu vào cho lệnh trình bao. Phương thức 0 cũng trả về cả 0 và 7 khi chúng được đặtSau khi xem xét các ý tưởng cốt lõi đằng sau 6, giờ đây chúng ta đã đề cập đến ba cách để chạy các lệnh trình bao trong Python. Cùng kiểm tra lại các đặc điểm của chúng để biết phương pháp nào phù hợp nhất với yêu cầu của dự ánCách tiếp cận tốt nhất để chạy các lệnh Shell bằng Python?Nếu bạn cần chạy một hoặc một vài lệnh đơn giản và không phiền nếu đầu ra của chúng được chuyển đến bàn điều khiển, bạn có thể sử dụng lệnh 4. Nếu bạn muốn quản lý đầu vào và đầu ra của lệnh shell, hãy sử dụng 3. Nếu bạn muốn chạy một lệnh và tiếp tục thực hiện công việc khác trong khi nó đang được thực thi, hãy sử dụng 6Đây là bảng có một số khác biệt về khả năng sử dụng mà bạn cũng có thể sử dụng để đưa ra quyết định của mình hệ điều hành. quy trình hệ thống. runsub process. PopenYêu cầu đối số được phân tích cú phápnoyesyesĐợi lệnhyesyesnoGiao tiếp với stdin và stdoutnoyesyesReturnsreturn valueobjectobjectPhần kết luậnPython cho phép bạn thực thi các lệnh shell mà bạn có thể sử dụng để khởi động các chương trình khác hoặc quản lý tốt hơn các tập lệnh shell mà bạn sử dụng để tự động hóa. Tùy thuộc vào trường hợp sử dụng của chúng tôi, chúng tôi có thể sử dụng 4, 3 hoặc 6 để chạy các lệnh bash |