TIP #20: Ứng dụng lệnh time & lệnh timeout

16/03/2020

1. Lệnh time

Được sử dụng để thực thi một lệnh và thống kê thời gian xử lý của lệnh, bao gồm:

  • real: Tổng thời gian lệnh thực thi.
  • user: Thời gian CPU đã dùng trong user space.
  • system: Thời gian CPU đã dùng trong kernel space.

Ví dụ:

$ time sleep 5
  • Tổng thời gian thực hiện lệnh là 5,003s.
  • Thời gian xử lý của CPU ở user space là 0,001s
  • Thời gian xử lý của CPU ở kernel space là 0,003s

Ứng dụng: Mình thường dùng lệnh time trong các vấn đề liên quan đến troubleshooting performance hoặc đo lường kết quả trước và sau khi optimize. Tham khảo bài viết “Tôi đã tối ưu system giúp WordPress nhanh hơn 18 lần như thế nào” để xem cách dùng cụ thể.

2. Lệnh timeout

Giới hạn thời gian thực thi cho một lệnh, nếu quá thời gian, timeout sẽ kill lệnh đấy.

Ví dụ:

# Capture traffic port 80 trên card eth0 trong 10s
$ timeout 10s tcpdump -i eth0 port 80 -n

# ping 5s
$ timeout 5s ping 8.8.8.8

Ứng dụng: timeout mình đã ứng dụng trong 1 số trường hợp:

  • Lập trình Bash Shell: set timeout cho các kết nối đến server khác như ssh, scp, telnet, tcpdump, curl …
  • Khi test performance: ví dụ benchmark network bằng iperf hoặc hping3, trường hợp sợ server bị full băng thông không thể SSH vào ngắt lệnh thì set timeout để lệnh tự exit.

Tham gia vào Group Telegram của nhóm để thảo luận và học hỏi với các thành viên khác: https://t.me/quantrilinux