как выполнить команду в фоне с помощью ssh и отсоединить сессию

JSmooth является простой программой, которая берет Вашу банку и оборачивает ее в стандартном исполняемом файле окон. Это идет с простым GUI, который позволяет Вам настраивать необходимую JVM, связывать ее приложением или предоставлять возможность загружать его, если это уже не установлено. Можно отправить EXE-файл, как, или архивируйте его с возможными зависимостями (или позвольте программе загрузить дополнительные зависимости с сети на запуске). Это также свободно, как в пиве и речи, которая может (или не может) быть хорошей вещью.

20
задан Hooked 4 March 2015 в 06:35
поделиться

3 ответа

Бывают ситуации, когда вы хотите выполнить / запустить некоторые сценарии на удаленном компьютере / сервере (который завершится автоматически) и отключиться от сервера.

например: сценарий, запущенный на ящике, который при выполнении

  1. берет модель и копирует ее на удаленный сервер
  2. создает сценарий для запуска моделирования с моделью и отправляет ее на сервер
  3. запускает сценарий на сервере и отключение
  4. . Обязанность запускаемого таким образом сценария - запустить моделирование на сервере и по завершении (для завершения потребуется несколько дней) скопировать результаты обратно клиенту.

Я бы использовал следующую команду:

ssh remoteserver 'nohup /path/to/script `</dev/null` >nohup.out 2>&1 &'

@CKeven, вы можете поместить все эти команды в один сценарий, отправить его на удаленный сервер и запустить следующим образом:

echo '#!/bin/bash  
rm -rf statuslist  
mkdir statuslist  
chmod u+x ~/monitor/concat.sh  
chmod u+x ~/monitor/script.sh  
nohup ./monitor/concat.sh &  
' > script.sh

chmod u+x script.sh

rsync -azvp script.sh remotehost:/tmp

ssh remotehost '/tmp/script.sh `</dev/null` >nohup.out 2>&1 &'

Надеюсь, это сработает; -)

Изменить: Вы также можете использовать ssh user @ host 'screen -S SessionName -d -m "/ path / to / executable"'

, который создает отдельный сеанс экрана и запускает цель команда внутри него

24
ответ дан 29 November 2019 в 23:20
поделиться

Что вы думаете об использовании для этого screen ? Вы можете запустить screen через ssh, чтобы запустить команду ( concat.sh ), а затем вы сможете вернуться к сеансу экрана, если хотите его контролировать (может быть удобно (в зависимости от того, что делает concat).

Чтобы быть более конкретным, попробуйте следующее:

ssh -t $username@$node screen -dm -S testing ./monitor/concat.sh

Вы должны обнаружить, что приглашение возвращается немедленно и что concat.sh запущен на удаленном компьютере. Я объясню некоторые варианты:

  • ssh -t создает TTY. screen нуждается в этом.
  • screen -dm заставляет его запускаться в "отключенном" режиме. Это похоже на «фон» для ваших целей.
  • -S testing дает вашему сеансу экрана имя. Это необязательно, но рекомендуется.

Теперь, когда вы это сделаете, вы можете перейти на удаленный компьютер и запустить это:

screen -r testing

Это подключит вас к сеансу экрана, который содержит вашу программу. Оттуда вы можете контролировать его, убить, увидеть результат и так далее. Ctrl-A, затем d отключит вас от сеанса экрана. screen -ls перечислит все запущенные сеансы.

21
ответ дан 29 November 2019 в 23:20
поделиться

It could be the standard input stream. Try ssh -n ... or ssh -f ....

4
ответ дан 29 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

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