Суть в том, чтобы добавить немного больше контекста в регулярное выражение:
sed -e "s#\\(url(\\\\'\\)\\(test.png\\\\')\\)#\1/navigation/\2#g"
Также обратите внимание, что:
'
не имеет особого значения. \\
, чтобы получить один \
. as if it was execve'd from the process itself
Способ состоит в том, чтобы сделать вызов процесса execve.
Это работа отладчика.
У вас должны быть как минимум права пользователя, запускающего процесс. В зависимости от настройкиkernel.yama.ptrace_scope
вам может понадобиться root внутри контейнера, что обычно одно и то же. Я не уверен, какие привилегии применяются снаружи контейнера :Я не знаю, как правила проверки доступа ptrace взаимодействуют с Docker.
Вот сценарий, использующий sh и gdb. Вы можете запустить его из контейнера (передать 1 как PID )или снаружи (передать PID процесса инициализации контейнера ).
#!/bin/sh
set -e
help_and_exit () {
cat <<EOF
Usage: $0 PID COMMAND [ARG...]
Use gdb to replace the running process PID by the specified command.
EOF
exit $1
}
if [ "$1" = "--help" ]; then
help_and_exit
elif [ $# -lt 2 ]; then
help_and_exit 120 >&2
fi
pid=$1; shift
# Quote the command path and the arguments as a C string.
args=
add_arg () {
args="$args\""
while case "$1" in *[\\\"]*) true;; *) false;; esac; do
set -- "${1#*[\\\"]}" "${1%"${1#*[\\\"]}"}"
args="$args${2%?}\\${2#"${2%?}"}"
done
args="$args$1\", "
}
add_arg "$1"
args="$args$args"; shift
for x; do
add_arg "$x"
done
args="${args}(char*)0"
gdb -n -pid "$pid" -batch -ex "call execlp($args)"
Если вы не хотите устанавливать gdb, вы можете написать небольшую программу на Python или C (или любом другом предпочитаемом вами языке ), который выполняет необходимыеptrace
вызовы.
Учтите, что если PID 1 контейнера является программой, предназначенной для использования в качестве инициализатора, у нее, вероятно, есть способ -указать ему -выполнить exec, и вы должны использовать его. Программа может выполнить очистку перед выполнением -и может передать своему преемнику исполняемые дополнительные данные, например, в файле или в переменной окружения.