Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

Trong Linux, tự động hóa quy trình phụ thuộc rất nhiều vào tập lệnh shell. Điều này liên quan đến việc tạo một tệp chứa một loạt lệnh có thể được thực thi cùng nhau.

Trong bài viết này, chúng ta sẽ bắt đầu với những điều cơ bản về tập lệnh bash bao gồm các biến, lệnh, đầu vào/đầu ra và gỡ lỗi. Chúng ta cũng sẽ xem các ví dụ về từng loại trong quá trình thực hiện.

Hãy bắt đầu. 🚀

Mục lục

  1. Điều kiện tiên quyết
  2. Giới thiệu
  3. Định nghĩa về tập lệnh Bash
  4. Ưu điểm của tập lệnh Bash
  5. Tổng quan về giao diện dòng lệnh và shell Bash
  6. Cách bắt đầu với Bash Scripting
  7. Cách chạy lệnh Bash từ dòng lệnh
  8. Cách tạo và thực thi tập lệnh Bash
  9. Khái niệm cơ bản về tập lệnh Bash

  10. Nhận xét trong tập lệnh bash

  11. Biến và kiểu dữ liệu trong Bash
  12. Đầu vào và đầu ra trong tập lệnh Bash
  13. Các lệnh Bash cơ bản (echo, read, v.v.)
  14. Câu lệnh có điều kiện (if/else)

  15. Vòng lặp và phân nhánh trong Bash

  16. Vòng lặp while
  17. Vòng lặp For
  18. Báo cáo trường hợp
  19. Cách lên lịch tập lệnh bằng cron
  20. Cách gỡ lỗi và khắc phục sự cố tập lệnh Bash
  21. Kết luận
  22. Tài nguyên để tìm hiểu thêm về tập lệnh Bash

Điều kiện tiên quyết

Để làm theo hướng dẫn này, bạn phải có các quyền truy cập sau:

  • Phiên bản Linux đang chạy có quyền truy cập vào dòng lệnh.

Nếu chưa cài đặt Linux hoặc mới bắt đầu, bạn có thể dễ dàng truy cập dòng lệnh Linux thông qua Replit. Replit là một IDE dựa trên trình duyệt nơi bạn có thể truy cập bash shell trong vài phút.

Bạn cũng có thể cài đặt Linux trên hệ thống Windows của mình bằng WSL (Hệ thống con Windows cho Linux). Đây là hướng dẫn cho việc đó.

Giới thiệu

Định nghĩa về tập lệnh Bash

Tập lệnh bash là một tệp chứa một chuỗi lệnh được thực thi bởi dòng chương trình bash theo từng dòng. Nó cho phép bạn thực hiện một loạt hành động, chẳng hạn như điều hướng đến một thư mục cụ thể, tạo thư mục và khởi chạy một quy trình bằng dòng lệnh.

Bằng cách lưu các lệnh này vào tập lệnh, bạn có thể lặp lại cùng một chuỗi các bước nhiều lần và thực thi chúng bằng cách chạy tập lệnh.

Ưu điểm của tập lệnh Bash

Tập lệnh Bash là một công cụ mạnh mẽ và linh hoạt để tự động hóa các tác vụ quản trị hệ thống, quản lý tài nguyên hệ thống và thực hiện các tác vụ thông thường khác trong hệ thống Unix/Linux. Một số ưu điểm của shell script là:

  • Tự động hóa :Tập lệnh Shell cho phép bạn tự động hóa các tác vụ và quy trình lặp đi lặp lại, tiết kiệm thời gian và giảm nguy cơ lỗi có thể xảy ra khi thực thi thủ công.
  • Tính di động :Tập lệnh Shell có thể chạy trên nhiều nền tảng và hệ điều hành khác nhau, bao gồm Unix, Linux, macOS và thậm chí cả Windows thông qua việc sử dụng trình mô phỏng hoặc máy ảo.
  • Tính linh hoạt :Các tập lệnh Shell có khả năng tùy biến cao và có thể dễ dàng sửa đổi để phù hợp với các yêu cầu cụ thể. Chúng cũng có thể được kết hợp với các ngôn ngữ lập trình hoặc tiện ích khác để tạo ra các tập lệnh mạnh mẽ hơn.
  • Khả năng truy cập :Tập lệnh Shell rất dễ viết và không yêu cầu bất kỳ công cụ hoặc phần mềm đặc biệt nào. Bạn có thể chỉnh sửa chúng bằng bất kỳ trình soạn thảo văn bản nào và hầu hết các hệ điều hành đều có trình thông dịch shell tích hợp sẵn.
  • Tích hợp :Tập lệnh Shell có thể được tích hợp với các công cụ và ứng dụng khác, chẳng hạn như cơ sở dữ liệu, máy chủ web và dịch vụ đám mây, cho phép thực hiện các tác vụ quản lý hệ thống và tự động hóa phức tạp hơn.
  • Gỡ lỗi :Tập lệnh Shell rất dễ gỡ lỗi và hầu hết các shell đều có các công cụ gỡ lỗi và báo cáo lỗi tích hợp có thể giúp xác định và khắc phục sự cố nhanh chóng.

