Intereting Posts
Любая альтернатива «man -a» в UNIX? ssh -> screen -> ssh – как убить удаленный экранированный ssh, не убивая оригинальную сессию ssh Как сохранить специальные символы, выделяющие при конвертации в HTML? Почему df не выводит значение по умолчанию в формат, удобочитаемый человеком? Как получить информацию о моих виртуальных рабочих столах через командную строку? Как показать индикатор выполнения в то время, когда tar рекурсивно? Как сохранить пользовательский PS1 в режиме суперпользователя? Чтение файла журнала между двумя датами цветной bash не работает как пользователь root Как получить размер каталога в командной строке? Как найти активный сетевой интерфейс из пользовательского пространства? vim regex для поиска строк, содержащих string1 AND string2 возможно ли снять скриншот части веб-страницы с помощью командной строки? Форматировать вывод на определенную длину строки Кросс-компиляционное ядро ​​не может найти gcc

удаленный процесс, запущенный через ssh, убивается, если пользовательский интерфейс закрыт

Я написал скрипт, который по сути делает 2 вещи:

  • Запускает пользовательский интерфейс для прослушивания фактической программы, работающей на сервере
  • удаленно запустить программу на сервере

Все идет хорошо, пользовательский интерфейс запускается, затем программа запускается на сервере. Но как только я закрываю интерфейс, удаленный процесс уничтожается.

Соответствующие части сценария:

ui_pid = subprocess.check_output('/home/user/git/sim_ui.sh', shell=True) command = 'ssh user@server "bash -c \'cd program_dir/ && echo \"running program >> log.out && ./program.sh >> log.out\'"' print command os.system(command) 

sim_ui.sh :

 nohup ui_binary args > ui_out.txt & 

Я также не могу выяснить, что убило процесс на сервере, т.е. сигнал, который завершил процесс и откуда он возник.

Редактировать: когда я добавляю screen -dm перед bash -c он работает отлично.