![]() |
|
Модераторы: xvr |
![]()
|
|
| borisbn |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
Здравствуйте!
Есть консольная linux-программа, которая выводит много всякой информации в stdout. В терминале получается каша, разобрать которую можно только постфактум по логу (если перенаправить весь вывод в файл). Мне бы хотелось найти такую софт, который может переключать вывод от разных подсистем моей программы. Например, моя программа пишет в консоль:
Хотелось бы запустить мою программу как-то так:
и по нажатию, например, Alt+0 видеть весь вывод (как приведено выше), по нажатию Alt+1 видеть только
по нажатию Alt+2 видеть только
и т.д. Вопрос: кто-нибудь встречал такой софт (out_monitor из примера выше) ? Если нет, то подскажите, в какую сторону копать, чтобы, если я захочу сделать свой такой софт, я мог одновременно получать данные из stdin (например, при помощи getline) и перехватывать нажатия клавиш Alt+N ? Спасибо. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||||
|
|||||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
стадартных выводов всего два, cout и cerr, так что - логи
есть вот такое http://www.vanheusden.com/multitail/ еще вариант - отдавать в cout в определенном формате, и иметь tail+grep, переключаемый по alt (что можно сделать и без программизма, используя несколько консолей) |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
baldina, спасибо, покурю этот multitail, но у меня есть ещё одно ограничение - я работаю по ssh (через putty). Будет ли там это работать?
И ещё один момент - программа работает 24х7 и, соответственно, не хотелось бы всё, что она пишет в консоль, писать в файл. Место-то на диске не бесконечно. Это-то, как раз, можно (см. в моём примере <network>... <database>...), но что потом с этим делать? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
tail -f log |grep
|
|||
|
||||
| _zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1076 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Вы используете диски в несколько мегабайт, не слышали о log rotation и при этом хотите просматривать сообщения месячной (двух,трех и т.п.) давности ? Мне кажется вы неправильно себе поставили задачу. Я например вообще не вижу смысла в подобной утилите. Тем более если программа ваша и вы вольны выбирать библиотеку логов. Можно например log4c. Почти стандарт для явы (log4j). Это сообщение отредактировал(а) _zorn_ - 19.1.2015, 15:40 |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
||||
|
||||
| _zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1076 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
||||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
Нет. Я хочу зайти по ssh и увидеть текущее состояние. То, что было даже пол-часа назад мне не нужно.
Именно! А что насчёт ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
читаешь со стандартного ввода. в памяти раскладываешь сортируешь как тебе надо. выводишь последние N строк. Alt+N и работа с консолью в стиле top - ncurses Это сообщение отредактировал(а) baldina - 20.1.2015, 12:36 |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
baldina, В том-то и дело, что мне нужно получать информацию о нажатии Alt+N по некоему прерыванию (или сигналу), т.к. основной цикл программы должен будет выглядеть примерно так:
Я, конечно, могу в (1) проверять, нажата ли какая-нибудь клавиша, но тогда я не смогу переключиться между "окнами" пока подопечная программа не выдаст что-нибудь в stdout... А если она зависла, то я вообще ничего не смогу сделать. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
Ну, tail -f |grep + screen.
|
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
tzirechnoy, ну не хочу я файлы писать. И потом, мне этих grep'ов нужно столько, сколько у меня будет подсистем, а в своей программе я смогу динамически эти подсистемы выявлять (допустим, каждый вывод будет начинаться с <subsystem_name>).
А screen - ессно... как же я по ssh зайду в рабочую программу... baldina, спасибо, про cin.get() не знал (оч. мало работаю с консолью). Да и про другой поток не подумал. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |