Как запустить команду на сервере, чтобы она работала после отключения?
Есть VPS. Подключаюсь по ssh. Нужно на VPS запускать сборку программ из исходников. Но проблема в том, что если консоль закрыть, то и сборка не работает. Разумеется, гуглил данный вопрос. Находил всякие job'ы, отправку команд в фон. Они то работают, но если отключится от сервера - то прерываются. Думал написать Web-сервер, чтобы с браузера отправлять команды, но это геморно. А постоянно держать соединение с сервером - тогда пропадает весь смысл в VPS. Что можете посоветовать?
mureevms, Не, мне нужно собирать такие программы как Wine, и другие Gnu утилиты. Также запускать некоторые программы, что бы они работали после отключения.
Сергей Карбивничий, вам виднее конечно, но разве сборка "Wine, и другие Gnu утилиты" осуществляется как-то принципиально по другому? Вероятно, вы не знаете как работает CI
mureevms, Мне просто нужно собирать софт с патчами без танцев с бубном. Так как я это делаю на ноутбуке. Но так как ноутбук у меня занят другими задачами, то взял себе VPS, не только для сборки, но и для запуска парсеров, etc.
Сергей Карбивничий, чтобы не вводить команды на две страницы придумали скрипты.
для того чтобы отключаться и подключаться к конкретной шелл-сессии придумали screen, а потом tmux.
тебе что нужно ?? шашечки с медиагиперактивной гуишной свистоперделкой или ехать ??
уточни что тебе надобно старче...
И что там пишут?
Для меня скрин всегда был две команды и одно сочетание клавиш.
поэтому мне очень интересно, где там можно наскрести даже пол-экрана, не говоря про два
Сергей Карбивничий, два экрана это когда нужно скрином по com порту подключаться или тмукс в демона запихивать.
Реально для запустил и забыл достаточно одной команды и одного сочетания клавиш. Остальное по желанию.
Сергей Карбивничий, дык так он ииспользуется.
запускаешь сессию тмукса в ней мейк и отключаешься.
дома просто подключаешься к сохраненной сессии тмукса.
еще вариант настроить использование одной сессии. у меня так было пару лет наззад.
на работе в винде засовываешь набор команд в путти, дома рисуешь скрипт подключения (каких не помню, но статей навалом). и нормально живешь в нонстопной сессии.
Когда юзер подключается к серверу удалённо или входит локально с консоли - в процессе входа запускается шелл, ассоциированный с терминалом /dev/tty* . Когда шелл по указаниям юзера запускает программы - эти программы тоже ассоциированы с этим же терминалом. Когда юзер завершает сессию - процессы, ассоциированные с соответствующим терминалом, получают сигнал GigHup. Процессы, которые не настроили обработку этого сигнала - умирают.
Чтобы процессы работали в фоновом режиме после завершения сессии - их можно запустить через программу nohup, которая отвязывает себя и своих потомков от терминала. Если надо запускать сложную последовательность команд - то лучше запихнут её в скрипт.
Ну и есть продвинутые решения - про них говорили выше.
Находил всякие job'ы, отправку команд в фон. Они то работают, но если отключится от сервера - то прерываются
nohup [command] &
отправка в фон это просто отправка в фон. Вам еще нужно отключить эту программу от текущей сессии, для чего можно использовать nohup.
Или как выше посоветовали, оконные менеджеры типа screen/tmux, но это уже артиллерия потяжелее. С другой стороны можно позже приаттачиться к запущенной программе