Как установить sysctl с помощью параметра командной строки ядра?

f='/path/to/features[30,55].R'

find. -type f -name DONE \
    -exec sh -c 'echo cp "$1" "$(dirname "$2")"' sh "$f" {} ';'

Это правильный вызов shсо сценарием, который копирует указанный файл в каталог найденного файла DONE.

Удалите echo, как только убедитесь, что он работает правильно.

Как вариант,

find. -type f -name DONE \
    -execdir cp "$f". ';'

... если ваш findимеет -execdir.


Ваш вопрос был тройным:

  1. Ошибка возникает из-за исключения -cиз sh -c, что означает, что shпытался выполнить сценарий с именемcp /Users/perc...(как одно имя ). Он не нашел этот файл.

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

  3. Размещение {}внутри скрипта потенциально опасно или, по крайней мере, может привести к путанице. См., например, Почему Solaris 10 находит / -exec sh -c "echo {}" \; печатать "{}" вместо имен файлов?

При второй попытке файлы DONEбудут перезаписаны содержимым сценария R. Здесь вы также должны указать имя файла R-скрипта (, хотя это не исправит ).

1
25.12.2019, 04:29
1 ответ

Параметры Sysctl можно установить с помощью команды ядра -строки , начиная с версии ядра 5.8 , благодаря Властимилу Бабке из SUSE.

sysctl.*=       [KNL]
                Set a sysctl parameter, right before loading the init
                process, as if the value was written to the respective
                /proc/sys/... file. Both '.' and '/' are recognized as
                separators. Unrecognized parameters and invalid values
                are reported in the kernel log. Sysctls registered
                later by a loaded module cannot be set this way.
                Example: sysctl.vm.swappiness=40
8
18.06.2020, 15:51

Теги

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