Tổng quan về shell Bash và giao diện dòng lệnh

Các thuật ngữ "shell" và "bash" được sử dụng thay thế cho nhau. Nhưng có một sự khác biệt tinh tế giữa hai điều này.

Thuật ngữ "shell" dùng để chỉ một chương trình cung cấp giao diện dòng lệnh để tương tác với hệ điều hành. Bash (Bourne-Again SHell) là một trong những shell Unix/Linux được sử dụng phổ biến nhất và là shell mặc định trong nhiều bản phân phối Linux.

Giao diện shell hoặc dòng lệnh trông như thế này:

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell Shell chấp nhận lệnh từ người dùng và hiển thị kết quả đầu ra

Trong kết quả đầu ra ở trên, zaira@Zaira là dấu nhắc shell. Khi một shell được sử dụng một cách tương tác, nó sẽ hiển thị $ khi nó đang chờ lệnh từ người dùng.

Nếu shell đang chạy bằng root (người dùng có quyền quản trị), lời nhắc sẽ được thay đổi thành # . Dấu nhắc trình bao siêu người dùng trông như thế này:

[root@host ~]#

Mặc dù Bash là một loại shell nhưng cũng có các loại shell khác, chẳng hạn như shell Korn (ksh), shell C (csh) và shell Z (zsh). Mỗi shell có cú pháp và bộ tính năng riêng nhưng tất cả đều có chung mục đích là cung cấp giao diện dòng lệnh để tương tác với hệ điều hành.

Bạn có thể xác định loại shell của mình bằng cách sử dụng ps lệnh:

ps

Đây là đầu ra cho tôi:

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell Kiểm tra loại shell. Tôi đang sử dụng bash shell

Tóm lại, trong khi "shell" là một thuật ngữ rộng dùng để chỉ bất kỳ chương trình nào cung cấp giao diện dòng lệnh thì "Bash" là một loại shell cụ thể được sử dụng rộng rãi trong các hệ thống Unix/Linux.

Lưu ý:Trong hướng dẫn này, chúng ta sẽ sử dụng shell "bash".

Cách bắt đầu với Bash Scripting

Chạy lệnh Bash từ dòng lệnh

Như đã đề cập trước đó, dấu nhắc shell trông giống như thế này:

[username@host ~]$

Bạn có thể nhập bất kỳ lệnh nào sau $ ký và xem kết quả trên thiết bị đầu cuối.

Nói chung, các lệnh tuân theo cú pháp sau:

command [OPTIONS] arguments

Hãy cùng thảo luận về một số lệnh bash cơ bản và xem kết quả đầu ra của chúng. Hãy nhớ theo dõi nhé :)

  • date :Hiển thị ngày hiện tại
zaira@Zaira:~/shell-tutorial$ date
Tue Mar 14 13:08:57 PKT 2023
  • pwd :Hiển thị thư mục làm việc hiện tại.
zaira@Zaira:~/shell-tutorial$ pwd
/home/zaira/shell-tutorial
  • ls :Liệt kê nội dung của thư mục hiện tại.
zaira@Zaira:~/shell-tutorial$ ls
check_plaindrome.sh count_odd.sh env log temp
  • echo :In một chuỗi văn bản hoặc giá trị của một biến tới terminal.
zaira@Zaira:~/shell-tutorial$ echo "Hello bash"
Hello bash

Bạn luôn có thể tham khảo hướng dẫn sử dụng lệnh bằng man lệnh.

