Việc chạy một lệnh Linux không hề đơn giản như nhiều người thường nghĩ. Bài viết này sẽ giải thích những gì sẽ xảy ra sau khi bạn nhập một lệnh trong terminal.
Hầu hết người dùng Linux không hiểu về hoạt động bên trong của hệ điều hành. Bạn có thể chạy các lệnh Linux trên shell trong một thời gian dài, nhưng bạn đã bao giờ tự hỏi điều gì đang xảy ra khi bạn nhấn phím Enter ?
Bài viết dưới đây sẽ giới thiệu sơ qua về cách shell xử lý lệnh đã nhập trong Linux.
Xử lý lệnh
Khi bạn nhập một lệnh, điều đầu tiên mà shell làm là chia toàn bộ lệnh thành “token” (tạm dịch là mã thông báo). Sau đó, shell sẽ tìm kiếm tên chương trình thuộc token đầu tiên trong dòng lệnh.
Nếu nó không tìm thấy chương trình trong bất kỳ thư mục nào trong đường dẫn tìm kiếm được xác định trong biến môi trường $PATH hoặc trong thư mục cục bộ với toán tử .\, hoặc nó không phải là shell alias hoặc hàm shell, shell sẽ báo lỗi. Nếu nó tìm thấy một lệnh hợp lệ, shell sẽ đi qua từng token khác và quyết định xem đó là một biến, một tham số shell hay một đối số cho lệnh đó.
Nếu shell xác định rằng đó là một biến hoặc một tham số, ví dụ như toán tử ~ cho thư mục chính, shell sẽ mở rộng hoặc thay thế chúng bằng các giá trị ban đầu trong lệnh.
Khi shell đã mở rộng bất kỳ tham số hoặc biến nào, nó sẽ truyền chuỗi lệnh tới lệnh, chạy chương trình với các đối số của nó. Shell không xác định xem có bất kỳ đối số nào là hợp lệ hay không. Đó là việc của lệnh.
Chạy lệnh
Khi shell khởi chạy một lệnh khác, làm thế nào để nó quay lại cùng một lời nhắc (prompt) bạn đã dùng trước đó? Shell tạo ra một bản sao của chính nó, quá trình này được gọi là fork (tạm dịch là phân nhánh). Bản sao của shell này thay thế chính nó bằng lệnh, với tất cả các đối số đã được xử lý từ trước. Đây được gọi là “exec” (viết tắt của execute, nghĩa là thực thi) và quy trình kết hợp được gọi là “fork-and-exec”.
Ví dụ: khi bạn chạy lệnh ls, quá trình shell sẽ tự fork bằng cách sử dụng phương thức fork() và tạo một phiên bản shell khác. Trong số hai tiến trình shell đang chạy trên hệ thống, shell thứ hai sẽ thực thi lệnh ls bằng cách sử dụng hàm exec(), tự chuyển đổi thành một instance của lệnh ls.
Trong lúc đó, shell gốc sẽ đợi lệnh hoàn thành. Đây là lý do tại sao bạn có thể sử dụng job control để tạm ngừng job và để các job chạy ở chế độ nền trong shell.
Báo cáo Trạng thái Thoát
Các lệnh Linux báo cáo chúng có chạy thành công hay không thông qua trạng thái thoát (exit status). Đúng như tên gọi của nó, các chương trình báo cáo trạng thái thoát của chúng khi chúng chạy xong. Chúng làm điều này thông qua biến môi trường $?, chứa trạng thái thoát của lệnh chạy cuối cùng.
Theo quy ước, trạng thái thoát bằng 0 cho biết lệnh đã thực thi thành công, trong khi bất kỳ cái gì không phải là 0 thường có nghĩa là lỗi. Shell của bạn cũng có thể chỉ ra trạng thái thoát khác 0 trên dòng lệnh tùy thuộc vào cách cấu hình lời nhắc của bạn.

Ví dụ, ảnh chụp màn hình ở trên cho thấy một lời nhắc Zsh hiển thị trạng thái thoát lỗi 127 do lệnh không tồn tại.
Bạn đã biết cách hoạt động của các lệnh Linux
Bây giờ bạn đã biết về cách shell Linux xử lý một lệnh, phân nhánh và thực thi chính nó cũng như cách các chương trình báo cáo trạng thái thoát của chúng, bạn có thể sử dụng dòng lệnh hiệu quả hơn.
Nếu có bất kỳ thắc mắc nào, hãy để lại dưới phần bình luận để được giải đáp nhé.
Dịch từ: https://www.makeuseof.com/what-happens-when-you-run-command-linux/
TƯ VẤN: Click Here hoặc Hotline/Zalo 090.29.12.888
=============================
Website không chứa bất kỳ quảng cáo nào, mọi đóng góp để duy trì phát triển cho website (donation) xin vui lòng gửi về STK 90.2142.8888 - Ngân hàng Vietcombank Thăng Long - TRAN VAN BINH
=============================
Nếu bạn không muốn bị AI thay thế và tiết kiệm 3-5 NĂM trên con đường trở thành DBA chuyên nghiệp hay làm chủ Database thì hãy đăng ký ngay KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE, được Coaching trực tiếp từ tôi với toàn bộ bí kíp thực chiến, thủ tục, quy trình của gần 20 năm kinh nghiệm (mà bạn sẽ KHÔNG THỂ tìm kiếm trên Internet/Google) từ đó giúp bạn dễ dàng quản trị mọi hệ thống Core tại Việt Nam và trên thế giới, đỗ OCP.
- CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
- Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
2 khóa học online qua video giúp bạn nhanh chóng có những kiến thức nền tảng về Linux, Oracle, học mọi nơi, chỉ cần có Internet/4G:
- Oracle cơ bản: https://bit.ly/admin_1200
- Linux: https://bit.ly/linux_1200
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
cơ sở dữ liệu, cơ sở dữ liệu quốc gia, database, AI, trí tuệ nhân tạo, artificial intelligence, machine learning, deep learning, LLM, ChatGPT, DeepSeek, Grok, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c/21c/23c/23ai, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, docker, k8s, micro service, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty
