Tôi có thể chạy tập lệnh bash trong python không?

Một quy trình là một chương trình đang thực thi được xác định bởi một PID duy nhất (số nhận dạng quy trình). Để xem thông tin về các quy trình của bạn, với PID và trạng thái được liên kết của chúng, hãy nhập

Một quy trình có thể được chạy ở nền trước, trong nền hoặc bị treo. Hầu hết các công việc Linux được chạy ở nền trước;

Một số quy trình mất nhiều thời gian để chạy và giữ thiết bị đầu cuối. Tạo nền cho một quá trình dài có tác dụng là dấu nhắc UNIX được trả về ngay lập tức và các tác vụ khác có thể được thực hiện trong khi quá trình ban đầu tiếp tục thực hiện

Các tiến trình đang chạy trong nền

Để tạo nền tảng cho một quy trình mới, hãy nhập

[1] Suspended sleep 600
[2] Running firefox
[3] Running matlab
4 vào cuối dòng lệnh khi chương trình được thực thi. Ví dụ: lệnh
[1] Suspended sleep 600
[2] Running firefox
[3] Running matlab
5 đợi một số giây nhất định trước khi tiếp tục. Loại

Thao tác này sẽ đợi 10 giây trước khi trả về dấu nhắc lệnh

[1] Suspended sleep 600
[2] Running firefox
[3] Running matlab
6. Cho đến khi dấu nhắc lệnh được trả về, bạn không thể làm gì ngoại trừ chờ đợi

Để chạy

[1] Suspended sleep 600
[2] Running firefox
[3] Running matlab
5 trong nền, hãy nhập

[1] Suspended sleep 600
[2] Running firefox
[3] Running matlab
4 chạy công việc ở chế độ nền và trả về lời nhắc ngay lập tức, cho phép bạn chạy các chương trình khác trong khi chờ chương trình đó kết thúc. Tất nhiên, việc chạy
[1] Suspended sleep 600
[2] Running firefox
[3] Running matlab
5 ở chế độ nền sẽ đánh bại mục đích của chương trình cụ thể này, nhưng bạn hiểu ý

Dòng đầu tiên trong ví dụ trên được nhập bởi người dùng; . Người dùng được thông báo về số công việc (được đánh số từ 1) được đặt trong dấu ngoặc vuông, cùng với PID và được thông báo khi quá trình nền kết thúc. Nền tảng hữu ích cho các công việc sẽ mất nhiều thời gian để hoàn thành hoặc để bắt đầu các chương trình đồ họa mà bạn muốn chạy cùng với dòng lệnh

Tạo nền cho một quy trình tiền cảnh

Tại dấu nhắc, gõ

Điều này sẽ không trở lại lời nhắc trong 10 phút. Bạn có thể tạm dừng tiến trình đang chạy ở phía trước bằng cách gõ

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
0, i. e. giữ phím “control” và gõ “z”. Điều này đã đình chỉ công việc. Để đặt nó ở chế độ nền, hãy nhập

Ghi chú. không chạy nền các chương trình dựa trên thiết bị đầu cuối yêu cầu tương tác của người dùng e. g.

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
1 hoặc
$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
2

Quy trình niêm yết

Khi một quy trình đang chạy, ở chế độ nền hoặc bị treo, quy trình đó sẽ được nhập vào danh sách cùng với số công việc. Để kiểm tra danh sách này, gõ

Một ví dụ về danh sách công việc có thể là

[1] Suspended sleep 600
[2] Running firefox
[3] Running matlab

Để khởi động lại (nền trước) một tiến trình bị treo hoặc nền, hãy nhập

Ví dụ: để đưa

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
3 lên nền trước, hãy nhập

Nhập

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
4 không có số công việc ở phía trước quy trình bị tạm dừng hoặc chạy nền gần đây nhất

Giết một tiến trình