Ví dụ:hướng dẫn sử dụng ls trông giống thế này:

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell Bạn có thể xem chi tiết các tùy chọn cho lệnh bằng cách sử dụng man

Cách tạo và thực thi tập lệnh Bash

Quy ước đặt tên tập lệnh

Theo quy ước đặt tên, tập lệnh bash kết thúc bằng .sh . Tuy nhiên, các tập lệnh bash có thể chạy hoàn toàn bình thường mà không cần có sh phần mở rộng.

Thêm Shebang

Tập lệnh Bash bắt đầu bằng shebang . Shebang là sự kết hợp của bash #bang ! theo sau là đường dẫn bash shell. Đây là dòng đầu tiên của kịch bản. Shebang yêu cầu shell thực thi nó thông qua bash shell. Shebang đơn giản là một đường dẫn tuyệt đối đến trình thông dịch bash.

Dưới đây là ví dụ về câu lệnh Shebang.

#!/bin/bash

Bạn có thể tìm thấy đường dẫn bash shell của mình (có thể khác với đường dẫn ở trên) bằng lệnh:

which bash

Tạo tập lệnh bash đầu tiên của chúng tôi

Tập lệnh đầu tiên của chúng tôi nhắc người dùng nhập đường dẫn. Đổi lại, nội dung của nó sẽ được liệt kê.

Tạo một tệp có tên run_all.sh sử dụng vi lệnh. Bạn có thể sử dụng bất kỳ trình soạn thảo nào bạn chọn.

vi run_all.sh

Thêm các lệnh sau vào tệp của bạn và lưu nó:

#!/bin/bash
echo "Today is " `date`
echo -e "\nenter the path to directory"
read the_path
echo -e "\n you path has the following files and folders: "
ls $the_path

Chúng ta hãy nhìn sâu hơn vào từng dòng kịch bản. Tôi đang hiển thị lại cùng một tập lệnh, nhưng lần này có số dòng.

 1 #!/bin/bash
 2 echo "Today is " `date`
 3
 4 echo -e "\nenter the path to directory"
 5 read the_path
 6
 7 echo -e "\n you path has the following files and folders: "
 8 ls $the_path
  • Dòng #1:Sự bùng nổ (#!/bin/bash ) trỏ về đường dẫn bash shell.
  • Dòng số 2:echo lệnh đang hiển thị ngày giờ hiện tại trên thiết bị đầu cuối. Lưu ý rằng date có dấu gạch chéo ngược.
  • Dòng số 4:Chúng tôi muốn người dùng nhập đường dẫn hợp lệ.
  • Dòng số 5:read lệnh đọc đầu vào và lưu nó vào biến the_path .
  • dòng #8:ls lệnh lấy biến có đường dẫn được lưu trữ và hiển thị các tệp và thư mục hiện tại.

Thực thi tập lệnh bash

Để làm cho tập lệnh có thể thực thi được, hãy gán quyền thực thi cho người dùng của bạn bằng lệnh này:

chmod u+x run_all.sh

Đây,

  • chmod sửa đổi quyền sở hữu tệp cho người dùng hiện tại :u .
  • +x thêm quyền thực thi cho người dùng hiện tại. Điều này có nghĩa là người dùng là chủ sở hữu hiện có thể chạy tập lệnh.
  • run_all.sh là tập tin chúng tôi muốn chạy.

Bạn có thể chạy tập lệnh bằng bất kỳ phương pháp nào được đề cập:

  • sh run_all.sh
  • bash run_all.sh
  • ./run_all.sh

Hãy xem nó hoạt động như thế nào 🚀

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

Cơ bản về tập lệnh Bash

Nhận xét bắt đầu bằng # trong kịch bản bash. Điều này có nghĩa là bất kỳ dòng nào bắt đầu bằng # là một nhận xét và sẽ bị người phiên dịch bỏ qua.

Nhận xét rất hữu ích trong việc ghi lại mã và bạn nên thêm nhận xét để giúp người khác hiểu mã.

Đây là những ví dụ về nhận xét:

# This is an example comment
# Both of these lines will be ignored by the interpreter

Biến và kiểu dữ liệu trong Bash

Các biến cho phép bạn lưu trữ dữ liệu. Bạn có thể sử dụng các biến để đọc, truy cập và thao tác dữ liệu trong toàn bộ tập lệnh của mình.

