Что-то вдоль цепочки приводит к таймауту неактивного соединения, так как SSH ничего обычно не отправляет, когда неактивный. Но, можно заставить его отправить сообщения периодически, когда неактивный. В версии 3.8 OpenSSH и:
$ ssh -oServerAliveInterval=60 myremotebox
Если Вы идете в ssh
вручную к этому хосту часто, Вы, вероятно, хотите вставить его Ваш ~/.ssh/config
файл вместо этого:
Host myremotebox
ServerAliveInterval=60
Это говорит этому отправлять пустой пакет каждые 60 секунд после того, как ничто иное не было отправлено. Я нашел через большое разнообразие инфраструктуры, что этого достаточно для поддержания соединения.
В пред3.8 версиях OpenSSH у Вас нет этой опции, но существует слабая нейтрализация. Можно установить KeepAlive
опция, которая использует сообщения проверки активности TCP. Путем это работает, зависимо от операционной системы, и часто изменение его поведения влияет на все приложения. Худшие, сетевые стеки обычно значение по умолчанию к отправке сообщений проверки активности TCP каждые 2 часа по умолчанию, таким образом, почти необходимо изменить значение по умолчанию, если Вы собираетесь использовать его этот путь, так как вещь, приводящая к таймауту Вашего соединения SSH, вероятно, имеет неактивный порог намного ниже, чем 2 часа.
Отметьте при чтении версии 3.8 + документы что это - то же самое как TCPKeepAlive
опция. Когда они добавили "сервер живая" опция в 3,8, они переименовали KeepAlive
кому: TCPKeepAlive
отличать два.
Я бы избежал любой арифметической операции и использовал -gauge
, как задокументировано («новые проценты считываются из стандартного ввода»):
for ((i=0;i<=100;i+=10)); do echo $i; sleep 1; done | dialog --gauge "Please wait 10 seconds." 0 0
-121--217818- Попробуйте добавить audit = 0
в строку ядра.
Это подарок systemd
, известный как ограничение кода аудита в ядре, и отслеживается здесь.
Требуется исправление в ядре.
-121--114684- застежек -молний
может сжимать данные до стандартного вывода. Поэтому его можно объединить с другими инструментами, такими как pv
:
zip -qr - [folder] | pv -bep -s $(du -bs [folder] | awk '{print $1}') > [file.zip]
Для удобства удалите один из параметров -bep
.
Если вы согласны использовать 7z:
7z a output.zip folder/
Это даст вам индикатор выполнения, подобный этому:
Open archive: test.zip
--
Path = test.zip
Type = zip
Physical Size = 232039663
Scanning the drive:
3 folders, 2401 files, 238122225 bytes (228 MiB)
Updating archive: test.zip
Items to compress: 2404
16% 279 U folder/file.txt
Я бы использовал выражение grep
egrep -c '^([-d][rwx-]{9})'
По крайней мере, для меня в Ubuntu каталог не начинается с "/", а скорее с "d" (уверен, что вы можете использовать только [ -d], но я не был уверен в рекурсивном выводе 'ls '.
drwxr-xr-x 3 user user 4096 apr 14 2015 gems
Также обратите внимание, что здесь мы не учитываем скрытые файлы (или, лучше сказать, первый экземпляр команды, написанной Лефтерис ). А из-за "." и ".." Я бы сказал, что счетчики будут отклоняться (, чем сложнее дерево каталогов, тем хуже оценка pv ), если мы используем переключатель "-a". Так что об этом также можно как-то позаботиться в grep или, возможно, в ls в зависимости от вашей системы.
Используйте параметр (-q )[ --тихий], например zip -q....
подробнее см. man ziphttps://linux.die.net/man/1/zip
Лучше использовать:
cat INPUTFILE.img | pv -bep -s $(du -bs INPUTFILE.img | awk '{print $1}') | zip -q > OUTPUTFILE.zip
В этом случае вы видите реальный процент данных через "PV" Единственная проблема теперь это имя файла, которое можно решить:
echo -e "@ -\n@=NEWNAME.img" | zipnote -w OUTPUTFILE.zip
Или обе команды в одной строке:
cat INPUTFILE.img | pv -bep -s $(du -bs INPUTFILE.img | awk '{print $1}') | zip -q > OUTPUTFILE.zip ; echo -e "@ -\n@=NEWNAME.img" | zipnote -w OUTPUTFILE.zip