Если вы не состоите в браке с sed, это хорошая работа для perl: здесь я также предоставляю возможность указать, какие слова вы хотите поменять местами
, если "файл" содержит
I 4want5to%change
#One two three four
Spring&summer^winter
Затем эта команда
$ perl -lnse '
BEGIN {
$i = ($first - 1) * 2;
$j = ($second - 1) * 2;
}
@tokens = /([[:alpha:]]*)([^[:alpha:]]*)/g;
($tokens[$i], $tokens[$j]) = ($tokens[$j], $tokens[$i]);
print join "", @tokens;
' -- -first=1 -second=3 file
выводит
to 4want5I%change
two#One three four
winter&summer^Spring
Настройки Sysctl хранятся в ядре. Эти настройки влияют на поведение ядра; по сути, это переменные ядра, которые программы, работающие в системе, могут читать и записывать.
Когда ядро загружается, каждый параметр sysctl имеет значение по умолчанию. Это значение может быть изменено в любое время программой, например, командой sysctl
, или, в Linux, путем записи в соответствующий файл в /proc/sys
.
Файл /etc/sysctl.conf
не определяет значение настроек во время выполнения. Он используется только во время загрузки, чтобы изменить некоторые настройки по сравнению со значением по умолчанию, скомпилированным в ядро. Если вы внесли некоторые изменения в /etc/sysctl.conf
, вы можете применить их в целом, перезапустив "службу" sysctl - служба sysctl не соответствует запущенному процессу, это псевдослужба, которая просто загружает настройки в ядро при его запуске.
Если вы хотите изменить настройки так, чтобы значение сохранялось при перезагрузках, добавьте их в /etc/sysctl.conf
. Чтобы временно применить настройку или опробовать ее, используйте sysctl
или echo ... >/proc/sys/...
.
How to know each parameter if it is dynamic or static?
Все параметры ядра в sysctl
являются динамическими. Когда вы проверяете число в зависимости от версии вашего ядра sysctl -a | wc -l
, оно должно быть больше 1000.
Для чтения значений у вас есть несколько интеллектуальных опций:
sysctl net.ipv4.ip_forward # display specific parameter
sysctl net.ipv4 # display all net.ipv4.* parameters
sysctl -a # display all parameters
А для постоянной записи значений вы можете использовать /etc/sysctl.conf
или любой файл конфигурации в каталоге /etc/sysctl.d/
, и после обновления файла конфигурации вам необходимо перезагрузить файл конфигурации.
sysctl -p [filename]
Конечно, вы можете просто перезапустить «службу» sysctl
, как указал Жиль.
From where does sysctl -a print all kernel parameters?
Из псевдофайловой системы procfs (man procfs ). Он предоставляет интерфейс к структурам данных ядра. Обычно он автоматически монтируется системой в /proc
.