LINUX.ORG.RU

Подключиться к stdin/stdout запущенного в фоне процесса


0

1

Добрый день форумчанам. Заранее извиняюсь за возможно нубский вопрос.. Меня интересует - сабж возможен? Есть консольная ява-программа, запускаемая хроном как-то так: java -jar /home/fedex/dots.jar &>/home/fedex/log.txt

Это все крутиться на удаленном сервере с доступом по ssh. Ява программа каждый раз при старте записывает в лог какой-то эксепшн по-поводу того что не может читать данные из stdin но потоки запустить успевает и видимо потому продолжает работу.

Есть ли стандартная возможность подключившись к серверу по ssh подключиться к stdin/stdout запущенной таким(или похожим) образом программы и отсылать ей комманды с консоли как обычно не меняя исходники программы? Чтоб программа думала что она запущена обычным образом с консоли пользователем.

★★

Тебе нужны поименованные каналы (man mkfifo) или сокеты.

schizoid ★★★ ()

Не проще ли dtach'нуть её в кронтабе?

x3al ★★★★★ ()
Ответ на: комментарий от schizoid

Сокеты это понятно, но я так понимаю тут без модификации программы не обойтись, а насчет каналов спасибо, кажеться это именно то что мне нужно!

FedeX ★★ ()

Запустить программу в сессии screen?

AITap ★★★★★ ()
Ответ на: комментарий от FedeX

man dtach, избранное

-n Creates a new session, without attaching to it. A new session is created in which the specified program is executed. dtach does not try to attach to the newly created session, however, and exits instead.
[…]
-a Attach to an existing session. dtach attaches itself to the session specified by <socket>. After the attach is completed, the window size of the current terminal is sent to the master process, and a redraw is also requested.

x3al ★★★★★ ()

они тебя не поняли (точнее ты неправильно написал) :)
тебе надо было написать, можно ли _запустить_ программу следущим образом, а не к уже запущенной java -jar /home/fedex/dots.jar &>/home/fedex/log.txt подключаться.

а делается это так:
1. удаляешь строчку из крона
3. устанавливаешь утилиту screen (apt-get install screen)
4. screen bash
5. while true; do java -jar /home/fedex/dots.jar ; sleep промежуток_времени_в_секундах_вместо_крона ;done
5. закрываешь консоль
6. подключаешься и делаешь screen -r чтобы подключиться bash и запущенной в нём программке

vendor501 ()

Спасибо всем за разнообразие способов! Пока сделал через screen, как советовал vendor501, потому что так сразу получилось, позже попробую другие методы и выберу оптимальный.

FedeX ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.