1 điểm bởi GN⁺ 2024-07-30 | 1 bình luận | Chia sẻ qua WhatsApp

Triển khai ps aux bằng bash

  • Câu hỏi phỏng vấn: Có thể giả định tình huống sau như một câu hỏi phỏng vấn cho vị trí cần kiến thức về bash/linux

    • Đang dùng shell bash trên một máy truy cập qua SSH, nhưng ở trong tình huống không thể tạo tiến trình mới
    • Câu hỏi đặt ra là sẽ làm gì nếu tất cả PID đều đã được sử dụng
  • Giải pháp: Dùng công cụ này có thể hoạt động như thể bạn có thể dùng lệnh ps aux

    • Không phải lúc nào cũng hoạt động 100% trong mọi tình huống, nhưng vận hành tương tự

Tóm tắt của GN⁺

  • Bài viết này đưa ra một cách thay thế lệnh ps aux trong tình huống không thể tạo tiến trình mới trong shell bash
  • Giải thích cách kiểm tra các tiến trình hệ thống thông qua script bash
  • Cách này có thể không hoạt động hoàn hảo trong mọi tình huống, nhưng có thể hữu ích trong môi trường bị hạn chế
  • Các công cụ khác cung cấp chức năng tương tự gồm có htop hoặc lệnh top

1 bình luận

 
GN⁺ 2024-07-30
Ý kiến trên Hacker News
  • Vấn đề khó nhất trong khoa học máy tính là căn chỉnh cột

    • Ngay cả những hàm trông đơn giản cũng thực sự tốn rất nhiều thời gian
    • Việc viết hàm căn chỉnh cột trong nhiều ngôn ngữ lập trình luôn là điều khó khăn
    • Ngay cả khi dùng f-string và tính năng đệm của Python, mã vẫn trở nên phức tạp và khó đọc
    • Ngay trong lúc viết mã ví dụ cũng phải sửa nhiều lỗi
  • Ví dụ về câu hỏi phỏng vấn đòi hỏi kiến thức liên quan đến bash/Linux

    • Câu hỏi là cách xử lý khi không thể tạo tiến trình mới vì tất cả PID đều đã được sử dụng
    • Kiểm tra các tiến trình đang chiếm không gian PID trong hệ thống tệp /proc/[pid]/
    • kill là lệnh dựng sẵn của bash nên có thể dùng mà không cần tạo tiến trình mới
    • Có thể giải quyết vấn đề bằng cách tìm tiến trình cha rồi dừng nó lại
    • Có thể viết script gọn gàng mà không tạo pipe hay subshell
  • Trải nghiệm phỏng vấn cho vai trò SRE tại một công ty công nghệ lớn của Mỹ vào năm 2011

    • Đó là công ty làm giải pháp thay thế trực tuyến chạy trên trình duyệt cho MS Office
    • Sau buổi phỏng vấn qua điện thoại, ứng viên được giao bài tập viết chương trình thay thế netstat bằng bash
    • Khi đó vì không biết cách tìm thông tin socket trong /proc/, nên đã viết chương trình thay thế psfuser
    • Người phỏng vấn chấp nhận điều đó, và sau đó chuyển sang vòng phỏng vấn trực tiếp
    • Tò mò không biết kịch bản này có dựa trên tình huống thực tế hay không
  • Izabera trên bash@libera là một trong những chuyên gia bash

    • Đã học được rất nhiều điều trong 10 năm qua
  • Ví dụ về mã bash gọn gàng

    • Phần lớn mã bash đều kém hiệu quả, nhưng đây là một ví dụ tốt
  • Câu hỏi về cách xử lý khi không thể tạo tiến trình mới vì tất cả PID đều đã được sử dụng

    • Script bash này không tương thích với POSIX shell
  • Không chạy trên bash 3.2 nhưng hoạt động trên bash 4.2

    • Trong mã ví dụ có lỗi ký tự định dạng của printf
  • Đề xuất một trường hợp sử dụng tốt hơn cho việc liệt kê tiến trình trên hệ thống không cài procps

  • Có thể viết listener và client bằng bash, nhưng trên thực tế thì không được khuyến nghị