Итак, проблема, для которой я хочу найти аккуратное решение, заключается в том, что когда я вхожу на сервер (у меня есть несколько экземпляров Solaris и RHEL), я пытаюсь узнать, какие приложения работают:
$ ps -auxww | grep <thing I look for, usually Java>
И я получаю хороший список процессов, PID, дополнительную информацию, а также полное имя процесса и параметры, которые выполнялись с ним. Пока это в общем-то предоставляет мне достаточно информации, чтобы понять, что работает, некоторые серверы работают по-другому. У меня может быть сервер, на котором есть несколько экземпляров сервера приложений, используемых для разных целей. Другие процессы - это остатки зависшего процесса, который я смешал с незамороженный процессы. Я не хочу отключать все экземпляры java, потому что не могу узнать, какой процесс нужно убить.
Решение, которое я хотел бы предложить, - это во время моих сценариев запуска, я хотел бы добавить к процессу некоторый текст, который позволяет мне вставить краткое описание. Есть ли что-нибудь, что может позволить мне это сделать?
Если то, о чем я спрашиваю, кажется невозможным / глупым / совершенно неуместным, я открыт для альтернативных решений, которые дадут мне некоторую возможность добиться того же. Я открыт для идей, но этот оказался осуществимым.
Похоже, вы хотите уникально пометить каждый процесс, чтобы вы могли легко его обнаружить. На самом деле я слышал, что это делается в большой корпорации их командой мониторинга - каждое приложение имеет уникальный код, который можно легко найти с помощью ps и grep.
В java вы можете использовать -D для установки любой переменной, поэтому вы можете просто добавить что-то вроде «-Dmonitoringid =». Процесс проигнорирует это, но вы можете легко найти его.
Кроме того, вы можете разделить серверы приложений для каждого запуска под идентификатором, специфичным для обслуживаемого приложения. В настоящее время у нас есть большая ферма серверов приложений J2EE с множеством приложений на каждом сервере, однако каждое из них работает под своим собственным идентификатором, чтобы разделить владение, доступ, элементы управления и т. Д.
Это также означает, что найти любой заданный сервер приложений на хосте так же просто, как: ps <whichever ps args you like best> | grep java | grep <uid> | grep -v grep
Вот пример гравитации предложение:
$ MARKER=snooze sleep 120&
$ ps ew | grep -o ".*[M]ARKER=snooze"
11741 pts/2 S 0:00 sleep 120 MARKER=snooze
В e
вариант делает ps
распечатать среду процесса. В -o
вариант и регулярное выражение make grep
отрубите любую часть среды после той части, которую мы ищем, но я бы не стал ставить на то, что результаты всегда будут такими чистыми (может быть напечатана большая часть среды). Заключение части выкройки в квадратные скобки выполняет функцию, которую люди часто используют grep -v
для - устранить grep
сам по результатам.