предотвращать доступ файловой системы при передаче информации в программы и из них

Я написал основной сценарий, который вызывает системную программу десятки тысяч раз. Основной скрипт создает и предоставляет этой программе входной файл для каждого вызова. По завершении программа создает выходной файл, который считывается главным скриптом. Программа запускается с помощью: program inputFile outputFile

Основной скрипт работает медленно, и я считаю, что это связано с большими накладными расходами I / 0, возникшими при запуске program .

Можно ли запустить эту программу без записи или чтения на диск?

Обратите внимание, что как inputFile и outputFile могут содержать несколько строк. Внутренние части программы могут быть изменены, но я бы предпочел не делать этого. К сожалению, я не мог найти соответствующие рекомендации в другом месте.

  • Как я могу дифференцировать диск ввода-вывода, явно выполняемый пользователем и предварительной выборкой ОС?
  • Ошибка ввода / вывода, не может установить ничего
  • vmstat IO stats: почему высокий бо во время загрузки?
  • Плохое IO из-за заказа LUKS / Software RAID / LVM?
  • Как iotop вычисляет относительную активность ввода-вывода?
  • Как ядро ​​отправляет запросы ввода-вывода на жесткий диск?
  • Мониторинг температуры / IO привода NVMe
  • I / O приносит машину на колени
  • One Solution collect form web for “предотвращать доступ файловой системы при передаче информации в программы и из них”

    Это может зависеть от того, что делает ваш скрипт с выходом из program . Если вы делаете что-то сложное, которое требует обработки файла несколько раз, вам может быть не повезло. (Назовем это «нулевой точкой».)

    Во-первых, проверьте, можно ли напрямую и недвусмысленно сказать, что программа может записать свой вывод на стандартный вывод вместо именованного файла. Некоторые программы интерпретируют аргумент просто тире ( - ) для обозначения стандартного ввода или стандартного вывода, если это необходимо. Поэтому постарайтесь

     program inputFile - |  ваша обработка
    

    Во-вторых, попробуйте то же самое с /dev/stdout качестве имени выходного файла:

     программа inputFile / dev / stdout |  ваша обработка
    

    В-третьих, попробуйте именованный канал:

     myFifo = $ (Mktemp)
     program inputFile "$ myFifo" &
     ваша обработка <"$ myFifo"
     rm "$ myFifo"
    
    Linux и Unix - лучшая ОС в мире.