Intereting Posts
Затвор использует большую память Как найти битрейт mp3-файла через командную строку? Как открыть файл с определенным приложением и другим файлом того же типа с другим приложением? Как открыть папку между хостом и гостевой системой KVM с помощью virt-manager? Почему мой компакт-диск Ubuntu 10.10 не загружается? Должен ли я перезагрузить компьютер, если Unity выйдет из строя во время обновления? 14.04 задержка Bluetooth (латентность, задержка) и пропуск Как исправить ошибку «только для чтения», когда я запускаю что-то как sudo и пытаюсь создать папку / файл? Как запустить терминал без использования Dash? Веб-страницы не загружаются в 12.04 Программное обеспечение FOSS для конференций Обновление до python 2.7.5 на Ubuntu 12.04 Как загрузиться с USB-накопителя в VirtualBox? Что лучше: хост Win7, на котором работает VMware с гостевым Ubuntu или наоборот? Настройка wirehark для пользователей без root

как вы работаете с процессом ssh?

Я знаю, что вы можете приостановить сеанс ssh с помощью ~ ^ z, но есть ли способ сделать это так, чтобы он продолжал работать, когда вы делаете что-то еще в локальной оболочке?

Если вы пытаетесь запустить процесс удаленно, и вам не нужно открывать сеанс ssh, вам может потребоваться использовать screen . Это позволит вам запустить ваш процесс в «фоновом режиме», и он будет работать после выхода из системы.

Сначала, ssh в удаленный ящик, затем оттуда используйте screen и запустите свой процесс, и вы можете указать на screen имя сеанса, если хотите. Вы не заметите ничего другого, но начните свой процесс в этом сеансе. Вы можете выйти из сеанса screen , используя команду Ctrl-a d . Он будет выглядеть примерно так:

 user@remotebox:~$ screen -S foobarsession user@remotebox:~$ startmyprocess [detached from 4865.foobarsession] user@remotebox:~$ 

Затем вы можете выйти из сеанса ssh, и процесс будет продолжать работать. Чтобы снова подключиться к сеансу screen , ssh вернитесь в удаленный ящик и используйте screen -r для повторного подключения. Вы можете использовать screen -ls для перечисления сеансов.

 user@remotebox:~$ screen -ls There is a screen on: 4865.foobarsession (10/05/2012 11:10:57 AM) (Detached) 1 Socket in /var/run/screen/S-user user@remotebox:~$ screen -r foobarsession user@remotebox:~$ screen -ls 4865.foobarsession (10/05/2012 11:10:57 AM) (Attached) 1 Socket in /var/run/screen/S-user user@remotebox:~$ 

Или, если screen не установлен, вы можете использовать команду nohup в удаленном поле. Википедия объясняет, что хорошо:

 Nohupping backgrounded jobs is typically used to avoid terminating them when logging off from a remote SSH session. A different issue that often arises in this situation is that ssh is refusing to log off ("hangs"), since it refuses to lose any data from/to the background job(s). This problem can also be overcome by redirecting all three I/O streams: nohup ./myprogram > foo.out 2> foo.err < /dev/null & 

Таким образом, вы можете сделать что-то вроде:

 ssh -n -f user@remotebox "sh -c 'cd /foo/bar; nohup ./myprogram > foo.out 2> foo.err < /dev/null &'" 

После выполнения ~ ^ z выполнить bg и остановленный процесс продолжит выполнение в фоновом режиме. Работает со всеми процессами не только ssh.

PS: С fg вы снова выходите на задний план. И только для записи: ~ необходимо только для того, чтобы отличить, должна ли подвеска находиться на локальной машине (с ~ -> клиентом ssh) или на сервере (без ~ -> любого процесса, выполняемого в настоящее время на переднем плане сервер)