Як запустити додаток протягом встановленого часу в оболонці


12

Якщо і Як можливо, щоб Terminalзаставити програму запускатися протягом 30 секунд, перш ніж примусово закрити та повторити журнали цього процесу?


@JacobVlijm Ідеально було б працювати як скрипт оболонки через портативність мови, головним чином, оскільки призначена область використання - це послуга CI.
ір-г

1
@ ir-g ви можете використовувати команду timeout . наприклад команда timeout 30s
mcantsin

Відповіді:


19

Можливо, ви хочете скористатися командою timeout .

timeout -k 10s 30s command

яка запустить команду протягом 30-х років і вб'є її через 10 секунд, якщо вона все ще працює. - Перевірте сторінку, щоб отримати більше варіантів.


1
@ ir-g, ласкаво просимо. Ви також можете перевірити команду watch , яка схожа, а також дуже проста у використанні в командному рядку.
mcantsin

2
Дякую за цей вказівник, watchвражає мене дуже цікавою командою. Може стати в нагоді ...
ir-g

3

Ось два способи (але timeoutкоманда, запропонована mcantsin , напевно, краща):

  1. Запустіть команду у фоновому режимі, таким чином зберігається її PID, $!і ви можете використовувати її для вбивства через вказаний час:

    command &
    sleep 30 && kill $!
    
  2. Запустіть команду та використовуйте pkillабо killallвбийте її. ПОПЕРЕДЖЕННЯ. Це передбачає, що працює лише одна команда з цим ім'ям, я використовую firefoxяк приклад:

    firefox &
    sleep 30 && pkill firefox
    

Я не маю поняття, що ви маєте на увазі під "журналами цього процесу", але стандартна помилка процесу може бути збережена у файл із command 2> logfile.txt.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.