Когда Вы используете $()
оболочка выполнит содержание в фигурных скобках как команда.
Нельзя использовать пробелы прежде/после того, как =
символ.
Таким образом, Ваша команда будет как
SNAPSHOT=SnapshotIR$TODAY*.csv
или
SNAPSHOT=SnapshotIR${TODAY}*.csv
PS. Если необходимо сделать некоторые операции с этим, регистрирует на следующем шаге, лучше использовать for
цикл как
for file in SnapshotIR${TODAY}*.csv ; do smth ; done
вызовите в случае, если у Вас есть несколько файлов, соответствующих Вашему шаблону, [ -f ${SNAPSHOT} ]
конструкция возвратит ошибку как:
[ -f f* ] && echo ok
-bash: [: filename: binary operator expected
lsof
ничего не показывает при открытом/dev/fb0
.
Не показывает. В ядро Linux встроена программа эмулятора терминала. Она не проявляется как запущенный процесс с открытыми файловыми дескрипторами. Она располагается поверх буфера кадров и подсистемы событий ввода, для доступа к которым она использует внутренние интерфейсы ядра. Системам прикладного режима она представляется как серия виртуальных терминалов ядра, /dev/tty1
и так далее.
Одной из таких систем прикладного режима является, конечно, система getty
+login
, которая может быть настроена на работу с этими виртуальными терминалами ядра и (как вы обнаружили) работает по умолчанию. Вы можете легко избавиться от процессов getty
, используя документированные механизмы systemd.
В старой системе System 5 init
каждый getty
был записью в /etc/inittab
. В системе BSD init
каждый getty
- это запись в /etc/ttys
. В системе systemd все немного косвеннее.
logind
, знает о вещах, которые на сленге systemd называются "местами". Нулевое "место" - это место с первичным фреймбуфером и всеми этими виртуальными терминалами ядра. logind
пытается запустить N служб systemd, названных autovt@tty1.service
до autovt@ttyN.service
. Значение N задается в параметре NAutoVTs
в /etc/systemd/logind.conf
. autovt@.service
. Параметром шаблона, как и выше, является имя устройства в файле устройств виртуального терминала ядра в /dev/
. autovt@.service
в конфигурации по умолчанию является символической ссылкой на getty@.service
. getty@.service
описывает запуск программы getty
, настроенной на выполнение ввода/вывода через файл устройства виртуального терминала ядра. Чтобы остановить все это, зайдите в /etc/systemd/logind.conf
и настройте logind
не автозапускать никакие autovt
сервисы (и не резервировать никакие виртуальные терминалы, если вы хотите тщательно разобраться).
Однако это еще не все. Программа эмулятора терминала все еще активна в ядре, и все - от сообщений журнала, направляемых на VT ядра, до регулярного мигания курсора - будет заставлять эмулятор терминала вмешиваться в работу с фреймбуфером. Но это вопрос для кодирования программы, которая у вас есть, которая использует фреймбуфер для переговоров с программой эмулятора терминала ядра, на который уже был дан ответ здесь.
Вход в систему через последовательную консоль происходит совсем другим путем, кстати. Генератор generator создает экземпляр блока шаблонов serial-getty@.service
во время загрузки, инстанцируя его один раз для каждого устройства консоли ядра, которое он находит или о котором ему сообщают.
logind.conf
. systemd manual pages. freedesktop.org. systemd-getty-generator
. страницы руководства systemd. freedesktop.org.