리눅스/리눅스 기초

프로세스 강제 종료와 일시 중단, 'Ctrl + c'와 'Ctrl + z'

Linuxpia 2024. 10. 21. 17:28
반응형

Ctrl + cCtrl + z는 리눅스에서 프로세스를 제어하는 데 사용하는 두 가지 중요한 단축키입니다. 두 명령 모두 셸에서 실행 중인 프로세스에 영향을 미치지만, 그 작동 방식은 다릅니다. 여기서는 두 단축키의 차이점과 사용 사례를 비교하여 설명하겠습니다.

1. Ctrl + c: 프로세스 강제 종료

Ctrl + cSIGINT(interrupt signal)를 보내어 현재 실행 중인 프로세스를 강제 종료합니다. 이 신호는 프로세스에게 작업을 즉시 중단하도록 지시하며, 프로그램이 더 이상 실행되지 않도록 종료시킵니다.

작동 방식:

  • 실행 중인 프로세스에 SIGINT(인터럽트 신호)를 보내서 즉시 프로세스를 종료합니다.
  • 중지된 프로세스는 더 이상 메모리에서 실행되지 않으며, 종료 후에는 다시 복구할 수 없습니다.
  • 일반적으로 잘못된 명령어나 무한 루프에 빠진 프로그램을 종료할 때 사용됩니다.

사용 예시:

$ ping google.com  # 무한히 실행 중인 ping 명령어
Ctrl + c  # ping 명령어를 강제로 종료

2. Ctrl + z: 프로세스 일시 중단

Ctrl + zSIGTSTP(stop signal)를 보내어 현재 실행 중인 프로세스를 일시 중단(suspend)합니다. 일시 중단된 프로세스는 백그라운드로 보내져 중지 상태로 대기하게 됩니다. 사용자는 필요에 따라 이 프로세스를 다시 실행하거나 완전히 종료할 수 있습니다.

작동 방식:

  • 실행 중인 프로세스에 SIGTSTP(중지 신호)를 보내서 해당 프로세스를 백그라운드에서 일시 중지합니다.
  • 중지된 프로세스는 시스템 메모리에 남아 있으며, 사용자가 다시 시작할 때까지 실행되지 않습니다.
  • fg 명령을 사용하여 프로세스를 포그라운드로 복귀시켜 다시 실행하거나, bg 명령을 사용해 백그라운드에서 계속 실행할 수 있습니다.

사용 예시:

$ nano myfile.txt  # 텍스트 파일 편집 중
Ctrl + z  # 편집을 중지하고 셸로 돌아감
$ fg  # 중지된 nano 프로세스를 다시 포그라운드에서 실행

Ctrl + cCtrl + z의 주요 차이점

항목 Ctrl + c Ctrl + z
프로세스에 보내는 신호 SIGINT (인터럽트) SIGTSTP (중지)
프로세스 상태 완전히 종료됨 일시 중단됨 (백그라운드에서 대기)
메모리에서의 존재 여부 종료 후 메모리에서 사라짐 메모리에 유지됨
다시 실행 가능 여부 다시 실행할 수 없음 fg 또는 bg 명령으로 다시 실행 가능
사용 사례 무한 루프나 잘못된 명령 강제 종료 일시적으로 프로세스 중단 후 복귀 필요

 

상황별 사용 예시

  • 프로그램 강제 종료 필요시: 예를 들어, 사용자가 실수로 잘못된 명령을 실행했거나 무한 루프에 빠진 프로그램을 종료하려면 Ctrl + c가 적합합니다.
  • 작업을 일시 중단하고 싶을 때: 만약 현재 작업 중인 프로그램을 잠시 중단하고 셸로 돌아가 다른 작업을 하고 싶다면 Ctrl + z를 사용합니다. 이후에 해당 작업을 재개할 수 있습니다.

정리

  • Ctrl + c: 현재 실행 중인 프로세스를 즉시 종료하는 데 사용됩니다. 실행 중인 작업이 더 이상 필요 없거나 잘못된 경우 주로 사용됩니다.
  • Ctrl + z: 프로세스를 일시 중단하고 나중에 재개할 수 있도록 백그라운드로 보냅니다. 프로세스를 잠시 중단하고 다른 작업을 해야 할 때 유용합니다.

이 두 단축키는 리눅스에서 실행 중인 프로세스를 관리하는 기본적인 방법을 제공하며, 상황에 맞게 적절히 사용하여 시스템에서 효율적으로 작업을 처리할 수 있습니다.