Zaman aşımı gereksiz gecikme olmadan bash bir komut
Command line command to auto-kill a command after a certain amount of time This answer
öneriyor bash komut uzun süre çalışan bir komut zaman aşımı için 1-hat yöntemi, satır:
( /path/to/slow command with options ) & sleep 5 ; kill $!
Ama bir" komut önceki zaman aşımı. daha bitirebilir "uzun süren verilmiş olabilir. (Hadi bir "genellikle uzun süre çalışan-ama-bazen-hızlı" komutu, ya da aramatlrbsfeğlenmek için.)
Bu yüzden bu şık 1-liner birkaç sorun vardır yaklaşım. İlk, sleep koşullu değil, bu istenmeyen bir zaman dizisi için çekilen bitirmek için alt sınır ayarlar. Ne zaman uyku için 30'lu veya 2 m ya da 5 m bile düşününtlrbsfkomut 2 saniye içinde tamamlanır ve arzu edildiği gibi -. İkinci olarak, kill koşulsuz, bu sıra dışı çalışan bir süreci öldürmek ve ağlamaya devam dener.
Yani...
Bir yolu yokturgenellikle uzun süre çalışan-ama-bazen-hızlı bir zaman aşımı için< . em^"" . tlrbsf ) komut bu
- bir uygulama (diğer soru zaten Perl ve C cevaplar vardır) bash vardır
- iki önceki de sona erecek:tlrbsfprogram sonlandırma, ya da zaman aşımı süresi doldu
- mevcut olmayan/non-çalışan süreçleri öldürmek olmaz (veya isteğe bağlı olarak:şikayetkötü bir ölüm hakkında)
- 1-astar . bir olmak zorunda deÄŸil
- özellik listesi ya da Linux altında çalıştırabilirsiniz
... ve bonus puan için çalışırtlrbsfön planda komut ve herhangi bir "uyku" ya/stdout/stderr stdın gibi arka planda ekstra işlemtlrbsfkomuta yönlendirilebilir, eğer doğrudan çalıştırmak olsaydı aynı mı?
Eğer öyleyse, lütfen kodunuzu paylaşın. Değilse, neden açıklayınız.
Bir süre söz konusu örnek kesmek için harcadım ama bash yeteneklerimin sınırı basıyorum.
CEVAP
Muhtemelen coreutils timeout komutu arıyoruz. Coreutils bir parçası olduğu için, teknik olarak C bir çözümdür, ama yine de coreutils. Daha fazla ayrıntı için info timeout.
İşte size bir örnek:
timeout 5 /path/to/slow/command with options

Nasıl bash komut dosyası zaman farkı h...
Bash komut dosyası zaman damgası değiş...
Bash script kullanarak zaman komut...
Bash bir komut hangi dizin olduÄŸunu...
Bir program olmadığını kontrol bash bi...