Отменить команду команды за t секунд

Я работаю над некоторыми сценариями пакета, включающими следующее:

  • Запустите некоторые не-завершающие подпроцессы (асинхронно)
  • Подождите t секунд
  • Выполните другую задачу X в течение некоторого времени
  • Завершить подпроцессы

В идеале я хотел бы отличать выходы субпроцессов, которые были испущены до X, от того, что было выпущено после X.

Несколько идей приходят на ум, хотя я понятия не имею, как я их реализую:

  • Отменить stdout за t секунд
  • Вставьте некоторый текст (например, «Запуск задачи X»), чтобы визуально отделить разделы
  • Разделить stdout на различные выходные потоки

One Solution collect form web for “Отменить команду команды за t секунд”

Хотя вы можете усложнить этот вопрос с помощью exec и дополнительных попыток дескриптора файла , ваше второе предложение является самым простым. Перед запуском X echo строку маркера в файл журнала.

Все эти команды будут добавляться к одному и тому же файлу, поэтому, возможно, было бы неплохо добавить весь вывод X с маркером, чтобы вы могли отличить его от одной из предыдущих команд. Что-то вроде:

 { X; } | sed 's,^,[X say] ,' 

Это значительно облегчило бы дальнейший анализ. Это не безопасно и для очень многословных программ, условия гонки часто бывают.

Если вы захотите воспользоваться возможностью ломать одну строку журнала и можете прервать первую партию приложений без последствий, это тоже сработает:

 { Y; } >> log & sleep $t kill -STOP %% # last job, like the same as %1 echo -e "\nX started" >> log kill -CONT %% { X; } >> log2 
  • Объединить два результата команды в одну строку при перенаправлении stdout
  • Возможно ли создать липкое перенаправление из stdout / stderr
  • Отображать вывод на консоль, пока используется grep
  • Использование тайм-аута GNU при перенаправлении stdout в файл
  • Перенаправление stderr скрипта Ruby не работает должным образом
  • vimdiff для сравнения вывода вместо файлов
  • Проблемы с перенаправлением вывода приложения в файл журнала
  • Подавить предупреждение версий rbenv, если рубины не установлены
  • `docker logs foo | less` не доступен для поиска или прокрутки, но `docker logs foo 2> & 1 | меньше` является
  • Как ограничить количество строк выходом команды в bash?
  • Как перенаправить ошибку в файл?
  • Могу ли я читать и писать в тот же файл в Linux, не перезаписывая его?
  • Linux и Unix - лучшая ОС в мире.