/etc/security/limits.conf
— это файл конфигурации для модуля pam _limit PAM. Это влияет только на пользователей, которые входят в систему с помощью PAM, , а не службы, запущенные другими способами.
Вам потребуется настроить systemd, чтобы изменить ограничения на запускаемые им процессы, см., например,. Как установить ulimit для службы с помощью systemd? о том, как это сделать.
вы можете использовать подстановку параметров оболочки, чтобы избежать нужного символа:
sed -e "s|${old_value//|/\\|}|${new_value//|/\\|}|"
Простой способ обойти это — экранировать все переменные перед вызовомsed
:
new_value="foo|bar"
old_value="ba|z"
new_value=$(printf '%q' "$new_value")
old_value=$(printf '%q' "$old_value")
some_path="/path/to/ba|z/file"
А потом:
$ echo "$some_path" | sed -e "s|$old_value|$new_value|"
/path/to/foo|bar/file
Хитрость здесь заключается в printf '%q'
. Из help printf
(, показывающей помощь встроенной команды bashprintf
):
%q quote the argument in a way that can be reused as shell input