Không có kiểu dữ liệu trong Bash. Trong Bash, một biến có khả năng lưu trữ các giá trị số, ký tự riêng lẻ hoặc chuỗi ký tự.

Trong Bash, bạn có thể sử dụng và đặt giá trị biến theo những cách sau:

  1. Gán giá trị trực tiếp:
country=Pakistan
  1. Gán giá trị dựa trên đầu ra thu được từ một chương trình hoặc lệnh, sử dụng thay thế lệnh. Lưu ý rằng $ được yêu cầu để truy cập vào giá trị của biến hiện có.
same_country=$country

Để truy cập giá trị biến, hãy thêm $ vào tên biến.

zaira@Zaira:~$ country=Pakistan
zaira@Zaira:~$ echo $country
Pakistan
zaira@Zaira:~$ new_country=$country
zaira@Zaira:~$ echo $new_country
Pakistan

Quy ước đặt tên biến

Trong tập lệnh Bash, sau đây là các quy ước đặt tên biến:

  1. Tên biến phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới (_ ).
  2. Tên biến có thể chứa chữ cái, số và dấu gạch dưới (_ ).
  3. Tên biến có phân biệt chữ hoa chữ thường.
  4. Tên biến không được chứa dấu cách hoặc ký tự đặc biệt.
  5. Sử dụng tên mô tả phản ánh mục đích của biến.
  6. Tránh sử dụng các từ khóa dành riêng, chẳng hạn như if , then , else , fi , v.v. làm tên biến.

Dưới đây là một số ví dụ về tên biến hợp lệ trong Bash:

name
count
_var
myVar
MY_VAR

Và đây là một số ví dụ về tên biến không hợp lệ:

2ndvar (variable name starts with a number)
my var (variable name contains a space)
my-var (variable name contains a hyphen)

Việc tuân theo các quy ước đặt tên này giúp làm cho tập lệnh Bash dễ đọc hơn và dễ bảo trì hơn.

Đầu vào và đầu ra trong tập lệnh Bash

Thu thập thông tin đầu vào

Trong phần này, chúng ta sẽ thảo luận về một số phương pháp cung cấp đầu vào cho tập lệnh của chúng ta.

  1. Đọc dữ liệu đầu vào của người dùng và lưu nó vào một biến

Chúng ta có thể đọc dữ liệu đầu vào của người dùng bằng read lệnh.

#!/bin/bash 
echo "What's your name?" 
read entered_name 
echo -e "\nWelcome to bash tutorial" $entered_name

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

  1. Đọc từ một tập tin

Mã này đọc từng dòng từ một tệp có tên input.txt và in nó đến thiết bị đầu cuối. Chúng ta sẽ nghiên cứu các vòng lặp while ở phần sau của bài viết này.

while read line
do
 echo $line
done < input.txt
  1. Đối số dòng lệnh

Trong tập lệnh hoặc hàm bash, $1 biểu thị đối số ban đầu được truyền, $2 biểu thị đối số thứ hai đã được thông qua, v.v.

Tập lệnh này lấy tên làm đối số dòng lệnh và in lời chào được cá nhân hóa.

echo "Hello, $1!"

Chúng tôi đã cung cấp Zaira làm đối số của chúng tôi cho tập lệnh.

#!/bin/bash
echo "Hello, $1!"

Đầu ra:

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

Hiển thị đầu ra

Ở đây chúng ta sẽ thảo luận về một số phương pháp nhận đầu ra từ tập lệnh.

  1. In tới thiết bị đầu cuối:
echo "Hello, World!"

Điều này in dòng chữ "Xin chào, Thế giới!" tới thiết bị đầu cuối.

  1. Ghi vào một tập tin:
echo "This is some text." > output.txt

Điều này viết văn bản "Đây là một số văn bản." vào một tập tin có tên output.txt . Lưu ý rằng > toán tử ghi đè lên một tập tin nếu nó đã có một số nội dung.

  1. Đang thêm vào một tệp:
echo "More text." >> output.txt

Điều này nối thêm văn bản "Thêm văn bản." đến cuối file output.txt .

  1. Chuyển hướng đầu ra:
ls > files.txt

Thao tác này liệt kê các tệp trong thư mục hiện tại và ghi kết quả đầu ra vào tệp có tên files.txt . Bạn có thể chuyển hướng đầu ra của bất kỳ lệnh nào tới một tệp theo cách này.

