30개 이상의 자주 묻는 Linux 인터뷰 질문 및 답변 [2023]

목차

리눅스 운영체제는 1991년 리누스 토르발즈의 개인적인 프로젝트로 시작되었지만, 이제는 슈퍼컴퓨터, 웹 서버, 스마트폰을 비롯한 다양한 기술 분야에서 핵심적인 역할을 수행하는 주요 운영체제로 자리매김했습니다.

리눅스는 뛰어난 안정성, 강력한 보안, 효율적인 리소스 관리 능력 덕분에 널리 선호되고 있습니다. 리눅스에 대한 관심과 활용도는 꾸준히 증가해 왔으며, 이러한 추세는 앞으로도 계속될 것으로 예상됩니다.

2021년 스태티스타(Statista)의 보고서에 따르면, 전문 개발자의 47%가 리눅스를 사용하고 있습니다. 같은 해에 발표된 제9회 연례 오픈소스 채용 보고서에서는 기업이 관리자 및 개발자를 채용할 때 리눅스 개발 및 관리 기술이 두 번째로 가장 수요가 높은 기술이라고 밝혔습니다.

리눅스 기술은 소프트웨어 개발, 시스템 관리, 데브옵스(DevOps), 네트워크 관리, 보안 엔지니어링, 데이터 과학 등 다양한 분야에서 필수적입니다. 따라서 이러한 분야에 관심이 있다면 리눅스 관련 면접을 볼 가능성이 매우 높습니다.

성공적인 면접을 위해, 가장 빈번하게 출제되는 리눅스 면접 질문과 모범 답변을 정리했습니다.

리눅스란 무엇인가?

답변: 리눅스는 리누스 토르발즈가 1991년에 개발한 오픈소스 운영체제이며, GNU GPL(일반 공중 사용 허가서)에 따라 무료로 배포됩니다.

왜 리눅스를 사용하는가?

답변: 리눅스 운영체제는 다양한 장점을 제공합니다. 우선, 리눅스는 보안성이 매우 뛰어나 맬웨어 공격에 거의 완벽하게 면역되어 있습니다.

또한, 리눅스는 뛰어난 안정성과 신뢰성을 자랑하며 시스템 충돌이 거의 발생하지 않아 많은 서버에서 리눅스를 사용하고 있습니다. 리눅스는 가볍고 RAM 및 메모리 사용량이 적어 구형 컴퓨터에서도 효율적으로 작동합니다.

무엇보다도 리눅스는 무료로 제공되는 오픈소스 운영체제이며, 지속적인 업데이트와 높은 사용자 정의 기능을 제공하여 사용자가 자신의 필요에 맞게 운영체제를 완벽하게 조정할 수 있습니다. 해커, 프로그래머, 일반 사용자 모두에게 최적화된 다양한 배포판을 선택할 수 있다는 점도 큰 장점입니다.

리눅스 OS의 기본 구성 요소는 무엇인가?

답변: 리눅스 OS는 세 가지 핵심 구성 요소로 이루어져 있습니다.

  • 커널: 리눅스 OS의 핵심 구성 요소입니다. OS의 최하위 계층에 위치하며 컴퓨터 하드웨어와 직접 상호 작용합니다. 커널은 CPU, 메모리, 스토리지와 같은 하드웨어 리소스를 할당 및 관리하며, OS 및 프로그램의 다른 부분에 필요한 서비스를 제공합니다.
  • 쉘: 사용자가 운영체제와 상호 작용하고 프로그램을 실행할 수 있도록 해주는 명령줄 인터페이스입니다. 사용자와 커널 간의 인터페이스 역할을 하며, 사용자의 명령을 해석하고 실행합니다.
  • 응용 프로그램: 운영체제 위에서 실행되며 웹 브라우징, 문서 작성, 음악 재생 등 특정 기능을 수행하는 프로그램입니다.

커널, 쉘, 응용 프로그램은 리눅스 운영체제를 구성하는 핵심 요소입니다.

리눅스가 더 안전한 것으로 간주되는 이유는 무엇인가?

