#java #solaris #startup
#java #solaris #запуск
Вопрос:
Я хочу запустить свою java-программу с именованным PID (идентификатором процесса) в моем окне solaris. При запуске любого PID, сгенерированного для моей программы, я хочу, чтобы он добавлял строку, чтобы позже я мог идентифицировать эту конкретную программу и закрыть ее.
например, если сгенерированный PID равен 1234, я хочу создать его как EventListener_PID_1234
Комментарии:
1. PID — это число, а не строка, и вы не можете его изменить. Если вы хотите найти PID, используйте
jps -lvm
2. PIDS устанавливаются ОС, Java также не имеет возможности управлять этим.
3. спасибо за комментарий, чего я хочу достичь, так это пометить мой процесс чем-то конкретным, чтобы позже я мог идентифицировать этот процесс среди многих других Java-процессов, запущенных в том же окне, чтобы убить его.
Ответ №1:
вы можете выполнить поиск по tasklist.exe чтобы найти имя вашей программы, а затем получить ее PID, вы можете легко ее отключить, вот пример, чтобы найти все процессы, связанные с браузером Chrome
public static void main(String[] args){
// TODO code application logic here
try {
String processrow;
Process p = Runtime.getRuntime().exec(System.getenv("windir") "\system32\" "tasklist.exe");
BufferedReader input =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String[] process;
while ((processrow = input.readLine()) != null) {
//System.out.println(processrow); to display all tasklist.exe processes table
process = processrow.split("\s ");
if(process[0].equalsIgnoreCase("chrome.exe")) // index 0 hold the program name
{
System.out.println(process[1]); // index 1 hold the program PID assign by theOS
}
}
input.close();
// your process killing code gose here
} catch (Exception err) {
err.printStackTrace();
}
}
Комментарии:
1. Я не хочу запускать другую Java-программу только для того, чтобы убить мой конкретный процесс. Должна быть какая-то команда unix, с помощью которой я мог бы узнать PID моей только что запущенной java-программы и сохранить его где-нибудь, чтобы позже я мог получить этот pid и уничтожить его.