맥에서 앱 강제 종료하는 법

맥을 사용하다 앱의 작동이 예기치 않게 멈췄을 때, 강제 종료하는 방법입니다. 아래 방법을 참고하시어, 작동하지 않는 앱을 강제 종료하시기 바랍니다.


실행 중인 앱 강제 종료하는 방법

보통, 일반적인 GUI 환경에서는 cmd + option + escape(esc) 버튼을 통해 Force Quit Applications 을 불러 올 수 있습니다. 하지만 이 명령어로써는 현재 실행중인 모든 프로세스를 확인할 수는 없습니다. 간단하게 강제 종료 단축키를 찾고 계시다면 이 방법만 아셔도 충분합니다.

  • cmd + option + esc ▼

forcequit


현재 동작 중인 프로세스 종료하기

현재 실행 중인 프로세스를 확인하고, 이 중 원하는 프로세스를 종료하는 방법입니다.

 

1) ‘Activity Monitor(활성 상태 보기)’로 접근합니다.

  • cmd + space(스팟라이트) > ‘Activity Monitor’ ▼

2) 종료하고자 하는 프로세스를 선택하시고, 좌측 상단의 ‘X 버튼’를 누르시면 해당 프로세스를 종료할 수 있습니다.

* Activity Monitor에 관한 자세한 정보는 링크를 참조 부탁드립니다.


터미널에서 강제 종료하는 방법

터미널에서 현재 활성화된 프로세스들을 확인하고, 이를 종료하는 방법입니다. 터미널을 활용할 줄 아시는 분들은 GUI보다 손쉽게 프로세스를 확인하고 종료하실 수 있습니다.

1) ‘ps(Process Status)’ 커맨드를 입력합니다. ▼

$ ps -acx
  • PID : 식별 번호들입니다. (이후, kill 커맨드를 이용하여 프로세스를 죽일 수 있는 번호입니다.)
  • TTY : 프로세스가 돌고 있는 터미널 식별 번호입니다. 이곳에 ?? 표시가 있다면 이는 이 프로세스가 어떤 특정한 터미널에 속해 있지 않다는 뜻입니다.
  • TIME : 프로세스가 실행된 시간
  • CMD : 현재 실행 중인 특정 커맨드(executable name) ps-ax를 통해 전체 경로 역시 확인할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
~/Sites/etc (546): ps acx
  PID TTY           TIME CMD
1 ??         4:09.68 launchd
40 ??         0:05.81 syslogd
41 ??         0:26.60 UserEventAgent
43 ??         0:04.30 uninstalld
…..
2995 ttys001    0:09.58 php
516 ttys002    0:00.05 iTerm2
544 ttys002    0:00.02 login
554 ttys002    0:00.11 bash
546 ttys003    0:00.04 iTerm2
556 ttys003    0:00.02 login
557 ttys003    0:00.12 bash
790 ttys003    0:00.02 sh
875 ttys003    9:02.55 mysqld
2274 ttys003    0:00.18 php
2832 ttys004    0:00.03 iTerm2
2833 ttys004    0:00.02 login
2834 ttys004    0:00.18 bash
2889 ttys004    0:00.01 man
2890 ttys004    0:00.00 sh
2891 ttys004    0:00.00 sh
2894 ttys004    0:00.00 sh
2895 ttys004    0:00.00 less
2972 ttys004    0:00.00 mv
4197 ttys004    0:00.00 ps
cs

 

2) 종료하기를 원하는 프로세스 번호(PID)를 kill 커맨드와 함께 사용합니다.

$ kill 2895 //2895번 프로세스 죽이기

 

참고) -acx 플래그와 함께 쓰인 ps 커맨드

위 예시에서 사용한 터미널 커맨드 ‘ps’는 어떤 경로에서든 호출이 가능합니다. 하지만 만약, 플래그 없이 ps만 호출시엔 현재 열려있는 앱의 정보를 볼 수 없기 때문에 우리가 원하는 ‘프로세스 죽이기’ 작업을 할 수 없을 수 있습니다.

  • -acx 플래그 정보 | man ps
1
2
3
4
5
6
7
8
9
10
11
12
a      Display information about other users processes as well as
             your own.  This will skip any processes which do not have a
             controlling terminal, unless the x option is also specified.
c      Change the “command column output to just contain the exe
             cutable name, rather than the full command line.
x      When displaying processes matched by other options, include
             processes which do not have a controlling terminal.  This is
             the opposite of the X option.  If both X and x are speci
             fied in the same command, then ps will use the one which was
             specified last.
cs

 

  • -a : 다른 유저들의 프로세스들도 open 합니다. -x 옵션이 없을 경우, 터미널에서 컨트롤되지 않는 프로세스는 스킵합니다. 즉, GUI에서 실행 중인 프로세스는 검색되지 않습니다.
  • -c : 긴 경로 대신 짧은 ‘실행된 앱의 이름’을 호출합니다. 가독성을 높혀줍니다.
  • -x : 터미널에서 컨트롤 되지 않는 프로세스도 호출합니다. GUI에서 실행 중인 프로세스도 함께 확인합니다.

 

또한, grep 커맨드와 같이 사용하시면, 찾고자 하는 프로세스 이름을 빠르게 찾으실 수 있습니다. ▼

~ (455) $ps -acx | grep 'Google'
750 ?? 13:16.60 Google Chrome
765 ?? 7:01.92 Google Chrome Helper

이상입니다. 질문사항이나 오류가 있다면 댓글로 부탁 드립니다.

 

댓글 남기기