답변: 리눅스의 보안성을 높이는 주요 요인은 오픈소스 특성에 있습니다. 많은 개발자가 지속적으로 리눅스 코드를 검토하며, 버그나 취약점이 발견되면 리눅스 포럼에서 즉시 논의되고 며칠 내에 해결됩니다.

또한 리눅스는 권한 및 권한 관리 방식이 기본적으로 일반 사용자에게 루트 액세스 권한을 부여하지 않도록 설계되어 있습니다.

이러한 접근 방식은 악성코드에 의한 피해를 최소화하는 데 효과적입니다. 해커는 사용자가 많은 운영체제를 주로 공격하기 때문에, 상대적으로 낮은 사용자 비율도 리눅스의 보안성에 기여합니다.

리눅스 커널이란 무엇인가?

답변: 리눅스 운영체제의 가장 핵심적인 부분이자 최하위 계층을 의미합니다. 커널은 하드웨어와 리눅스 OS의 나머지 부분 사이에 위치하며, 컴퓨터 하드웨어와 상호 작용하여 메모리, CPU, 스토리지 등 하드웨어 자원을 관리합니다.

또한 다양한 작업 및 프로세스가 원활하고 효율적으로 실행될 수 있도록 필요한 리소스를 할당합니다.

리눅스와 유닉스의 차이점은 무엇인가?

답변: 리눅스는 리누스 토르발즈가 개발한 무료 오픈소스 운영체제인 반면, 유닉스는 AT&T에서 개발한 휴대 가능하고 독점적인 멀티태스킹 다중 사용자 운영체제입니다. 유닉스는 리눅스와 달리 오픈소스가 아닙니다.

GUI란 무엇인가?

답변: GUI(그래픽 사용자 인터페이스)는 사용자가 창, 아이콘, 메뉴, 포인터, 스크롤 막대와 같은 그래픽 요소를 통해 운영체제와 상호 작용할 수 있도록 지원하는 사용자 인터페이스입니다.

마우스, 스타일러스, 트랙볼 또는 터치스크린과 같은 포인팅 장치를 사용하여 이러한 그래픽 요소를 조작합니다.

CLI란 무엇인가?

답변: CLI(명령줄 인터페이스)는 사용자가 터미널에 텍스트 문자열 형식으로 명령을 입력하여 컴퓨터 시스템과 상호 작용할 수 있도록 하는 텍스트 기반 사용자 인터페이스입니다.

컴퓨터 시스템은 전달된 명령을 실행하거나 요청된 정보를 표시하여 응답합니다.

리눅스 쉘에 대해 설명하시오.

답변: 리눅스 쉘은 사용자가 OS와 상호 작용하고 컴퓨터를 제어할 수 있도록 명령줄 인터페이스를 통해 입력된 명령을 해석하고 실행하는 프로그램입니다.

쉘은 사람이 읽을 수 있는 형식으로 명령을 받아 커널이 이해할 수 있는 형식으로 해석한 후 실행을 위해 커널에 전달합니다.

리눅스 쉘의 종류는?

답변: 리눅스에는 다양한 유형의 쉘이 있으며, 각 쉘은 특정 목적에 맞게 최적화되어 있습니다. 리눅스에서 사용되는 주요 쉘은 다음과 같습니다.

  • 본 쉘(Bourne Shell): ‘sh’로 표시
  • 본 어게인 쉘(Bourne Again Shell): ‘bash’로 표시
  • C 쉘(C Shell): ‘csh’로 표시
  • 콘 쉘(KornShell): ‘ksh’로 표시
  • Z 쉘(Z Shell): ‘zsh’로 표시
  • 피쉬(Friendly Interactive Shell): ‘fish’로 표시
  • 데비안 알름퀴스트 쉘(Debian Almquist Shell): ‘dash’로 표시
  • TENEX C 쉘(TENEX C Shell): ‘tcsh’로 표시

위의 목록은 널리 사용되는 리눅스 쉘의 일부입니다.

쉘 스크립트란 무엇인가?

답변: 쉘 스크립트는 리눅스 쉘에서 순서대로 실행되는 일련의 명령이 포함된 텍스트 파일입니다.

쉘 스크립트에는 명령줄 인터페이스에 한 번에 하나씩 입력해야 하는 명령들이 포함되어 있습니다. 쉘 스크립트는 반복적인 작업을 자동화하거나 일괄 작업을 실행하는 데 매우 유용합니다.

