Отменить команду команды за 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 и STDIN?
  • routing wget --recursive для stdout (как в -O -), а не файл
  • Как фильтровать stdout программы через grep, все еще контролируя программу?
  • Что такое `& gt; &` в простых терминах?
  • Подавлять сообщения о запуске на stdout?
  • Linux: как перенаправить stdout и stderr в logger?
  • Перенаправление tr stdout в файл
  • Система больше не выводит символы UTF-8
  • Почему опция -v с rm показывает записи с обратным отсчетом и обычной цитатой?
  • `unbuffer` или` stdbuf` для удаления буферизации stdout?
  • Чтение данных из канала в течение определенного времени (в секундах)
  • Linux и Unix - лучшая ОС в мире.