스프링부트 종료하는 방법은 아주 간단합니다. 터미널을 연 뒤 프로세스를 직접 종료하면 됩니다. 아래는 이를 수행하기 위한 단계별 지침입니다.
netstat -ano | find "8080"
8080 포트를 먼저 찾습니다. 이 방법을 응용하면 다른 포트토 찾을 수 있게 돼요.
taskkill /pid 25948 /f
이제 pid 를 찾았으니 프로세스를 종료하면 됩니다.
먼저 스프링부트 애플리케이션이 실행중인 자바 프로세스를 찾아야 합니다.pgrep java
명령어를 사용하여 시스템에서 실행중인 모든 자바 프로세스의 아이디를 찾을 수있습니다.
pgrep java
이제 프로세스 아이디를 확인했다면 종료해야 합니다.
kill [프로세스ID]
kill 명령어를 활용하여 특정 자바 프로세스를 종료할 수 있습니다. 스프링 부트 앱의 정확한 프로세스 ID 를 알고 계시다면 해당 ID . 를통해 프로세스를 종료할 수있습니다.
kill `pgrep java`
응용해서 모두 종료하는 코드를 만들어봤습니다.kill $(pgrep java)
와 같이 사용하는 방법도 존재합니다
kill -SIGTERM [프로세스ID]
안전하게 몇초 뒤에 종료하는 방법입니다 SIGTERM 신호는 프로세스에게 안전하게 종료할 수 있는 시간을 제공합니다.
server.shutdown=graceful
spring.lifecycle.timeout-per-shutdown-phase=30s
스프링 부트 2.3 이상부터 안전한 종료(그레이스풀 셧다운) 을 할 수 있도록 지원하고 있습니다.
이를 활용하면 현재 진행 중인 작업을 마무리하고 리소스를 정리한 후 애플리케이션을 종료할 수 있습니다.
Boot 실행 시 pid 를 생성할 수 있습니다.
일반적으로 jar 파일을 명시해서 실행하기 때문에 크게 필요성이 없을 수 있지만 만약 번거로움이 있다면
해당 파일을 추가하여 개발 속도를 늘릴 수 있게 됩니다.
spring.pid.file=server.pid
application.properties
파일에 PID 파일 설정을 추가합니다.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.ApplicationPidFileWriter;
@SpringBootApplication
public class WebApplication {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(WebApplication.class);
// PID 파일 생성을 위한 리스너 추가
application.addListeners(new ApplicationPidFileWriter("server.pid"));
application.run(args);
}
}
kill -15 $(cat server.pid)
이제 pid 를 입력합니다