반응형
프로세스 교체하기
Linux 및 유닉스 시스템에서 쉘은 사용자 명령을 처리하는 인터페이스입니다. 사용자가 쉘에서 명령을 입력하면, 쉘이 다음과 같은 과정을 거쳐 명령을 실행합니다:
- 명령 해석: 사용자가 입력한 명령을 해석하고 실행해야 할 작업을 결정합니다.
- 프로세스 생성: 쉘은
fork()
시스템 호출을 사용하여 새로운 프로세스를 생성합니다. 이 새로운 프로세스는 쉘의 자식 프로세스가 됩니다. - 명령 실행: 새로 생성된 자식 프로세스는
exec()
계열의 시스템 호출을 사용하여 자신을 사용자가 요청한 명령으로 대체합니다. 예를 들어,ls
,grep
등의 명령은 적절한 실행 파일로 자식 프로세스를 대체합니다. - 명령 처리 후 종료: 명령이 실행을 완료하면, 자식 프로세스는 종료됩니다. 프로세스의 종료 상태는 쉘로 반환되며, 쉘은 이를 받아 처리할 수 있습니다.
- 리소스 정리: 자식 프로세스가 종료되면, 운영 시스템은 사용했던 모든 리소스(메모리, 파일 디스크립터 등)를 회수합니다. 쉘은
wait()
또는waitpid()
시스템 호출을 사용하여 자식 프로세스의 종료를 기다리고, 종료 상태를 확인합니다.
이 과정을 통해 쉘은 명령을 별도의 프로세스에서 안전하고 효율적으로 실행할 수 있으며, 명령 실행이 쉘 자체의 실행에 영향을 주지 않도록 합니다. 이는 멀티태스킹 운영 시스템의 중요한 특성 중 하나로, 사용자와 시스템 간의 상호 작용을 원활하게 하며 시스템의 안정성과 보안을 유지하는 데 기여합니다.
새로운 쉘 실행하고 확인하기
새로운 쉘을 실행하고 프롬프트를 'easyfly> '로 변경해 봅니다. 'bash' 명령어로 새로운 쉘을 실행합니다. 새로 생성된 쉘의 프롬프트를 변경하기 위해 'PS1="easyfly> " 명령을 줍니다.
프롬프트가 변경된 화면입니다. 여기서 'echo hello' 명령을 입력하면 당연히 그 상태에서 'hello'를 화면에 출력합니다.
변경된 프롬프트에서 'exec' 명령을 사용하면 새로 실행한 쉘이 사라집니다. 프롬프트가 다시 원상으로 복구됨을 알 수 있습니다. 새로운 쉘을 실행하지 않고 'exec' 명령을 사용하면 터미널이 종료됩니다.
'exec' 명령을 쉘에서 직접 사용하면 해당 쉘이 종료되고, 로그인 쉘이었다면 시스템에서 로그아웃될 것입니다.
반응형
'Linuxpia > 리눅스 사용 팁' 카테고리의 다른 글
[리눅스 팁] 명령어의 다양한 활용 (45) | 2024.05.16 |
---|---|
[리눅스 팁] 'exec'를 이용한 리디렉션 (43) | 2024.05.15 |
[리눅스 팁] 다양한 하위 셸 확인 (36) | 2024.05.13 |
[리눅스 팁] 하위 셸(subshell)을 명시적으로 사용하는 기법 (41) | 2024.05.12 |
[리눅스 팁] 프로그램 편집기를 종료하지 않고 테스트하는 방법 (37) | 2024.05.11 |