Các lệnh Bash cơ bản (echo, read, v.v.)

Dưới đây là danh sách một số lệnh bash được sử dụng phổ biến nhất:

  1. cd :Thay đổi thư mục sang vị trí khác.
  2. ls :Liệt kê nội dung của thư mục hiện tại.
  3. mkdir :Tạo một thư mục mới.
  4. touch :Tạo một tập tin mới.
  5. rm :Xóa một tập tin hoặc thư mục.
  6. cp :Sao chép một tập tin hoặc thư mục.
  7. mv :Di chuyển hoặc đổi tên một tập tin hoặc thư mục.
  8. echo :In văn bản tới thiết bị đầu cuối.
  9. cat :Nối và in nội dung của một tập tin.
  10. grep :Tìm kiếm mẫu trong tệp.
  11. chmod :Thay đổi quyền của một tập tin hoặc thư mục.
  12. sudo :Chạy lệnh với đặc quyền quản trị.
  13. df :Hiển thị dung lượng ổ đĩa có sẵn.
  14. history :Hiển thị danh sách các lệnh đã thực hiện trước đó.
  15. ps :Hiển thị thông tin về các tiến trình đang chạy.

Câu lệnh có điều kiện (if/else)

Các biểu thức tạo ra kết quả boolean, đúng hoặc sai, được gọi là điều kiện. Có một số cách để đánh giá các điều kiện, bao gồm if , if-else , if-elif-else và các điều kiện lồng nhau.

Cú pháp :

if [[ condition ]];
then
 statement
elif [[ condition ]]; then
 statement 
else
 do this by default
fi

Chúng ta có thể sử dụng các toán tử logic như AND -a và HOẶC -o để có những so sánh có ý nghĩa hơn.

if [ $a -gt 60 -a $b -lt 100 ]

Hãy xem ví dụ về tập lệnh Bash sử dụng if , if-else , và if-elif-else câu lệnh để xác định xem số do người dùng nhập vào là dương, âm hay bằng 0:

#!/bin/bash
echo "Please enter a number: "
read num
if [ $num -gt 0 ]; then
 echo "$num is positive"
elif [ $num -lt 0 ]; then
 echo "$num is negative"
else
 echo "$num is zero"
fi

Tập lệnh đầu tiên sẽ nhắc người dùng nhập một số. Sau đó, nó sử dụng if câu lệnh để kiểm tra xem số này có lớn hơn 0 hay không. Nếu đúng như vậy, tập lệnh sẽ xuất ra số đó là số dương. Nếu số không lớn hơn 0, tập lệnh sẽ chuyển sang câu lệnh tiếp theo, đó là if-elif tuyên bố. Ở đây, tập lệnh sẽ kiểm tra xem số đó có nhỏ hơn 0 hay không. Nếu đúng như vậy, tập lệnh sẽ xuất ra số âm. Cuối cùng, nếu số không lớn hơn 0 cũng không nhỏ hơn 0 thì tập lệnh sẽ sử dụng else câu lệnh để xuất ra rằng số đó bằng 0.

Chứng kiến nó hoạt động 🚀

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

Vòng lặp và phân nhánh trong Bash

Vòng lặp while

Vòng lặp while kiểm tra một điều kiện và lặp cho đến khi điều kiện đó vẫn còn true . Chúng ta cần cung cấp một câu lệnh đếm để tăng bộ đếm để kiểm soát việc thực thi vòng lặp.

Trong ví dụ bên dưới, (( i += 1 )) là câu lệnh truy cập làm tăng giá trị của i . Vòng lặp sẽ chạy đúng 10 lần.

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
 echo "$i"
 (( i += 1 ))
done

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

Vòng lặp For

for vòng lặp, giống như while vòng lặp, cho phép bạn thực hiện các câu lệnh với số lần cụ thể. Mỗi vòng lặp khác nhau về cú pháp và cách sử dụng.

Trong ví dụ bên dưới, vòng lặp sẽ lặp 5 lần.

#!/bin/bash
for i in {1..5}
do
 echo $i
done

Master Bash Scripting:Hướng dẫn cho người mới bắt đầu về tự động hóa Linux Shell

Báo cáo trường hợp

