Самый простой способ использовать tmux, команда для возврата к процессу

Да, вы получаете два совпадения, потому что и arun:1.0, и arun-vinoth:1.3содержат слово arunкак отдельное слово, оканчивающееся перед не -символами слова :и -в двух результатах(_считается словесным символом, поэтому arun_kumar:1.2равно , а не возвращается с вашей командой ).

В этом случае лучше использовать ^arun:в качестве шаблона для поиска, то есть любую строку, начинающуюся со строки arun:.

1
17.10.2019, 15:44
3 ответа

Вы можете перечислить сеансы tmux при повторном подключении к удаленному серверу:

tmux ls
0: 4 windows (created Tue Oct 15 07:55:07 2019) [255x62]
1: 2 windows (created Tue Oct 15 07:55:07 2019) [255x62]

Затем вы можете повторно подключиться к целевому сеансу:

tmux attach-session -t 1

Это будет связано со вторым экземпляром tmux, указанным выше.

Если у вас запущен только один сеанс tmux, вы можете использовать сокращение:

tmux a

для повторного подключения первого сеанса.

2
27.01.2020, 23:22

Если вы склонны к зависаниям или хотите выйти из сеанса ssh-, вы можете использовать nohup. Это позволяет вам отсоединить процесс от сеанса ssh-, запустить его в фоновом режиме и сохранить вывод в файл.

nohup COMMAND &

По умолчанию выводится на $HOME/nohup.out, в качестве альтернативы возможно перенаправление

nohup COMMAND > mylogs.log &

Когда вы запускаете nohup, вам будет показано PIDпроцесса, например.:

$ nohup bash -c "while ((1)) ; do echo 1 ; sleep 1 ; done" > echo.log &
[1] 21816

Обратите внимание на PID и проверьте статус вашего процесса, например, через.ps <PID>

$ps 21816
  PID TTY      STAT   TIME COMMAND
21846 pts/6    S      0:00 bash -c while ((1)) ; do echo 1 ; sleep 1 ; done

Отсутствие вывода с заданным PIDозначает, что процесс больше не активен (отменено, прервано, остановлено, завершено... что угодно ).

1
27.01.2020, 23:22

Допустим, для демонстрации вы хотите запустить это на удаленном хосте:

for i in $(seq 60) ; do
    echo "$i seconds of 60"
    sleep 1
done

.... и хотите, чтобы он продолжал работать, когда ваше ssh-соединение обрывается.

Самый самый простой способ сделать это с помощью tmux:

tmux new-session -d
tmux new-window bash -c 'for i in $(seq 60) ; do echo "$i seconds of 60" ; sleep 1 ;done'

После этого вы вернетесь к командной строке, как будто ничего не произошло. Но скрипт будет работать в tmux в памяти. Если вы выйдете из оболочки (или ваше ssh-соединение прервется ), оно продолжит работу.

Чтобы подключиться к сеансу tmux, чтобы увидеть программу, работающую в вашем терминале,запустите эту команду:

tmux attach-session

Чтобы выйти из сеанса tmux, оставив его работающим в фоновом режиме, нажмите ctrl-b, а затем d.

Чтобы завершить сеанс tmux, просто подключитесь к нему, завершите свою программу, если она все еще работает exitв оболочке обычным способом. Или из-за пределов сеанса tmux:

tmux kill-session
0
27.01.2020, 23:22

Теги

Похожие вопросы