리눅스의 파일 권한에 대해 설명하시오.

답변: 리눅스에는 세 가지 유형의 파일 권한이 있습니다.

  • 읽기(r): 이 권한이 있는 사용자는 파일의 내용을 열람하고 읽을 수 있으며, 디렉터리의 내용을 볼 수 있습니다. 하지만 사용자는 디렉터리 내의 파일이나 내용을 수정할 수는 없습니다.
  • 쓰기(w): 파일에 대한 쓰기 권한이 있는 사용자는 파일의 내용을 수정할 수 있습니다. 디렉터리에 대한 쓰기 권한이 있는 사용자는 디렉터리 내에서 파일을 추가, 제거, 이름을 변경할 수 있습니다.
  • 실행(x): 이 권한이 있는 사용자는 파일을 프로그램으로 실행할 수 있습니다. 리눅스에서는 실행 권한이 없는 사용자는 프로그램을 실행할 수 없습니다.

위에 설명된 권한들이 리눅스 운영체제에서 파일 권한을 구성하는 핵심 요소입니다.

리눅스에서 권한을 부여하는 방법은 무엇인가?

답변: 리눅스에서 권한을 부여하려면 ‘change mode’를 의미하는 chmod 명령을 사용합니다. chmod는 파일 또는 디렉터리의 권한을 변경하는 데 사용됩니다.

그룹(g), 사용자(u), 기타 사용자(o), 모든 사용자(a) 등 다양한 사용자 집합에 대해 권한을 부여할 수 있습니다. 이러한 사용자에 대한 권한은 읽기(r), 쓰기(w), 실행(x) 권한을 추가(+)하거나 제거(-)하여 부여할 수 있습니다.

권한을 변경하는 명령어 형식은 다음과 같습니다.

chmod permissions file/directory-name

리눅스에서 파일이 저장된 위치를 찾는 방법은 무엇인가?

답변: 리눅스에서 파일이 저장된 위치를 찾으려면 먼저 다음 명령을 실행합니다.

find <fileName>

이 명령은 사용 가능한 디렉터리에서 파일을 검색합니다. 입력한 파일 이름의 파일이 발견되면 다음 명령을 실행할 수 있습니다.

realpath <fileName>

이 명령은 해당 파일이 저장된 절대 경로를 찾아줍니다.

리눅스에서 디렉터리를 삭제하는 방법은 무엇인가?

답변: 리눅스에서 디렉터리를 삭제하려면 rmdir 명령을 사용할 수 있습니다. 이 명령은 ‘remove directory’를 의미하며, 비어 있는 디렉터리를 삭제하는 데 사용됩니다.

예를 들어, test라는 비어 있는 디렉터리를 삭제하려면 다음 명령을 실행합니다.

rmdir test

비어 있지 않은 디렉터리를 삭제하려면 -r 플래그와 함께 rm 명령을 실행합니다.

rm -r sample

스왑 공간이란 무엇인가?

답변: 스왑 공간은 RAM 용량이 부족할 때 리눅스 운영체제에서 사용하는 하드 드라이브의 특정 영역으로, 보통 파티션 형태로 존재합니다.

메모리가 더 필요하거나 RAM이 가득 차거나 비활성 상태이거나 자주 액세스하지 않는 경우, 페이지가 RAM에서 제거되어 스왑 공간에 저장됩니다. 이를 통해 RAM에 더 많은 프로세스를 위한 공간을 확보할 수 있습니다.

릴로(LILO)란 무엇인가?

답변: 릴로(LILO)는 리눅스 로더(Linux Loader)의 약자로, 리눅스 운영체제용 부트로더입니다. 부트로더는 운영체제를 메모리에 로드하고 컴퓨터를 켠 후 시작하는 프로그램입니다.

컴퓨터가 켜지면 LILO는 리눅스 커널과 기타 필요한 프로그램을 찾아 메모리에 로드합니다. 완료되면 리눅스 커널을 시작합니다.

리디렉션이란 무엇인가?

답변: 리디렉션은 일반적으로 키보드인 표준 입력의 소스와 일반적으로 화면인 표준 출력 및 표준 오류의 대상을 변경하는 것을 의미합니다.

