remote_code=$(cat << 'EOF'
echo Hello
for i in "${!target_array[@]}"; do
echo "$i -> ${target_array[i]}"
done
EOF
)
ssh server bash << EOF
$(declare -p target_array)
$remote_code
EOF
Удаленный shell увидит на stdin что-то вроде:
declare -a target_array='([0]="item1 -p12345 -r" [1]="item2 -p65677 -e")'
echo Hello
for i in "${!target_array[@]}"; do
echo "$i -> ${target_array[i]}"
done
Чтобы не засорять stdin удаленного shell, и если ваш ssh и удаленный sshd позволяют передавать LC_*
переменные окружения, вы также можете сделать:
LC_CODE="$(declare -p target_array)
$remote_code" ssh server 'bash -c '\''eval "$LC_CODE"'\'
Если вы знаете, что login shell удаленного пользователя - bash
, вы можете просто сделать:
ssh server "$(declare -p target_array)
$remote_code"
И SystemMaxUse
, и RuntimeMaxUse
контролируют использование дискового пространства, а не памяти. RuntimeMaxUse
действительно применяется к журналам в энергозависимой файловой системе (/run
), но это не фиксируется procstat.memory_rss
. Кроме того, ни один из этих вариантов не ограничивает активные файлы журналов только архивными.
Если journald действительно использует ГБ, я бы серьезно посмотрел, что создает все эти журналы.