Linuxpia/리눅스 사용 팁

[리눅스 팁] 프로세스 교체하기

Linuxpia4U 2024. 5. 14. 05:55
반응형

프로세스 교체하기

Linux 및 유닉스 시스템에서 쉘은 사용자 명령을 처리하는 인터페이스입니다. 사용자가 쉘에서 명령을 입력하면, 쉘이 다음과 같은 과정을 거쳐 명령을 실행합니다:

  1. 명령 해석: 사용자가 입력한 명령을 해석하고 실행해야 할 작업을 결정합니다.
  2. 프로세스 생성: 쉘은 fork() 시스템 호출을 사용하여 새로운 프로세스를 생성합니다. 이 새로운 프로세스는 쉘의 자식 프로세스가 됩니다.
  3. 명령 실행: 새로 생성된 자식 프로세스는 exec() 계열의 시스템 호출을 사용하여 자신을 사용자가 요청한 명령으로 대체합니다. 예를 들어, ls, grep 등의 명령은 적절한 실행 파일로 자식 프로세스를 대체합니다.
  4. 명령 처리 후 종료: 명령이 실행을 완료하면, 자식 프로세스는 종료됩니다. 프로세스의 종료 상태는 쉘로 반환되며, 쉘은 이를 받아 처리할 수 있습니다.
  5. 리소스 정리: 자식 프로세스가 종료되면, 운영 시스템은 사용했던 모든 리소스(메모리, 파일 디스크립터 등)를 회수합니다. 쉘은 wait() 또는 waitpid() 시스템 호출을 사용하여 자식 프로세스의 종료를 기다리고, 종료 상태를 확인합니다.

이 과정을 통해 쉘은 명령을 별도의 프로세스에서 안전하고 효율적으로 실행할 수 있으며, 명령 실행이 쉘 자체의 실행에 영향을 주지 않도록 합니다. 이는 멀티태스킹 운영 시스템의 중요한 특성 중 하나로, 사용자와 시스템 간의 상호 작용을 원활하게 하며 시스템의 안정성과 보안을 유지하는 데 기여합니다.

 

새로운 쉘 실행하고 확인하기

새로운 쉘을 실행하고 프롬프트를 'easyfly> '로 변경해 봅니다. 'bash' 명령어로 새로운 쉘을 실행합니다. 새로 생성된 쉘의 프롬프트를 변경하기 위해 'PS1="easyfly> " 명령을 줍니다.

새로운 쉘 실행

 

프롬프트가 변경된 화면입니다. 여기서 'echo hello' 명령을 입력하면 당연히 그 상태에서 'hello'를 화면에 출력합니다.

변경된 프롬프트

 

변경된 프롬프트에서 'exec' 명령을 사용하면 새로 실행한 쉘이 사라집니다. 프롬프트가 다시 원상으로 복구됨을 알 수 있습니다. 새로운 쉘을 실행하지 않고 'exec' 명령을 사용하면 터미널이 종료됩니다.

원래 부모 쉘의 프롬프트

 

'exec' 명령을 쉘에서 직접 사용하면 해당 쉘이 종료되고, 로그인 쉘이었다면 시스템에서 로그아웃될 것입니다.

반응형