Команды scp
и sftp
являются частью ssh
и подключаются к серверу ssh
. sftp
предоставляет ftp
подобный интерфейс для ssh
.
sftp
или безопасный ftp, это что-то другое. Настройка сервера sftp
никоим образом не позволит вам запустить sftp
. Вам нужен сервер ssh
.
Символы 52 -59 вашей строки,
"stress-ng --vm-bytes $(awk '/MemAvailable/{printf \"%d\n\", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1"
↑↑↑↑↑↑↑↑
показано выделенным вверху и изолированным внизу:
\ " % d \ n \ "
анализируются как:
"
(символ кавычек (, экранированный))%
d
"
в результате чего оболочка видит две строки:
stress-ng --vm-bytes $(awk '/MemAvailable/{printf "%d
", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1
поэтому awk
видит следующую двухстрочную программу -:
/MemAvailable/{printf "%d
", $2 * 0.9;}
Awk анализирует свою программу построчно (, если вы не используете обратную косую черту + новую строку ), поэтому он видит несбалансированные кавычки. Как известно, вы хотите пройти
/MemAvailable/{printf "%d\n", $2 * 0.9;}
с по awk
; т. е. позволить awk
видеть символы \n
а не фактический символ новой строки. Так что вам нужно избежать \
в вашем\n
:
"stress-ng --vm-bytes $(awk '/MemAvailable/{printf \"%d\\n\", $2 * 0.9;}' < /proc/meminfo)k --vm-keep -m 1" ↑
Кстати, ваша первая команда использует 0,95, но затем вы меняете его на 0,9 в следующих двух строках.