Укажите описание команды для видимости команды «ps»

Укажите описание команды для видимости команды «ps»

Итак, проблема, для которой я хочу найти аккуратное решение, заключается в том, что когда я вхожу на сервер (у меня есть несколько экземпляров Solaris и RHEL), я пытаюсь выяснить, какие приложения запущены:

$ ps -auxww | grep <thing I look for, usually Java>

И я получаю хороший список процессов, PID, дополнительные подробности, а также полное имя процесса и параметры, которые с ним выполняются. В то время как этов целомпредоставляет достаточно информации для меня, чтобы узнать, что запущено, некоторые серверы работают по-разному. У меня может быть сервер, на котором есть несколько экземпляров сервера приложений, используемых для разных целей. Другие процессы являются остатками зависшего процесса, который я смешал снезамороженныйпроцессы. Я не хочу завершать все экземпляры Java, потому что не могу узнать, какой процесс нужно завершить.

Решение, которое я хотел бы предложить, заключается в том, что во время моих сценариев запуска я хотел бы добавлять или дополнять процесс текстом, который позволяет мне добавить краткое описание. Есть ли что-то, что могло бы позволить мне это сделать?


Если то, о чем я прошу, звучит невозможным/глупым/полностью нереальным, я открыт для альтернативных решений, которые дадут мне возможность достичь того же самого. Я открыт для идей, но эта возникла как выполнимая.

решение1

Вот примергравитацияпредположение:

$ MARKER=snooze sleep 120&
$ ps ew | grep -o ".*[M]ARKER=snooze"
11741 pts/2    S      0:00 sleep 120 MARKER=snooze

Опция eзаставляет psпечатать окружение процесса. Опция -oи регулярное выражение делают так, что grepотсекают все окружение после той части, которую мы ищем, но я бы не стал делать ставку на то, что результаты всегда будут такими чистыми (может быть напечатано больше окружения). Помещение части шаблона в квадратные скобки выполняет функцию, которую люди часто используют for grep -v— для исключения самого grepсебя из результатов.

решение2

Похоже, вы хотите пометить каждый процесс уникальным тегом, чтобы его можно было легко обнаружить. Я на самом деле слышал, что это делается в большой корпорации их командой мониторинга — каждое приложение получало уникальный код, который можно было легко найти с помощью ps и grep.

В Java вы можете использовать -D для установки любой переменной, поэтому вы можете легко добавить что-то вроде "-Dmonitoringid=". Процесс проигнорирует это, но вы можете легко найти это с помощью grep.

В качестве альтернативы вы можете разделить свои серверы приложений, чтобы каждый из них работал под идентификатором, соответствующим обслуживаемому приложению. В настоящее время мы управляем большой фермой серверов приложений J2EE, со множеством приложений на каждом ящике, однако каждый из них работает под своим собственным идентификатором, чтобы разделить владение, доступ, элементы управления и т. д.

Это также означает, что найти любой сервер приложений на хосте так же просто, как: ps <whichever ps args you like best> | grep java | grep <uid> | grep -v grep

Связанный контент