Trong Bash, các câu lệnh tình huống được sử dụng để so sánh một giá trị nhất định với danh sách các mẫu và thực thi một khối mã dựa trên mẫu đầu tiên khớp. Cú pháp của câu lệnh case trong Bash như sau:

case expression in
 pattern1)
 # code to execute if expression matches pattern1
 ;;
 pattern2)
 # code to execute if expression matches pattern2
 ;;
 pattern3)
 # code to execute if expression matches pattern3
 ;;
 *)
 # code to execute if none of the above patterns match expression
 ;;
esac

Ở đây, "biểu thức" là giá trị mà chúng ta muốn so sánh và "pattern1", "pattern2", "pattern3", v.v. là các mẫu mà chúng ta muốn so sánh với nó.

Dấu chấm phẩy kép ";;" tách từng khối mã để thực thi cho từng mẫu. Dấu hoa thị "*" đại diện cho trường hợp mặc định, sẽ thực thi nếu không có mẫu nào được chỉ định khớp với biểu thức.

Hãy xem một ví dụ.

fruit="apple"
case $fruit in
 "apple")
 echo "This is a red fruit."
 ;;
 "banana")
 echo "This is a yellow fruit."
 ;;
 "orange")
 echo "This is an orange fruit."
 ;;
 *)
 echo "Unknown fruit."
 ;;
esac

Trong ví dụ này, vì giá trị của "trái cây" là "táo" nên mẫu đầu tiên khớp với khối mã lặp lại "Đây là trái cây màu đỏ". được thực thi. Nếu giá trị của "trái cây" thay vào đó là "chuối", mẫu thứ hai sẽ khớp và khối mã vang lên "Đây là trái cây màu vàng". sẽ thực thi, v.v. Nếu giá trị của "trái cây" không khớp với bất kỳ mẫu nào được chỉ định thì trường hợp mặc định sẽ được thực thi, tạo ra "Trái cây không xác định".

Cách lên lịch tập lệnh bằng cron

Cron là một tiện ích mạnh mẽ để lập lịch công việc có sẵn trong các hệ điều hành giống Unix. Bằng cách định cấu hình cron, bạn có thể thiết lập các công việc tự động để chạy hàng ngày, hàng tuần, hàng tháng hoặc thời gian cụ thể. Khả năng tự động hóa do cron cung cấp đóng một vai trò quan trọng trong quản trị hệ thống Linux.

Dưới đây là cú pháp để lên lịch cho cron:

# Cron job example
* * * * * sh /path/to/script.sh

Đây là * s tương ứng là (các) phút (các) giờ (các) ngày (các) tháng (các) ngày trong tuần.

Dưới đây là một số ví dụ về lập lịch công việc định kỳ.

Lịch trình Mô tả Ví dụ 0 0 Chạy tập lệnh vào lúc nửa đêm mỗi ngày0 0 /path/to/script.sh /5 Chạy tập lệnh 5 phút một lần/5 /path/to/script.sh 0 6 1-5 Chạy script lúc 6 giờ sáng từ thứ Hai đến thứ Sáu0 6 1-5 /path/to/script.sh 0 0 1-7 Chạy tập lệnh vào 7 ngày đầu tiên hàng tháng0 0 1-7 /path/to/script.sh 0 12 1 Chạy tập lệnh vào buổi trưa ngày đầu tiên hàng tháng0 12 1 /path/to/script.sh

Sử dụng crontab

crontab tiện ích được sử dụng để thêm và chỉnh sửa các công việc định kỳ.

crontab -l liệt kê các tập lệnh đã được lên lịch cho một người dùng cụ thể.

Bạn có thể thêm và chỉnh sửa cron thông qua crontab -e .

Bạn có thể đọc thêm về công việc trồng ngô trong bài viết khác của tôi ở đây.

Cách gỡ lỗi và khắc phục sự cố tập lệnh Bash

Gỡ lỗi và khắc phục sự cố là những kỹ năng cần thiết đối với bất kỳ người viết kịch bản Bash nào. Mặc dù các tập lệnh Bash có thể cực kỳ mạnh mẽ nhưng chúng cũng có thể dễ xảy ra lỗi và có hành vi không mong muốn. Trong phần này, chúng ta sẽ thảo luận về một số mẹo và kỹ thuật để gỡ lỗi và khắc phục sự cố với tập lệnh Bash.

Đặt set -x tùy chọn

