Entr: попытка запуска функции при отслеживании изменений файлов

Версии ESXi старше 5.5 не поддерживают необходимые функции для прохождения гипервизора -через IBPB и IBRS. Подробнее см. в записи базы знаний VMware .

Чтобы смягчить последствия Spectre варианта 2, вам необходимо либо обновить ESXi, либо переключиться на ядро ​​с поддержкой retpoline -.

1
29.08.2019, 00:20
2 ответа

Ответ программистов из entr(https://github.com/eradman/entr/issues/6):«Функция может быть экспортирована в подоболочку, но вы не можете выполнить функцию с помощью внешней программы. Если вы хотите выполнить функции оболочки, вы можете написать такой цикл :"

do_it(){ echo 'Eita!'; }

while true; do
    ls folder1/* folder2/* | entr -pd -s 'kill $PPID'
    do_it
done
0
27.01.2020, 23:30

Конвейер в вашем цикле while выполняется в отдельных подоболочках. Поскольку функция do_itне экспортируется, дочерняя подоболочка справа, которая запускает entr, не знает об этом. Кратчайшим решением было бы экспортировать функцию (bash, которая позволяет это ).

do_it(){ echo Eita!; }
export -f do_it
while true; do ls folder/* more-folder/* | entr -pd do_it; done

Если команда entrхочет выполнить что-то с диска, я бы предложил поместить функцию в файл сценария, а затем указать entrна , что .

файл с именем /path/to/do _it

#!/bin/sh
echo Eita!

убедитесь, что файл является исполняемым:

chmod +x /path/to/do_it

новая командная строка:

while true; do ls folder/* more-folder/* | entr -pd /path/to/do_it; done
2
27.01.2020, 23:30

Теги

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