예를 들어, 리디렉션을 사용하면 파일에서 입력을 가져올 수 있고, 출력 및 오류 정보를 파일에 저장할 수 있습니다.

명령 그룹화란 무엇인가?

답변: 명령 그룹화는 여러 명령을 하나의 단위로 묶어 한 번에 실행하는 방법입니다. 그룹화를 사용하면 여러 명령을 단일 블록으로 실행할 수 있습니다.

그룹화는 종종 리디렉션 및 파이핑과 같은 기능과 함께 사용되어 더 복잡한 스크립트를 만들고 작업을 자동화하는 데 활용됩니다.

상태 비저장 리눅스 서버란 무엇인가?

답변: 상태 비저장 서버는 상태 정보나 데이터를 로컬에 저장하지 않는 서버를 의미합니다. 모든 데이터 저장은 클라이언트 측에서 이루어지며, 서버는 제공하는 데이터에 대한 기록을 가지고 있지 않습니다.

네트워크 본딩이란 무엇인가?

답변: 네트워크 본딩은 여러 네트워크 인터페이스를 단일 인터페이스로 통합하는 기술입니다. 이는 네트워크 대역폭, 처리량 및 백업 연결을 증가시켜 네트워크 성능을 향상시킵니다.

grep 명령이란 무엇인가?

답변: grep (Global Regular Expression Print) 명령은 파일에서 특정 패턴을 검색하는 데 사용되는 명령줄 도구입니다. 지정된 패턴이 포함된 파일의 모든 행을 표시합니다. 검색 패턴은 정규식으로 표현되며, 일반적으로 문자열입니다.

데몬이란 무엇인가?

답변: 데몬은 사용자 개입 없이 백그라운드에서 실행되는 유틸리티 프로그램입니다. 데몬은 주변 장치 모니터링, 시스템 유지 관리 등과 같은 작업을 수행하며, OS가 원활하게 실행되도록 합니다.

심볼릭 링크란 무엇인가?

답변: 심볼릭 링크(또는 소프트 링크)는 다른 파일이나 디렉터리를 가리키는 리눅스 OS의 파일 유형입니다. 윈도우 운영체제의 바로 가기와 유사합니다.

심볼릭 링크는 접근하기 어렵거나 불편한 파일에 대한 접근성을 향상시키는 데 사용됩니다.

환경 변수란 무엇인가?

답변: 환경 변수는 쉘에 설정된 동적 변수이며, 프로그램이 사용자의 요구에 맞게 동작하거나 구성을 설정하는 데 필요한 정보를 저장하는 데 사용됩니다.

일부 환경 변수의 예로는 시스템의 기본 언어를 저장하는 LANG, 임시 파일에 사용되는 디렉터리를 나타내는 TEMP, 현재 사용자의 홈 디렉터리를 표시하는 HOME 등이 있습니다.

파일 내용을 보기 위해 Bash와 dos 명령어를 구분하시오.

답변: bash 쉘에서 파일 내용을 보기 위해 사용할 수 있는 명령어는 다음과 같습니다.

  • cat: 파일 내용을 화면에 출력
  • nl: cat과 유사하지만, 출력된 내용 앞에 줄 번호를 추가
  • less: 파일 내용을 한 번에 한 페이지(화면)씩 읽음
  • head: 파일의 처음 10줄을 화면에 출력
  • tail: 파일의 마지막 10줄을 화면에 출력

dos 쉘에서는 다음 명령어를 사용하여 파일 내용을 볼 수 있습니다.

  • type: 파일을 수정하지 않고 내용을 표시
  • more: 한 번에 한 화면씩 파일 내용을 표시

bash 및 dos 쉘은 파일 내용을 보는 데 사용되는 다양한 명령어를 제공합니다.

일부 리눅스 배포판의 이름을 나열하시오.

답변: 리눅스 배포판은 패키지화되어 사용자에게 배포되는 리눅스 쉘 기반의 리눅스 버전입니다.

널리 사용되는 리눅스 배포판에는 Ubuntu, Fedora, Debian, CentOS, Arch Linux, Red Hat Enterprise Linux, Mint Linux 등이 있습니다.