Một trong những kỹ thuật hữu ích nhất để gỡ lỗi tập lệnh Bash là đặt set -x tùy chọn ở đầu tập lệnh. Tùy chọn này kích hoạt chế độ gỡ lỗi, khiến Bash in từng lệnh mà nó thực thi tới thiết bị đầu cuối, trước + ký tên. Điều này có thể cực kỳ hữu ích trong việc xác định lỗi xảy ra ở đâu trong tập lệnh của bạn.

#!/bin/bash
set -x
# Your script goes here

Kiểm tra mã thoát

Khi Bash gặp lỗi, nó sẽ đặt mã thoát cho biết bản chất của lỗi. Bạn có thể kiểm tra mã thoát của lệnh gần đây nhất bằng cách sử dụng $? biến. Giá trị 0 biểu thị thành công, trong khi bất kỳ giá trị nào khác biểu thị lỗi.

#!/bin/bash
# Your script goes here
if [ $? -ne 0 ]; then
 echo "Error occurred."
fi

Sử dụng echo tuyên bố

Một kỹ thuật hữu ích khác để gỡ lỗi các tập lệnh Bash là chèn echo các câu lệnh xuyên suốt mã của bạn. Điều này có thể giúp bạn xác định lỗi đang xảy ra ở đâu và giá trị nào đang được chuyển cho các biến.

#!/bin/bash
# Your script goes here
echo "Value of variable x is: $x"
# More code goes here

Sử dụng set -e tùy chọn

Nếu bạn muốn tập lệnh của mình thoát ngay lập tức khi bất kỳ lệnh nào trong tập lệnh bị lỗi, bạn có thể sử dụng set -e tùy chọn. Tùy chọn này sẽ khiến Bash thoát ra với lỗi nếu bất kỳ lệnh nào trong tập lệnh bị lỗi, giúp việc xác định và sửa lỗi trong tập lệnh của bạn dễ dàng hơn.

#!/bin/bash
set -e
# Your script goes here

Khắc phục sự cố bằng cách xác minh nhật ký

Chúng tôi có thể khắc phục sự cố bằng cách sử dụng tệp nhật ký. Nhật ký được duy trì cho tất cả các công việc theo lịch trình. Bạn có thể kiểm tra và xác minh trong nhật ký xem một công việc cụ thể có chạy như dự định hay không.

Đối với Ubuntu/Debian, bạn có thể tìm thấy cron nhật ký tại:

/var/log/syslog

Vị trí khác nhau đối với các bản phân phối khác.

Tệp nhật ký công việc định kỳ có thể trông như thế này:

2022-03-11 00:00:01 Task started
2022-03-11 00:00:02 Running script /path/to/script.sh
2022-03-11 00:00:03 Script completed successfully
2022-03-11 00:05:01 Task started
2022-03-11 00:05:02 Running script /path/to/script.sh
2022-03-11 00:05:03 Error: unable to connect to database
2022-03-11 00:05:03 Script exited with error code 1
2022-03-11 00:10:01 Task started
2022-03-11 00:10:02 Running script /path/to/script.sh
2022-03-11 00:10:03 Script completed successfully

Kết luận

Trong bài viết này, chúng tôi bắt đầu với cách truy cập terminal và sau đó chạy một số lệnh bash cơ bản. Chúng tôi cũng đã nghiên cứu bash shell là gì. Chúng tôi đã xem xét ngắn gọn việc phân nhánh mã bằng cách sử dụng vòng lặp và điều kiện. Cuối cùng, chúng ta đã thảo luận về việc tự động hóa các tập lệnh bằng cron, sau đó là một số kỹ thuật khắc phục sự cố.

Tài nguyên để tìm hiểu thêm về tập lệnh Bash

Nếu bạn muốn tìm hiểu sâu hơn về thế giới bash script, tôi khuyên bạn nên xem khóa học 6 giờ về Linux này tại freeCodeCamp.

Điều bạn yêu thích nhất mà bạn học được từ hướng dẫn này là gì? Bạn cũng có thể kết nối với tôi trên bất kỳ nền tảng nào trong số này. 📧�

Hẹn gặp lại bạn ở bài hướng dẫn tiếp theo, chúc bạn viết mã vui vẻ 😁

Tín dụng hình ảnh biểu ngữ:Hình ảnh của Freepik

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu