주의: 이 앱은 대상 프로세스에
SIGKILL을 보냅니다. 저장하지 않은 작업은 사라질 수 있어요.
다죽이기와 적당히 죽이기는 버튼을 누르면 추가 확인 없이 바로 실행됩니다. 일부러 그렇게 만든 동작이에요. 처음에는 DMG에 함께 든 killeverybody-cli로 드라이런해 보는 걸 권합니다.
/Volumes/killeverybody/killeverybody-cli --dry-run| 기능 | 동작 |
|---|---|
| 다죽이기 | 실행 중인 앱과 그 자식 프로세스를 종료합니다. 고정 시스템 보호 목록과 killeverybody 자신만 남기며, 저장한 예외는 적용하지 않습니다. |
| 적당히 죽이기 | 같은 범위에서 사용자가 고른 예외 앱, 메뉴 막대 취급 앱, 내장 프리셋, LSUIElement 앱을 제외합니다. |
| 예외 앱 설정… | 아이콘이 있는 앱 목록을 이름·번들 ID·경로로 검색하고 체크합니다. 필터와 저장되는 정렬 메뉴도 있어요. |
| 이 앱 강제 종료 | 예외 목록에서 실행 중인 앱을 우클릭하면 그 앱과 자식·헬퍼만 추가 확인 없이 종료합니다. 예외 체크는 그대로 둡니다. |
| 한국어·English·日本語 | 고급 설정에서 언어를 직접 고르면 메인 경고창과 설정 UI에 바로 적용됩니다. |
| 자동 재실행 억제 | 종료 대상 앱과 연결된 서드파티 LaunchAgent를 현재 로그인 세션에서만 내립니다. 다음 로그인 때는 원래대로 돌아옵니다. |
| 자동 업데이트 | Sparkle이 GitHub Releases의 새 DMG를 확인하고 가능한 업데이트를 자동으로 내려받아 설치합니다. |
종료가 모두 성공하면 결과 창을 띄우지 않고 killeverybody도 정상 종료합니다. 실패한 항목이 있을 때만 결과와 관리자 권한 재시도 버튼을 보여 줍니다.
요구 환경은 macOS 13 Ventura 이상입니다.
- 최신 릴리즈에서
KillEverybody-macOS.dmg를 받아요. - DMG를 열고
killeverybody.app을 응용 프로그램 폴더에 옮겨요. - 앱을 실행하면 끝입니다.
GitHub Actions 배포판은 현재 Apple 개발자 서명·공증이 없습니다. macOS가 막으면 앱을 우클릭 → 열기로 한 번 실행하거나, 시스템 설정 → 개인 정보 보호 및 보안에서 허용해 주세요.
앱을 켜면 Sparkle이 백그라운드에서 새 버전을 확인합니다. 직접 확인하려면 앱 메뉴의 업데이트 확인…, 브라우저에서 받으려면 **최신 릴리즈 열기…**를 누르면 돼요. 업데이트 DMG의 무결성은 Sparkle EdDSA 서명으로 확인합니다.
- 앱을 켜면 macOS 기본 경고창 느낌의 「다 죽일까요?」 창이 나옵니다.
- 정말 전부 정리하려면 다죽이기를 누릅니다.
- 보호할 앱을 남기려면 먼저 **예외 앱 설정…**에서 체크한 뒤 적당히 죽이기를 누릅니다.
- 앱만 닫으려면 종료를 누르거나
Esc를 누릅니다.
**예외 앱 설정…**을 누르면 별도 설정 창이 열립니다.
- 설치된 앱과 실행 중인 앱을 아이콘과 함께 보여 줍니다.
- 앱 이름, 번들 ID, 경로로 검색할 수 있습니다.
- 보호 앱 먼저(기본)·비보호 앱 먼저·이름순으로 정렬할 수 있고 마지막 선택을 기억합니다.
- 실행 중인 앱을 우클릭해 이 앱 강제 종료를 고르면 해당 앱과 자식·헬퍼만 바로 종료합니다. 성공하면 실행 상태만 조용히 갱신하고, 실패했을 때만 알려 줍니다.
- 첫 실행 때 macOS 로그인 앱을 기본 예외로 한 번만 체크합니다. 이 조회 때문에 관리자 암호를 묻지 않습니다.
- 체크를 바꾸면 바로 저장됩니다.
- 고급 탭에서는 한국어·English·日本語를 고르고, 번들 ID를 직접 넣거나 메뉴 막대 앱으로 취급할 번들을 추가할 수 있습니다.
- 현재 예외·메뉴 막대 정책을 JSON으로 내보내거나 다시 가져올 수 있습니다.
DMG 안의 killeverybody-cli는 기본 동작이 드라이런입니다. 후보만 출력하며 신호를 보내지 않아요.
# 적당히 죽이기 후보
/Volumes/killeverybody/killeverybody-cli --dry-run
# 다죽이기 후보
/Volumes/killeverybody/killeverybody-cli --aggressive --dry-run
# JSON으로 보기
/Volumes/killeverybody/killeverybody-cli --dry-run --json
# 앱에서 내보낸 정책 JSON 적용
/Volumes/killeverybody/killeverybody-cli --policy ./killeverybody-policy.json --dry-runCLI는 앱의 저장 설정을 자동으로 읽지 않습니다. 같은 예외를 쓰려면 앱에서 정책 JSON을 내보내 --policy로 지정하세요. 실제 종료는 --execute --yes를 함께 넣어야만 작동합니다.
- 대상은 현재 사용자 계정에서 실행 중인 앱과 그 자식 프로세스입니다. 같은 UID라는 이유만으로 셸이나 모든 백그라운드 프로세스를 죽이지는 않습니다.
- 시스템 핵심 프로세스와 killeverybody 자신은 고정 보호 목록에서 제외합니다.
- 앱 헬퍼는 가장 바깥쪽 앱 번들에 묶어서 예외를 판단합니다.
- 자동 재실행 억제는
~/Library/LaunchAgents와/Library/LaunchAgents의 일치하는 서드파티 항목을 현재 GUI 세션에서만 내립니다. plist와 로그인 항목은 수정하지 않습니다. - 메뉴 막대 앱 판별은 공개 API 기반 휴리스틱이라 완벽하지 않습니다.
- Finder처럼 macOS가 직접 관리하는 앱은 다시 켜질 수 있습니다.
- 데이터 보존이나 시스템 안정성을 보장하지 않습니다. 중요한 작업은 먼저 저장하세요.
Xcode에서 KillEverybodyApp/KillEverybodyApp.xcodeproj를 열고 KillEverybodyApp 스킴을 실행하세요. 명령줄 빌드는 다음과 같습니다.
cd KillEverybodyApp
xcodebuild -scheme KillEverybodyApp -configuration Debug build CODE_SIGNING_ALLOWED=NOCLI는 KillEverybodyCLI 스킴으로 빌드할 수 있습니다. 더 자세한 내용은 docs/build.md를 봐 주세요.
- 저장소: github.com/devuterian/killeverybody
- 기여와 Sparkle 설정:
CONTRIBUTING.md - 수동 점검:
docs/smoke-test.md - 동작 명세:
SPEC.md - 버그와 질문: Issues
MIT License입니다. 위험한 도구인 만큼 면책 조항도 꼭 확인해 주세요.
저장소 운영·문서 골격은 LPFchan/repo-template을 참고했어요.
템플릿을 공개해 주셔서 고맙습니다.