Держать файл открытым навсегда в скрипте bash

Мне нужен способ заставить процесс сохранять определенный файл открытым навсегда , Вот пример того, что у меня есть до сих пор:

sleep 1000> myfile &

Это работает в течение тысячи секунд, но на самом деле не хочу делать какие-либо сложные инструкции sleep / loop. Этот пост предположил, что cat - это то же самое, что sleep для бесконечности. Итак, я попробовал это:

cat> myfile &

Это почти похоже на ошибку, не так ли? Казалось, что это работает из командной строки, но в сценарии подключение к файлу не осталось открытым. Есть еще идеи?

11
задан Community 23 May 2017 в 10:30
поделиться

2 ответа

Причина того, что cat> myfile & работает, заключается в том, что он перенаправляет стандартный ввод в файл.

если вы запустите его с амперсандом (в фоновом режиме), он не получит НИКАКИХ входных данных, включая конец файла, что означает, что он будет вечно ждать и ничего не печатать в выходной файл.

Вы можете получить эквивалентный эффект, за исключением БЕЗ зависимости от стандартного ввода (именно из-за этого он не работает в вашем скрипте), с помощью этой команды:

tail -f /dev/null > myfile &
8
ответ дан 3 December 2019 в 04:12
поделиться
tail -f myfile

Это «следует» за файлом и выводит любые изменения в файл. Если вы не хотите видеть вывод tail , перенаправьте вывод на / dev / null или что-то в этом роде:

tail -f myfile > /dev/null

Вы можете использовать - повторите попытку вариант, в зависимости от вашего конкретного случая. См. man tail для получения дополнительной информации.

0
ответ дан 3 December 2019 в 04:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: