Tôi có tập lệnh bash gắn kết và ngắt kết nối thiết bị, thực hiện một số thao tác đọc ở giữa. Vì thiết bị rất chậm, kịch bản mất khoảng 15 giây để hoàn thành (việc lắp đặt ít nhất 5-6 giây). Vì việc để thiết bị này được gắn kết có thể gây ra các sự cố khác, tôi không muốn tập lệnh này bị gián đoạn.Tập lệnh Bash: không thể xử lý đúng SIGTSTP
Có nói rằng, tôi có thể xử lý chính xác SIGINT (Ctrl + c), nhưng khi tôi cố gắng xử lý SIGTSTP (Ctrl + z), tập lệnh bị đóng băng. Có nghĩa là tín hiệu bị mắc kẹt nhưng trình xử lý không chạy.
#!/bin/sh
cleanup()
{
# Don't worry about unmounting yet. Just checking if trap works.
echo "Quitting..." > /dev/tty
exit 0
}
trap 'cleanup' SIGTSTP
...
Tôi phải gửi tín hiệu KILL theo cách thủ công. Bất kỳ ý tưởng tại sao điều này đang xảy ra và làm thế nào tôi có thể sửa chữa nó?
Điều đó có ý nghĩa rất nhiều. Vì vậy, nó có vẻ như trừ khi tất cả các tập tin nhị phân bạn thực hiện với kịch bản cũng xử lý^z cách bạn làm, không có cách nào để xử lý đúng^z. Có đúng không? – Ram
Bạn có thể chạy công việc không đồng bộ theo tập hợp và đợi nó. ví dụ: 'setsid cmd & wait' thay vì chỉ' cmd'. –
Dường như làm điều đó. Cảm ơn bạn đã giúp đỡ! Nhưng chỉ tò mò thôi, liệu tiến trình này vẫn không bị dừng lại dưới một phiên mới? – Ram