Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос сисадмина / 17 сообщений из 17, страница 1 из 1
04.03.2013, 10:10:17
    #38172954
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Дали консольную програмку, написанную на яве, которая должна постоянно висеть на серваке. Сервак виндовый. Разраб писал эту прогу исключительно под себя и крутит ее на линуксе. У проги этой два консольных вывода, один для лога, другой - для ошибок. То есть, когда я ее запускаю у себя, используя ">>", она лог пишет в указанный мной файлик, а ошибки вываливает непосредственно в консоль. После появления ошибок прога останавливает свое выполнение. То есть мне надо увидеть, что в консоли выползли ошибки, закрыть консоль и запустить прогу заново. Стоит задача "забыть" про существование этой проги, то есть полностью автоматизировать ее перезапуск в случае возникновения ошибок. Плюс организовать отправку по почте сообщений об ошибках, которые прога вываливает в консоль (не в файл). С чего начать? Сервак перезагружается по заданию каждую ночь.
Пока что приходит в голову только одно - научить пользователей выполнять описанные действия вручную. Может, можно что-сделать? Можно попросить разраба написать пару строк кода для меня, но не больше, поскольку софт он нам предоставил практически бесплатно.
...
Рейтинг: 0 / 0
04.03.2013, 10:31:10
    #38172972
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Flying-home,

Значит он ошибки выводит в errout.
1) Попросить выводить ошибки в лог (stdout) (Скорее всего написать обработку ошибок)
2) Воспользоваться программами анализаторами потокового вывода (awk, sed и т.д.)
...
Рейтинг: 0 / 0
04.03.2013, 11:13:07
    #38173025
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Написать скрипт на vbs поднимающий процесс "проги" и перехватывающий stderr
...
Рейтинг: 0 / 0
04.03.2013, 11:14:14
    #38173027
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
алсо,

http://support.microsoft.com/kb/110930

Информация в данной статье относится к следующим продуктам.
операционная система Microsoft Windows NT Workstation 3.1
операционная система Microsoft Windows NT Workstation 3.51
Microsoft Windows NT Workstation 4.0 Developer Edition
Microsoft Windows XP Professional
Microsoft Windows Server 2003, Standard Edition (32-bit x86)
Microsoft Windows 2000 Professional Edition
...
Рейтинг: 0 / 0
04.03.2013, 11:15:05
    #38173030
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
С помощью вот этого обернуть прогу в Windows Service
http://commons.apache.org/proper/commons-daemon//procrun.html
И, как верно заметили выше, посмотрите System.setErr(), System.setOut(), чтобы направаить вывод в нужном направлении. Например в файл, или в память. Тогда при нужном событии эти данные можно перечитать и отправить по почте.
...
Рейтинг: 0 / 0
04.03.2013, 11:15:22
    #38173031
Лагман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
про батник c goto 0 надеюсь сами найдете
...
Рейтинг: 0 / 0
04.03.2013, 12:34:11
    #38173155
pasha701
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
1) Сделать батник с шагами:

а) запуск программы + вывод ошибок в отдельный ошибок файл, как указал Лагман ( http://support.microsoft.com/kb/110930)
б) отсылка почты с файлом ошибок, найдите command line утилиту для этого.

2) Батник определить как сервис при помощи комfнды "sc" ( http://support.microsoft.com/kb/251192). Настроить recovery параметры сервиса через Windows UI.
...
Рейтинг: 0 / 0
04.03.2013, 16:32:06
    #38173539
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Flying-homeТо есть, когда я ее запускаю у себя, используя ">>", она лог пишет в указанный мной файлик, а ошибки вываливает непосредственно в консоль.Азбука комстроки:
Код: sql
1.
программа аргументы > файл1 2> файл2

или
Код: sql
1.
программа аргументы > файл 2>&1

После появления ошибок прога останавливает свое выполнение. То есть мне надо увидеть, что в консоли выползли ошибки, закрыть консоль и запустить прогу заново. Стоит задача "забыть" про существование этой проги, то есть полностью автоматизировать ее перезапуск в случае возникновения ошибок.Как уже сказали - Daemon : Procrun плюс стандартные настройки перезапуска служб.
...
Рейтинг: 0 / 0
04.03.2013, 18:20:06
    #38173690
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Всем спасибо. Буду курить ссылки.
...
Рейтинг: 0 / 0
05.03.2013, 01:38:58
    #38174035
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Создаете powershell скрипт (должен работать на любой виндовс машине) и ставите в автозапуск.
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
while($true){
	Remove-Item -Path err.tmp
	cmd /c "proga.exe > nul 2>err.tmp"
	$err = cat err.tmp
	if(-not($err -match '^$')){
         $smtp = new-object Net.Mail.SmtpClient('mail.kontora.ru')
         $msg.From = "admin@kontora.ru"
         $msg.To.Add("admin@kontora.ru")
         $msg.subject = "Ошибка"
         $msg.body = $err
         $smtp.Send($msg)		
	}
}
...
Рейтинг: 0 / 0
05.03.2013, 09:55:16
    #38174171
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Замечание №1. По поводу оборачивания батника в службу и перезапуска его средствами управления службами. Не выйдет, по той простой причине, что когда ява-приложение остановится, сама ява-машина об этом никого предупреждать не будет. Она будет продолжать работать. Ведь в батнике у нас просто запуск java.exe с указанием jar. Единственный способ узнать, что программа требует перезапуска - это увидеть, что в errout что-то появилось.
...
Рейтинг: 0 / 0
05.03.2013, 10:02:48
    #38174178
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Йуный джавистЪСоздаете powershell скрипт (должен работать на любой виндовс машине) и ставите в автозапуск.
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
while($true){
	Remove-Item -Path err.tmp
	cmd /c "proga.exe > nul 2>err.tmp"
	$err = cat err.tmp
	if(-not($err -match '^$')){
         $smtp = new-object Net.Mail.SmtpClient('mail.kontora.ru')
         $msg.From = "admin@kontora.ru"
         $msg.To.Add("admin@kontora.ru")
         $msg.subject = "Ошибка"
         $msg.body = $err
         $smtp.Send($msg)		
	}
}


Тоже самое. После
Код: powershell
1.
cmd /c "proga.exe > nul 2>err.tmp"

скрипт на слеудющую строку никогда не перейдет.
...
Рейтинг: 0 / 0
05.03.2013, 12:05:24
    #38174383
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Flying-homeТоже самое. После
Код: powershell
1.
cmd /c "proga.exe > nul 2>err.tmp"

скрипт на слеудющую строку никогда не перейдет.
Попробуйте call cmd /c ...
Теперь мне правда не понятно зачем вопрос было задавать в Java форуме, если с самим Java кодом вы ничего делать не планируете.
...
Рейтинг: 0 / 0
05.03.2013, 12:38:32
    #38174449
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Blazkowicz,

Ну, может, кто-то уже пытался управлять консолными java-приложениями...
Подсказка Лагмана помогла. Про редирект stderr я не знал.
Теперь осталось только отслеживать содержимое файлика и при его изменении закрывать консоль и перезапускать приложение. Это уже точно не к джавистам вопрос.
...
Рейтинг: 0 / 0
05.03.2013, 15:50:03
    #38174801
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Flying-homeЗамечание №1.1. Давайте вы не будете спорить о вкусе устриц, не прочитав документацию;
2. Ранее вы утверждали, что при возникновении ошибок приложение завершается.
...
Рейтинг: 0 / 0
08.03.2013, 23:52:04
    #38178302
Flying-home
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Basil A. SidorovFlying-homeЗамечание №1.1. Давайте вы не будете спорить о вкусе устриц, не прочитав документацию;
2. Ранее вы утверждали, что при возникновении ошибок приложение завершается.

Я как сисадмин, описываю, что происходит. Консоль вываливает ошибки, приложение перестает выполнять свои функции. Java.exe продолжает висеть в процессах. Консоль, если запущена руками, продолжает висеть на рабочем столе. Неисключено, что приложение криво написано. Но я вообще не имею представления, как должно работать консольное ява-приложение.
ЗЫ а что, в случае критических ошибок приложение должно прекратить выполнение своей среды? А у него вообще такие возможности есть? Спрашиваю как человек, никогда не имевший дел с явой. Вот, помню, приложение, написанное на VB6, конечно, завершаясь, выгружало свою виртуальную машину, поскольку это всего лишь dll. А что происходит тут, для меня темный лес.
...
Рейтинг: 0 / 0
10.03.2013, 19:06:34
    #38179061
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос сисадмина
Flying-homeНеисключено, что приложение криво написано. Но я вообще не имею представления, как должно работать консольное ява-приложение.Ровно так, как напишет его автор.
Поэтому попросите его о той самой паре строчек, которую вы упоминали.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос сисадмина / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]