Tmux — хороший вариант для запуска долго -запущенных процессов в фоновом режиме.
Мне приходится продолжать выполнять -длительно работающие процессы на экземпляре/сервере виртуальной машины облачной платформы Google (с ОС :Ubuntu 16.0 ). Там, где мне нужно запустить SSH-терминал и с терминала, я должен держать терминал подключенным, чтобы запустить процесс. Теперь до этого все хорошо. Но подождите, если соединение с моим SSH-терминалом прервется, то длительные -запущенные процессы немедленно остановятся, и, следовательно, мне придется повторно -запустить их еще раз после перезапуска ssh-терминала или с нового ssh-терминала.
Я считаю, что tmux
— это хорошее решение, позволяющее избежать завершения процессов, которые мы хотим запустить, даже после закрытия терминала.
Терминальный мультиплексор(tmux
)для запуска сеанса tmux
:
tmux
. Откроется окно в том же терминале. Теперь, даже если SSH-терминал внезапно закрывается/прекращается, сессия tmux продолжит выполнение запущенных lon -запущенных процессов на экземпляре/сервере.
Если соединение прервано, то как переподключить его, чтобы увидеть процессы, запущенные в сеансе tmux в фоновом режиме:
tmux attach
. Хотите завершить сеанс tmux:
exit
в окне терминала tmux --.(Обратите внимание, что :Если мы используем tmux detach
команду :, она выйдет из окна/терминала сеанса tmux без прерывания/остановки сеансов tmux)
Подробнее см. следующую статью:
Если вы чувствуете, что вам нужно указать правильное имя файла назначения, что, я думаю, вам не следует делать , тогда используйте шаблон подстановки имени файла (, который не является регулярным выражением)в петлю:
for pathname in /my/path/for/the/image/image-abc-*.bin
do
[ -e "$pathname" ] &&
scp "$pathname" "mydevice:flash:$(basename "$pathname")"
done
При этом будут скопированы все файлы, имена которых соответствуют заданному шаблону подстановки. Тест -e
гарантирует, что имя пути в $pathname
действительно существует перед вызовомscp
(шаблон останется нераскрытым, если не будет найдено совпадающих имен ).
Утилита basename
используется здесь для извлечения части пути к имени файла. Затем это используется в качестве имени файла назначения. Можно также использовать подстановку параметра "${pathname##*/}"
вместо вызова подстановки команды basename
.
Если вы уверены, что ваш шаблон будет соответствовать только одному файлу, вы также можете
set -- /my/path/for/the/image/image-abc-*.bin
[ -e "$1" ] && scp "$1" "mydevice:flash:$(basename "$1")"
По сути, это то же самое, что и выполнение только первой итерации вышеуказанного цикла с использованием позиционных параметров для хранения расширенного списка путей, соответствующих шаблону.