Как реализовать управление фоновым приложением через консоль?
Вопрос следующий:
имеется небольшое приложение с вебсокетами на go. Задумал прикрутить к нему возможность бана/разбана пользователей.
Кажется логичным сделать просто через стандартный ввод - вывод в консоли, но т.к. приложение запускается в фоновом режиме через systemd, то пока не догоняю, как можно в таком случае переключиться на консольное управление приложением )
Флаги тут вроде бы тоже не при чем, т.к. отвечают за конфигурирование приложения при запуске и не работают с уже запущенными.
Нужно в итоге, чтобы работало как, например, у mongoDB - вводишь mongo и консоль переводится на управление приложением.
Куда копать для реализации подобного? Программирование для меня хобби, пока не понимаю, в сторону чего гуглить.
Есть несколько вариантов:
1. Через stdin, в linux как правило достучаться к нему можно в /proc/PROCESS_ID/fd/0
2. Слушать в отдельном socket файле
3. Отправлять отдельный сетевой запрос
4. Можно посмотреть в сторону d-bus
...
Спасибо. 1-й способ видится самым простым в реализации - в приложение добавить reader, к которому можно будет достучаться через echo на 0-й дескриптер нужного процесса, а читать ответы через service status или journalctl, должно сработать )
Нужно в итоге, чтобы работало как, например, у mongoDB - вводишь mongo и консоль переводится на управление приложением.
Ну так там СОВЕРШЕННО не так просто.
есть отдельное приложение монго сервер и есть отдельное приложение монго клиент, которое подключается к серверу по порту. Причем оно подключается даже не к консоли а к сетевому сокету, и можно с другого компа подключаться.
Так и у вас - фоновое приложение слушает сокет, воспринимает команды и выполняет их.
Спасибо, почему-то не думал что там так реализовано, хотя вообще это кажется логичным.
Для моих небольших задач думаю подойдет первый из вариантов, предложенных index0h .