strace
là một công cụ dòng lệnh mạnh mẽ trên Linux dùng để theo dõi các system call và tín hiệu mà một tiến trình thực hiện. Việc sử dụng strace
giúp người quản trị và lập trình viên dễ dàng phân tích hành vi của chương trình, xác định lỗi, hoặc kiểm tra các vấn đề liên quan đến hiệu năng. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng strace Linux để theo dõi và phân tích hệ thống một cách hiệu quả.
Những điểm chính
- Khái niệm: Hiểu rõ
strace
là gì, vai trò của công cụ này trong việc theo dõi và phân tích tiến trình trên hệ điều hành Linux. - Cách cài đặt: Biết cách cài đặt
strace
trên các hệ điều hành Linux phổ biến như Debian/Ubuntu và CentOS/RedHat. - Cách sử dụng để phân tích hệ thống: Nắm được các thao tác cơ bản và nâng cao để theo dõi system call, đếm số lần gọi, theo dõi mạng, tín hiệu, thời gian thực thi và xuất kết quả ra file log.
- Biết thêm Vietnix – Nhà cung cấp dịch vụ lưu trữ đáng tin cậy với tốc độ cao, phù hợp cho cả cá nhân lẫn doanh nghiệp.
- Giải đáp thắc mắc: Giải thích những câu hỏi thường gặp về
strace
giúp bạn dễ dàng ứng dụng công cụ này trong thực tế.
Lệnh strace Linux là gì?
strace
Linux là một công cụ dòng lệnh mạnh mẽ trên hệ điều hành Linux, được sử dụng để theo dõi, phân tích và chẩn đoán các tiến trình đang chạy trong hệ thống. Lệnh này chủ yếu được dùng để debug chương trình, khắc phục sự cố và ghi nhận các lời gọi hệ thống (system call) cũng như tín hiệu (signal) mà tiến trình nhận được.

