( sleep 300 ; echo "80" > /sys/class/leds/blue/brightness ) &
Bằng cách đó, tập lệnh của bạn tiếp tục hoặc bạn khôi phục điều khiển ngay lập tức, trong khi tác vụ nền mới của tập lệnh bắt đầu, với hai lệnh: ngủ và lặp lại.
Các lỗi phổ biến đang cố gắng để cung cấp cho một trong hai sleep
hoặc echo
hoặc cả hai &
mà sẽ không làm việc như dự định. Khởi chạy một loạt các lệnh ()
mặc dù sinh ra chúng trong một quy trình shell riêng biệt, sau đó bạn có thể gửi toàn bộ vào nền &
.
Với sự dí dỏm đó, nơi tôi thấy nó tích cực hữu ích. Trong một thiết bị nhúng, tôi phát triển ứng dụng chính hoạt động với cơ quan giám sát. Nếu nó thất bại theo cách kích hoạt thiết lập lại watchdog ngay sau khi khởi động, lặp đi lặp lại, thật khó để khắc phục từ xa vì khoảng thời gian giữa hệ điều hành khởi động và thiết lập lại khá ngắn, không đủ để ssh in và chặn khởi động ứng dụng. Vì vậy, tôi cần một cách để xác định hệ thống khởi động lại quá nhanh và đưa ra độ trễ nếu có, để cho mình thời gian để sửa nó bằng tay.
[ -f /tmp/startdelay ] && sleep 30
touch /tmp/startdelay
( sleep 30 ; rm /tmp/startdelay ) &
[ -f /tmp/noautostart ] && exit 0
start_app
Nếu tôi đăng nhập và thực hiện touch /tmp/noautostart
ứng dụng chính sẽ không bắt đầu. Nếu cơ quan giám sát khởi động, rm /tmp/startdelay
sẽ không được thực hiện và lần sau khi hệ thống khởi động, nó sẽ cho tôi thêm 30 giây để ngăn chặn nó. Nếu không thì khởi động lại sẽ nhanh chóng, không chậm trễ.