Đôi khi cần phải tắt một tiến trình (ví dụ: khi một chương trình đang thực thi nằm trong một vòng lặp vô hạn). Để tắt một công việc đang chạy ở nền trước, hãy nhập

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
5 ([control]-[c]. Ví dụ, chạy

Để tắt một quá trình bị treo hoặc nền, hãy nhập

Ví dụ, chạy

Nếu

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
6 là công việc số 4, hãy nhập

Để kiểm tra xem điều này có hiệu quả hay không, hãy kiểm tra lại danh sách công việc để xem quy trình đã bị xóa chưa

Ngoài ra, bất kỳ quy trình nào do người dùng sở hữu (không chỉ một quy trình được khởi chạy từ thiết bị đầu cuối đó) đều có thể bị hủy bằng cách tìm số ID (PID) tương ứng của quy trình và sử dụng

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
7

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps

Để tắt quá trình

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
8, gõ

và sau đó gõ lại

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
9 để xem nó đã bị xóa khỏi danh sách chưa

Nếu vì lý do nào đó, một quy trình mà bạn sở hữu không bị hủy, bạn có thể thử sử dụng tùy chọn

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
20, tôi. e. loại

Ghi chú. Không thể tắt quy trình của người dùng khác, trừ khi bạn là “siêu người dùng” trên máy tính đó

Tổng hợp các câu lệnh để tương tác với các tiến trình đang chạy

Chỉ huy

Nghĩa

chỉ huy &

chạy lệnh trong nền

^c

giết công việc đang chạy ở phía trước

^z

đình chỉ công việc ở phía trước

bg

bối cảnh công việc hiện đang bị đình chỉ

việc làm

liệt kê các công việc hiện tại được khởi chạy từ trình bao này

fg 1

công việc tiền cảnh số 1

giết %1

giết công việc số 1

ps

liệt kê các quy trình hiện tại

giết 26152

quá trình giết số 26152

Tập lệnh Bash

Khái niệm cơ bản về Bash shell scripting

  • Dòng đầu tiên của tệp shell script phải bao gồm dòng

    để chỉ ra rằng nội dung tập lệnh sẽ được thực thi bởi trình bao Bash. Dòng này hoạt động trên hệ thống Linux và OS X;

  • Các dòng bắt đầu bằng ký tự

    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    21 được hiểu là nhận xét (ngoại trừ dòng đầu tiên)

Ví dụ, hãy xem xét đoạn script sau

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
2

Cấu trúc của ví dụ này phải rõ ràng so với các ví dụ ngắn trước đó, ngoại trừ có một vài ngoại lệ đáng chú ý

  • Chúng tôi thực hiện số học. các thao tác này phải có dạng

    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    22

  • Chúng tôi sử dụng toán tử “mô-đun”,

    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    23. Các toán tử số học được phép khác bao gồm
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    24,
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    25,
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    26 và
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    27

  • We perform the logical “equality” operation via

    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    28. The inequality logical operation is
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    29. The mathematical <, ≤, > and ≥ operators are given by
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    30,
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    31,
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    32 and
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    33, respectively.

  • Các hoạt động logic Bash có thể được thực hiện bằng cách sử dụng tiêu chuẩn

    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    34 (và),
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    35 (hoặc) và
    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    36 (không)

  • Các đối số của hàm được truyền vào sau tên hàm;

Tập lệnh Python

Khái niệm cơ bản về tập lệnh shell Python

  • Dòng đầu tiên của tệp shell script có thể bao gồm dòng

    để chỉ ra rằng nội dung tập lệnh sẽ được thực thi bởi trình bao Python. Một lần nữa, dòng trên có thể sử dụng được trên các máy Linux và OS X và không áp dụng cho Windows

  • Các dòng bắt đầu bằng ký tự

    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    21 được hiểu là nhận xét (ngoại trừ dòng đầu tiên)

Như một ví dụ dài hơn (tương tự như ví dụ Bash ở trên), hãy xem xét đoạn mã sau (trong

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
38)

$ sleep 1000 &
$ ps

  PID TTY          TIME CMD
32093 ?        00:00:00 sshd
32094 pts/3    00:00:00 bash
32259 pts/3    00:00:00 sleep
32260 pts/3    00:00:00 ps
3

Như với ví dụ Bash trước, cấu trúc của ví dụ này phải rõ ràng so với các giải thích trước đó, ngoại trừ có một vài ngoại lệ đáng chú ý

  • We perform the logical “equality” operation via

    $ sleep 1000 &
    $ ps
    
      PID TTY          TIME CMD
    32093 ?        00:00:00 sshd
    32094 pts/3    00:00:00 bash
    32259 pts/3    00:00:00 sleep
    32260 pts/3    00:00:00 ps
    
    39. The inequality logical operation is
    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    40. Similarly,
    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    41,
    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    42,
    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    43 and
    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    44 correspond to the the mathematical <, ≤, > and ≥ operators.

  • Các hoạt động logic Python có thể được kết hợp bằng cách sử dụng

    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    45,
    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    46 và
    [1] Suspended sleep 600
    [2] Running firefox
    [3] Running matlab
    
    47 (tự giải thích)

    Python có thể thay thế tập lệnh bash không?

    Python không nên thay thế tất cả các lệnh bash. Việc viết các chương trình Python hoạt động theo kiểu UNIX (nghĩa là đọc ở đầu vào tiêu chuẩn và ghi vào đầu ra tiêu chuẩn) cũng mạnh mẽ như viết các thay thế Python cho các lệnh shell hiện có, chẳng hạn như cat và sort

    Tôi có thể chạy bash trong sổ ghi chép Jupyter không?

    Nhân R và Bash Jupyter . Nếu bạn cài đặt hạt nhân R và Bash Jupyter, bạn sẽ có thể sử dụng Jupyter Notebook làm sổ ghi chép cho các đường dẫn bằng một trong hai ngôn ngữ này .

    Python có tốt cho shell scripting không?

    Python là ngôn ngữ lập trình hiệu quả cao được sử dụng để lập trình cho mục đích chung . Bash không phải là ngôn ngữ lập trình, nó là trình thông dịch dòng lệnh. Bash là phần mềm thay thế cho vỏ Bourne ban đầu. Python là ngôn ngữ dễ dàng, đơn giản và mạnh mẽ.

    Tôi có nên sử dụng bash hoặc Python cho tập lệnh không?

    Nếu bạn định viết một tập lệnh phải di động được, hãy sử dụng Python . Nếu bạn cần thư viện để làm một cái gì đó phức tạp, hãy sử dụng Python. Bạn nên chọn Bash cho các tập lệnh chủ yếu dùng làm chất kết dính cho các lệnh dòng lệnh trên hệ thống Unix hoặc Linux. Đó là những gì Bash được thiết kế cho.