SORU
26 Mart 2009, PERŞEMBE


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
3 Ocak 2011, PAZARTESİ


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • ExcelTutorials

    ExcelTutoria

    2 Mayıs 2009
  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011