Trong trường hợp không có mã nguồn, strace
đặc biệt hữu ích vì nó cho phép bạn quan sát cách chương trình tương tác với hệ điều hành. Cụ thể, strace
có thể:
- Debug chương trình và xác định lỗi trong quá trình thực thi.
- Theo dõi và ghi lại tất cả lời gọi hệ thống mà một tiến trình thực hiện.
- Hiển thị các đối số, giá trị trả về và tín hiệu mà tiến trình nhận được.
- Hỗ trợ phân tích tiến trình khi mã nguồn không sẵn có.
Kết quả từ strace
sẽ hiển thị tên lời gọi hệ thống, các đối số truyền vào (trong ngoặc đơn) và giá trị trả về, giúp bạn hiểu rõ cách tiến trình hoạt động và tương tác với hệ thống.
Cách cài đặt lệnh strace Linux
Để sử dụng được strace
trong việc theo dõi và phân tích tiến trình, trước tiên bạn cần cài đặt công cụ này. Việc cài đặt rất đơn giản và có thể thực hiện dễ dàng trên hầu hết các bản phân phối Linux phổ biến hiện nay:
1. Trên Debian/Ubuntu
Với các hệ điều hành dựa trên Debian như Ubuntu, bạn sử dụng lệnh sau để cài đặt:
sudo apt install strace
2. Trên CentOS/RedHat
Đối với hệ điều hành CentOS hoặc RedHat, sử dụng lệnh:
yum install strace
Sau khi cài đặt hoàn tất, bạn có thể kiểm tra phiên bản strace
để đảm bảo công cụ đã được cài đặt thành công bằng lệnh:
strace -V
Cách theo dõi và phân tích hệ thống với lệnh strace Linux
- Xem lời gọi hệ thống, đối số truyền vào và kết quả trả về
- Đếm số lượng lời gọi hệ thống
- Theo dõi các lời gọi hệ thống cụ thể
- Theo dõi các lời gọi hệ thống liên quan đến mạng
- Theo dõi các lời gọi hệ thống liên quan đến tín hiệu (signal)
- In dấu thời gian (timestamp) của từng lời gọi
- In thời gian thực thi của từng lời gọi hệ thống
- In thời gian thực (wall clock) của từng lời gọi hệ thống
- In giá trị thanh ghi instruction pointer (IP)
- Ghi kết quả theo dõi ra file
Lệnh strace
cung cấp nhiều tùy chọn để theo dõi hành vi hệ thống của tiến trình. Dưới đây là các cách sử dụng phổ biến để phân tích hệ thống với strace
:
1. Xem lời gọi hệ thống, đối số truyền vào và kết quả trả về
strace ls
Lưu ý
Ở đây ls
là lệnh cần theo dõi các lời gọi hệ thống.
Như có thể thấy, strace
sẽ hiển thị lời gọi hệ thống, đối số (trong dấu ngoặc đơn) và kết quả trả về của lệnh ls
. Dòng cuối cùng +++ exited with 0 +++
cho biết mã thoát là 0, tức là không có lỗi xảy ra. Trong trường hợp có lỗi, mã thoát sẽ là -1
.
2. Đếm số lượng lời gọi hệ thống
strace -c ls
Lưu ý
Ở đây ls
là lệnh cần theo dõi các lời gọi hệ thống. Kết quả hiển thị số lần mỗi lời gọi hệ thống được thực hiện, tổng số lời gọi và thời gian tiêu tốn cho từng lời gọi.
3. Theo dõi các lời gọi hệ thống cụ thể
strace -e trace=write ls
Lưu ý
Ở đây ls
là lệnh cần theo dõi và write
là tên của lời gọi hệ thống cần theo dõi. Kết quả chỉ hiển thị tên, đối số và kết quả trả về của lời gọi hệ thống write.
4. Theo dõi các lời gọi hệ thống liên quan đến mạng
strace -e trace=network nc -v -n 127.0.0.1 801
Lưu ý
Ở đây nc -v -n 127.0.0.1 801
là lệnh cần theo dõi. network
là nhóm lời gọi hệ thống liên quan đến mạng. Kết quả chỉ hiển thị tên, đối số và kết quả của các lời gọi hệ thống thuộc nhóm network.
5. Theo dõi các lời gọi hệ thống liên quan đến tín hiệu (signal)
strace -e trace=signal nc -v -n 127.0.0.1 801
Lưu ý
Ở đây nc -v -n 127.0.0.1 801
là lệnh cần theo dõi. signal
là nhóm lời gọi hệ thống liên quan đến tín hiệu. Kết quả chỉ hiển thị tên, đối số và kết quả của các lời gọi hệ thống thuộc nhóm signal.
6. In dấu thời gian (timestamp) của từng lời gọi
strace -r ls
Lưu ý
Ở đây ls
là lệnh cần theo dõi. Kết quả hiển thị dấu thời gian tương đối tại thời điểm bắt đầu của từng lời gọi hệ thống. Nó cho biết độ trễ giữa các lời gọi liên tiếp.
7. In thời gian thực thi của từng lời gọi hệ thống
strace -T ls
Lưu ý
Ở đây ls
là lệnh cần theo dõi. Kết quả hiển thị thời gian tiêu tốn cho mỗi lời gọi hệ thống, được in ở cuối mỗi dòng.
8. In thời gian thực (wall clock) của từng lời gọi hệ thống
strace -t ls
Lưu ý
Ở đây ls
là lệnh cần theo dõi. Như có thể thấy, mỗi dòng được tiền tố bằng thời gian thực (wall clock time) của từng lời gọi hệ thống.
9. In giá trị thanh ghi instruction pointer (IP)
strace -i ls
Kết quả hiển thị giá trị của thanh ghi instruction pointer
trên mỗi dòng của đầu ra.
10. Ghi kết quả theo dõi ra file
strace -o output.txt ls
Kết quả theo dõi sẽ được ghi vào file output.txt
thay vì hiển thị trên màn hình.
Vietnix – Nhà cung cấp dịch vụ lưu trữ uy tín, tốc độ cao
Vietnix là nhà cung cấp dịch vụ thuê VPS với hạ tầng mạnh mẽ, 100% SSD, đảm bảo tốc độ truy cập nhanh và ổn định. Đặc biệt, dịch vụ VPS Linux tại Vietnix giúp bạn dễ dàng quản trị, linh hoạt cấu hình và vận hành mượt mà ngay cả với các tác vụ nặng. Hệ thống backup tự động, bảo mật cao và giao diện thân thiện là những điểm nổi bật khiến Vietnix trở thành lựa chọn đáng tin cậy cho doanh nghiệp và cá nhân. Liên hệ ngay để được tư vấn chi tiết!
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Câu hỏi thường gặp
Có thể dùng strace để phát hiện vấn đề tương thích thư viện trong môi trường Docker không?
Có, strace
có thể hỗ trợ phát hiện vấn đề tương thích thư viện trong môi trường Docker, nhưng nó chỉ hiệu quả trong một số tình huống nhất định. Dưới đây là phân tích ngắn gọn:
Khi strace
hữu ích:
– Phát hiện lỗi không tìm thấy thư viện (.so
) do thiếu dependency hoặc sai phiên bản.
– Theo dõi syscall open
, access
, stat
… để xem container đang cố tìm thư viện ở đâu và có bị lỗi không.
– Kiểm tra lỗi phân quyền hoặc sandbox khi container bị giới hạn quyền truy cập thư viện hệ thống.
Giới hạn của strace
:
– Không thể so sánh phiên bản thư viện hoặc kiểm tra ABI compatibility.
– Không thay thế các công cụ như ldd
, ldconfig
, readelf
, hoặc ldd --version
để phân tích phụ thuộc thư viện.
– Trong container có nhiều layer ảo hóa và chroot, việc theo dõi đường dẫn thật có thể khó khăn nếu không dùng đúng namespace/PID.
Có nên dùng strace để theo dõi ứng dụng frontend như Electron hoặc node chạy trên server không?
Có thể dùng strace
để theo dõi ứng dụng frontend như Electron hoặc Node.js, nhưng cần cân nhắc:
Nên dùng khi:
– Ứng dụng gặp lỗi hệ thống (file, mạng, phân quyền).
– Cần phân tích I/O, syscall, hoạt động ở tầng hệ điều hành.
– Debug ứng dụng không có source code.
Không nên dùng khi:
– Muốn theo dõi logic bên trong JavaScript.
– Ứng dụng chạy lâu dài trên production (gây overhead).
– Ứng dụng sinh nhiều tiến trình, log dễ bị nhiễu nếu không lọc kỹ.
Lời kết
Lệnh strace
Linux là công cụ mạnh mẽ giúp bạn theo dõi và phân tích chi tiết các lời gọi hệ thống. Qua việc sử dụng các tùy chọn đa dạng, bạn có thể dễ dàng phát hiện lỗi, tối ưu hiệu suất và hiểu rõ hơn về hoạt động bên trong của ứng dụng. Việc nắm vững cách dùng strace
sẽ là lợi thế lớn trong quản trị hệ thống và phát triển phần mềm. Hy vọng với hướng dẫn chi tiết trong bài, bạn đã có thể áp dụng strace
hiệu quả vào công việc hàng ngày của mình.