2017-02-14 9 views
0

Можно ли убить выполнение программы java из терминала автоматически после определенного количества времени (при запуске не компиляции). Например, я хотел бы остановиться на следующее после 10 секунд:Автоматически убивать процесс java с терминала

java examples.Example 
+0

если вы знаете идентификатор процесса (PID), я полагаю, что «сон 10; убить PID» будет Покажи фокус? – user2660966

+0

Возможно, это возможно, но, я думаю, это больше вопрос администрирования сервера. И это зависит от ОС – Andremoniy

+0

, как я могу добавить его в одну строку? – Razieh

ответ

2

Если вам не нужно следить за выход процесса:

#!/bin/bash 
{ 
    java examples.Example >/some/place.log & 
    echo $! 
    wait $! 
} | { 
    sleep 10 
    kill $(read PID; echo $PID) 
} 

Этот скрипт запустит свой процесс в subshell, передать свой PID ожидающей подоболочке, которая будет ждать 10 секунд и убить ее.

Если вы знаете, что ваш процесс всегда будет занимать больше времени, чем 10 секунд, вы можете просто сделать это:

java examples.Example >/some/place.log & 
sleep 10 
kill $! 
+0

Нет необходимости в трубе. Процесс 'sleep' /' kill' не требует и не заботится о стандартном выходе другой команды. – chepner

+0

@chepner, так что первая подоболочка может отсылать PID ко второму. Это также позволяет параллельно создавать две подоболочки. –

+1

Этого не нужно. 'java ... & java_pid = $ !; (sleep 10; kill $ java_pid) & '. – chepner