Мне нужен способ заставить процесс сохранять определенный файл открытым навсегда , Вот пример того, что у меня есть до сих пор:
sleep 1000> myfile &
Это работает в течение тысячи секунд, но на самом деле не хочу делать какие-либо сложные инструкции sleep / loop. Этот пост предположил, что cat
- это то же самое, что sleep
для бесконечности. Итак, я попробовал это:
cat> myfile &
Это почти похоже на ошибку, не так ли? Казалось, что это работает из командной строки, но в сценарии подключение к файлу не осталось открытым. Есть еще идеи?
Причина того, что cat> myfile &
работает, заключается в том, что он перенаправляет стандартный ввод в файл.
если вы запустите его с амперсандом (в фоновом режиме), он не получит НИКАКИХ входных данных, включая конец файла, что означает, что он будет вечно ждать и ничего не печатать в выходной файл.
Вы можете получить эквивалентный эффект, за исключением БЕЗ зависимости от стандартного ввода (именно из-за этого он не работает в вашем скрипте), с помощью этой команды:
tail -f /dev/null > myfile &
tail -f myfile
Это «следует» за файлом и выводит любые изменения в файл. Если вы не хотите видеть вывод tail
, перенаправьте вывод на / dev / null
или что-то в этом роде:
tail -f myfile > /dev/null
Вы можете использовать - повторите попытку
вариант, в зависимости от вашего конкретного случая. См. man tail
для получения дополнительной информации.