Kabukta belirli bir süre için uygulama nasıl çalıştırılır


12

Bir Terminaluygulamanın zorla kapatılmadan ve bu işlemin günlüklerinin yankılanmasından önce bir uygulamanın 30 saniye çalışmasını sağlamak nasıl ve nasıl mümkün olur ?


@JacobVlijm Dilin taşınabilirliği nedeniyle ideal olarak bir kabuk komut dosyası olarak çalışacaktı, çünkü esas olarak kullanım alanı bir CI hizmetidir.
ir-g

1
@ ir-g zaman aşımı komutunu kullanabilirsiniz . örn. zaman aşımı 30s komutu
mcantsin

Yanıtlar:


19

Zaman aşımı komutunu kullanmak isteyebilirsiniz .

timeout -k 10s 30s command

bu komut 30 saniye boyunca çalıştırılır ve 10 saniye sonra hala çalışıyorsa onu öldürür. - Daha fazla seçenek için kılavuz sayfasını kontrol edin.


1
@ ir-g rica ederim. Komut satırında benzer ve kullanımı çok kolay olan watch komutunu da kontrol etmek isteyebilirsiniz .
mcantsin

2
Bu işaretçi için teşekkürler, watchbana çok ilginç bir komut olarak saldırıyor. Kullanışlı gelebilir ...
ir-g

3

İşte iki yol (ancak mcantsin tarafından önerilentimeout komut muhtemelen daha iyidir):

  1. Komutu arka planda başlatın, böylece PID'si kaydedilir $!ve bunu belirtilen süreden sonra öldürmek için kullanabilirsiniz:

    command &
    sleep 30 && kill $!
  2. Komutu başlatın ve öldürmek için pkillveya tuşunu kullanın killall. DİKKAT: Bu, yalnızca bu ada sahip bir komutun çalıştığını varsayar, firefoxörnek olarak kullanıyorum :

    firefox &
    sleep 30 && pkill firefox

"Bu işlemin günlükleri" ile ne demek istediğiniz hakkında hiçbir fikrim yok ama bir işlemin standart hatası ile bir dosyaya kaydedilebilir command 2> logfile.txt.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.