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

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

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

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

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

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

  • Будет ли вывод вывода вывода фонового процесса в качестве входного сигнала stdin переднего плана?
  • Отображать вывод на консоль, пока используется grep
  • Как фильтровать stdout программы через grep, все еще контролируя программу?
  • Создайте двухстрочный текстовый файл без записи на stdout
  • tee stdout to stderr?
  • Выход находится в консоли, но не является частью stdout или stderr
  • Tail -f передается через grep, не выводящий в файл, но выводит на консоль
  • Регистрация выходных команд на нескольких серверах ssh
  • 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 
    Linux и Unix - лучшая ОС в мире.