Một Số Signals Thường Dùng Trong Linux

Signals là các thông điệp khác nhau được gởi đến tiến trình nhằm thông báo cho tiến trình một tình huống. Mỗi tín hiệu có thể kết hợp hoặc có sẵn bộ xử lý tín hiệu (signal handler). Signals sẽ ngắt ngang quá trình xử lý của tiến trình, bắt hệ thống chuyển sang gọi bộ xử lý tín hiệu ngay tức khắc. Khi kết thúc xử lý tín hiệu, tiến trình lại tiếp tục thực thi.

1. Một số signals thường dùng trong linux

Tên signal

Số hiệu signal

Miêu tả

SIGHUP 1 Trì hoãn việc kiểm tra trên quản lý terminal hoặc sự dừng của quản lý tiến trình.
SIGINT 2 Được thông báo nếu người sử dụng gửi một tín hiệu ngắt (Ctrl+C).
SIGQUIT 3 Được thông báo nếu người sử dụng gửi một tín hiệu bỏ (Ctrl+D).
SIGFPE 8 Được thông báo nếu một hoạt động thuộc về toán không hợp pháp được thử chạy.
SIGKILL 9 Nếu một tiến trình nhận signal này, nó phải thoát ra ngay lập tức và sẽ không thực hiện các hoạt động làm sạch.
SIGALRM 14 Tín hiệu báo số lần thực hiện (Alarm Clock).
SIGTERM 15 Tín hiệu kết thúc phần mềm (được gửi bởi sigkill theo mặc định).

2. Sử dụng signals với Kill

Trên dịch vụ của bạn, để kiểm tra các signals đang được hỗ trợ, bạn dùng lệnh sau

$ kill -l

Có một vài phương thức trong việc gửi các signal tới một chương trình hoặc một script. Một trong những phương thức phổ biến nhất là cho người sử dụng gõ phím Ctrl +C hoặc phím dừng trong khi một script đang chạy.

Khi bạn nhấn phím Ctrl+C, một SIGINT được gửi tới script và khi mỗi hành động mặc định đã xác định sẽ kết thúc script.

Một ví dụ khác sử dụng bằng cách nhập lệnh trực tiếp từ bàn phím và sử dụng lệnh kill để dừng pid 30906 :

$ ps -xu

$ kill -signal pid

Vd: kill -1 30906

3. Sử dụng signals với Trap

Khi bạn nhấn phím Ctrl+C hoặc phím dừng tại terminal của bạn trong suốt quá trình chạy một chương trình shell, thông thường thì chương trình đó bị ngay lập tức kết thúc, và dòng nhắc lệnh xuất hiện trở lại. Việc này có thể sẽ không luôn luôn làm bạn thích thú. Ví dụ, bạn có thể sẽ để lại hàng loạt các tập tin tạm thời mà không được dọn sạch.

$ trap "rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 2

Khi trap này được thực thi, hai tệp work1$$ và dataout$$ sẽ tự động bị dỡ bỏ nếu signal số 2 được nhận bởi chương trình.

Vì thế nếu người sử dụng ngắt việc thi hành của chương trình thì sau đó trap này được chạy, bạn có thể được đảm bảo chắc chắn rằng hai file này sẽ được dọn sạch sẽ. Lệnh exit mà theo sau bởi rm là cần thiết bởi vì không có nó thì chương trình sẽ tiếp tục chạy tại điểm mà nó dừng lại khi signal được nhận.

Chúc bạn thực hiện thành công!

THAM KHẢO CÁC DỊCH VỤ TẠI VINAHOST

>> SERVER – COLOCATION – CDN giá rẻ

>> Cloud Server giá rẻ – VPS

>> HOSTING

>> EMAIL

>> WEBSITE

>> TÊN MIỀN

Đánh giá bài viết
Was this article helpful?
Đánh giá
Đánh giá bài viết
Đăng ký nhận tin

Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vinahost

    Bài viết liên quan
    Bình luận
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận