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

Значит он ошибки выводит в errout.
1) Попросить выводить ошибки в лог (stdout) (Скорее всего написать обработку ошибок)
2) Воспользоваться программами анализаторами потокового вывода (awk, sed и т.д.)
...
Рейтинг: 0 / 0
Вопрос сисадмина
    #38173025
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написать скрипт на vbs поднимающий процесс "проги" и перехватывающий stderr
...
Рейтинг: 0 / 0
Вопрос сисадмина
    #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
Вопрос сисадмина
    #38173030
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью вот этого обернуть прогу в Windows Service
http://commons.apache.org/proper/commons-daemon//procrun.html
И, как верно заметили выше, посмотрите System.setErr(), System.setOut(), чтобы направаить вывод в нужном направлении. Например в файл, или в память. Тогда при нужном событии эти данные можно перечитать и отправить по почте.
...
Рейтинг: 0 / 0
Вопрос сисадмина
    #38173031
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про батник c goto 0 надеюсь сами найдете
...
Рейтинг: 0 / 0
Вопрос сисадмина
    #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
Вопрос сисадмина
    #38173539
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeТо есть, когда я ее запускаю у себя, используя ">>", она лог пишет в указанный мной файлик, а ошибки вываливает непосредственно в консоль.Азбука комстроки:
Код: sql
1.
программа аргументы > файл1 2> файл2

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

После появления ошибок прога останавливает свое выполнение. То есть мне надо увидеть, что в консоли выползли ошибки, закрыть консоль и запустить прогу заново. Стоит задача "забыть" про существование этой проги, то есть полностью автоматизировать ее перезапуск в случае возникновения ошибок.Как уже сказали - Daemon : Procrun плюс стандартные настройки перезапуска служб.
...
Рейтинг: 0 / 0
Вопрос сисадмина
    #38173690
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо. Буду курить ссылки.
...
Рейтинг: 0 / 0
Вопрос сисадмина
    #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
Вопрос сисадмина
    #38174171
Фотография Flying-home
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замечание №1. По поводу оборачивания батника в службу и перезапуска его средствами управления службами. Не выйдет, по той простой причине, что когда ява-приложение остановится, сама ява-машина об этом никого предупреждать не будет. Она будет продолжать работать. Ведь в батнике у нас просто запуск java.exe с указанием jar. Единственный способ узнать, что программа требует перезапуска - это увидеть, что в errout что-то появилось.
...
Рейтинг: 0 / 0
Вопрос сисадмина
    #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
Вопрос сисадмина
    #38174383
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flying-homeТоже самое. После
Код: powershell
1.
cmd /c "proga.exe > nul 2>err.tmp"

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

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

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


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