리눅스의 프로세스 상태는 무엇인가?

답변: 리눅스에서 주요 프로세스 상태는 다음과 같습니다.

  • Running: 프로세스가 현재 CPU에서 실행 중인 상태
  • Sleeping: 프로세스가 현재 사용할 수 없는 리소스를 기다리는 상태
  • Stopped: 프로세서 또는 신호에 의해 프로세스가 종료된 상태
  • Zombie: 프로세스가 종료되었지만 부모 프로세스가 아직 리소스를 해제하지 않은 상태

위에 나열된 내용들이 리눅스에서 주요 프로세스 상태를 구성합니다.

리눅스의 프로세스 관리 시스템 호출에는 어떤 것이 있는가?

답변: 다양한 프로세스 관리 시스템 호출에는 다음이 포함됩니다.

  • fork(): 새 프로세스를 생성하는 데 사용
  • kill(): 실행 중인 프로세스를 종료하라는 신호를 보내는 데 사용
  • wait(): 자식 프로세스가 종료될 때까지 호출 프로세스의 실행을 일시 중지
  • exec(): 현재 프로세스에 프로그램을 로드하고 실행
  • exit(): 프로그램 실행을 종료

위에서 언급한 호출들은 리눅스의 주요 프로세스 관리 시스템 호출입니다.

프로세스의 상태를 확인하는 방법은 무엇인가?

답변: 리눅스 시스템에서 활성 상태의 모든 프로세스 현재 상태를 보려면 ‘ps’ 명령을 실행하여 프로세스 상태를 확인할 수 있습니다.

특정 프로세스에 대한 자세한 내용을 보려면 다음 명령을 실행하십시오.

ps -p <processID>

리눅스에서 실행 중인 프로세스를 중지하는 방법은 무엇인가?

답변: 리눅스에서 실행 중인 프로세스를 중지하려면 다음 명령을 실행합니다.

kill <processID>

이 명령은 지정된 ID를 사용하여 실행 중인 프로세스를 종료합니다. 다음 명령을 실행하여 이름으로 실행 중인 프로세스를 중지할 수도 있습니다.

killall <processName>

대소문자 구분은 명령어에 어떤 영향을 미치는가?

답변: 리눅스 OS에서 명령어는 대소문자를 구분합니다. 즉, 쉘은 대소문자가 다른 명령어를 구별하고 다른 명령어로 취급합니다.

예를 들어, ‘rmdir’ 명령어는 ‘RMDIR’과 동일하지 않습니다. 리눅스 OS에서 명령줄 명령어는 일반적으로 소문자로 작성됩니다.

리눅스에서 사용 중인 메모리 양을 확인하는 데 사용되는 명령어는 무엇인가?

답변: free 명령을 실행하면 시스템에서 사용된 공간과 여유 공간이 표시됩니다. 다양한 정보를 표시하기 위해 명령과 함께 다른 플래그를 사용할 수 있습니다.

ls 명령어란 무엇인가?

답변: 이 명령어는 디렉터리의 내용을 나열하는 데 사용됩니다.

ps 명령어란 무엇인가?

답변: ps 명령어는 현재 활성 프로세스에 대한 정보를 표시합니다.

netstat 명령어란 무엇인가?

답변: netstat 명령어는 시스템의 네트워크 연결과 관련된 정보를 표시하는 데 사용됩니다. 현재 활성 네트워크 연결에 대한 정보를 보여줍니다.

cp 명령어란 무엇인가?

답변: cp 명령어는 파일 및 디렉터리를 복사하는 데 사용됩니다.

mkdir이란 무엇인가?

답변: mkdir은 리눅스에서 디렉터리를 생성할 때 사용하는 명령어입니다.

cat 명령어란 무엇인가?

답변: cat 명령어는 파일의 내용을 확인하고, 새로운 파일을 생성하고, 다른 명령어의 출력을 리디렉션하고, 여러 파일을 연결하고, 출력을 화면에 표시하는 데 사용됩니다.

마지막 말

이 리눅스 면접 질문 및 답변 모음집이 여러분의 성공적인 면접을 돕기를 바랍니다.

행운을 빕니다! 👍