본문 바로가기
CS/Unix 시스템

리눅스 문제 풀이 - 리눅스 시작과 종료, 사용자 관리, vi 텍스트 편집

by Renechoi 2023. 11. 27.

문제: Rocky Linux에서 제일 먼저 실행되는 사용자 프로세스이며, PID가 1인 프로세스로 모든 사용자 프로세스의 최상위 부모 프로세스인 것은?

  1. boot loader
  2. bootstartp loader
  3. systemd
  4. kernel

정답: 3
해설: PID가 1인 제일 먼저 실행되는 프로세스이며, 모든 프로세스의 최상위 부모 프로세스인 것은 systemd이다.

시스템마다 약간의 차이는 있으나 전형적인 부팅 절차를 요약하면 다음과 같다. ㄱ에 들어갈 용어는 무엇인가?

- 머신 BIOS 또는 부트 펌웨어가 ㄱ을/로드하고 실행시킨다.
- ㄱ이/가 디스크에서 커널 이미지를 찾아 메모리에 로드하고 시작시킨다.
- 커널이 디바이스를 찾고 디바이스 드라이버를 로드한다.
- 커널이 루트 파일 시스템을 마운트한다.
- 커널은 ㄴ 프로세스를 시작시키고 제어권을 넘긴다.
- ㄴ 프로세스는 시스템 초기화 작업을 수행한다.
- 사용자가 로그인을 수행할 수 있도록 화면이 등장한다. 
  1. 프로세스
  2. 마스터 부트 레코드
  3. 부트 로더
  4. 부트스트랩

정답 :3

부팅 절차의 각 단계에 대한 설명은 다음과 같다.

  • BIOS 또는 부트 펌웨어가 부트 로더를 로드하고 실행: 컴퓨터의 전원이 켜지면, BIOS(Basic Input/Output System) 또는 UEFI(Unified Extensible Firmware Interface) 같은 부트 펌웨어가 실행된다. 이 부트 펌웨어는 저장 장치(예: 하드 드라이브, SSD 등)에서 부트 로더를 찾아 로드하고 실행한다.
  • 부트 로더가 디스크에서 커널 이미지를 찾아 메모리에 로드하고 시작: 부트 로더는 운영체제의 커널 이미지를 저장 장치에서 찾아 메모리에 로드하고, 커널의 실행을 시작한다. 부트 로더는 커널을 올바른 상태로 로드하고 초기화하는 역할을 한다.
  • 커널이 디바이스를 찾고 디바이스 드라이버를 로드: 커널은 시스템의 하드웨어를 인식하고 필요한 디바이스 드라이버를 로드한다.
  • 커널이 루트 파일 시스템을 마운트: 커널은 루트 파일 시스템을 마운트하여 운영체제가 파일 시스템에 접근할 수 있도록 한다.
  • 커널은 초기 프로세스를 시작시키고 제어권을 넘긴다: 커널은 시스템의 첫 번째 프로세스(예: init, systemd 등)를 시작하고, 이 프로세스에 시스템의 제어권을 넘긴다.
  • 초기 프로세스는 시스템 초기화 작업을 수행: 초기 프로세스는 서비스를 시작하고, 다양한 시스템 초기화 작업을 수행한다.
  • 사용자가 로그인을 수행할 수 있도록 화면이 등장: 마지막으로, 로그인 프롬프트 또는 그래픽 사용자 인터페이스(GUI)가 사용자에게 표시되어 로그인을 수행할 수 있게 된다.

문제: 위의 문제에 제시된 지문에서 ㄴ에 들어갈 내용은?

  1. /sbin/init
  2. /sbin/start
  3. /dev/mount
  4. /boot/init

정답: 1
해설: 초기화 스크립트를 실행시키는 것은 /sbin/init 스크립트 파일이다.

문제: 위의 문제에 제시된 지문에서 ㄴ에 들어갈 내용은?

  1. systemd 데몬
  2. start 데몬
  3. httpd 데몬
  4. cron 데몬

정답: 1
해설: systemd는 리눅스 운영체제에서 '시스템과 서비스 관리자'로서 기존의 init 프로세스가 하던 작업을 수행한다.

문제: 부팅 과정의 마무리를 담당하는 init 프로세스에 관한 설명으로 잘못된 것은?

  1. 압축된 커널 이미지를 메모리에 로드하여 압축을 푼다.
  2. 모든 사용자 프로세스의 최상위 프로세스이다.
  3. /etc/inittab 파일에서 시스템의 초기 런레벨을 읽는다.
  4. 초기화 스크립트를 실행시킨다.

정답: 1
해설: 커널 이미지를 로드하는 것은 부트 로더의 기능이다.

문제: 리눅스 시스템의 런레벨에 관한 설명으로 잘못된 것은?

  1. 0 - 시스템종료
  2. 1 - 단일 사용자 모드
  3. 3 - 네트워크 기능을 지원하는 다중 사용자 모드
  4. 5 - 시스템 재부팅

정답: 4
해설: 런레벨 5는 그래픽 사용자 환경을 지원하는 다중 사용자 모드이다. 재부팅에 사용되는 런레벨은 6이다.

문제: shutdown 명령을 수행하면 모든 프로세스는 시스템의 종료소식을 접하면서 '프로세스가 스스로 종료하라'는 시그널을 받는다. 이 시그널은 무엇인가?

  1. process aborted(SIGABRT)
  2. interrupt(SIGINT)
  3. kill(SIGKILL)
  4. Termination(SIGTERM)

정답: 4

shutdown 명령을 수행할 때 모든 프로세스가 받는 시그널은 '4. Termination(SIGTERM)'이다

  1. process aborted(SIGABRT): 이 시그널은 프로세스가 비정상적인 이유로 중단되었음을 나타낸다. 보통 프로그램 내부의 오류나 중대한 문제 발생 시에 발생하는 시그널이다.
  2. interrupt(SIGINT): 이 시그널은 키보드 입력(보통 Ctrl+C)을 통해 프로세스에 중단 신호를 보낼 때 사용된다. 이는 사용자가 직접 프로세스를 중단하려고 할 때 발생한다.
  3. kill(SIGKILL): 이 시그널은 시스템이 프로세스를 강제로 종료하도록 요청할 때 사용된다. SIGKILL은 처리할 수 없는 강제 종료 시그널로, 프로세스는 이 시그널을 받으면 즉시 종료되며, 처리 또는 무시할 수 없다.
  4. Termination(SIGTERM): 이 시그널은 시스템이나 다른 프로세스가 프로세스에게 종료하도록 요청할 때 사용된다. SIGTERM은 프로세스가 스스로 정리하고 종료할 수 있는 시그널로, 대부분의 시스템 종료 또는 재시작 과정에서 사용된다. shutdown 명령을 실행하면, 시스템은 모든 프로세스에 SIGTERM 시그널을 보내어 안전하게 종료할 수 있도록 한다.

문제: 현재 설졍되어 있는 기본 타깃을 확인하는 명령은?

  1. systemctl isolate
  2. systemctl list-dependencies
  3. systemctl get-default
  4. systemctl set-default

정답: 3

  1. systemctl isolate: 이 명령은 지정한 타깃으로 즉시 전환하는 데 사용된다. 현재 실행 중인 서비스와 타깃이 아닌 다른 서비스를 중지시킨다.
  2. systemctl list-dependencies: 이 명령은 특정 유닛(unit)이나 타깃에 대한 의존성을 나열한다. 시스템에서 어떤 서비스나 타깃이 다른 서비스나 타깃에 어떻게 의존하고 있는지를 보여준다.
  3. systemctl get-default: 이 명령은 시스템 부팅 시 기본적으로 사용되는 타깃(예: graphical.target, multi-user.target)을 보여준다. 이는 현재 시스템이 어떤 모드(예: 그래픽 모드, 멀티 유저 모드)로 부팅되는지를 확인하는 데 사용된다.
  4. systemctl set-default: 이 명령은 시스템의 기본 타깃을 설정하는 데 사용된다. 사용자가 시스템의 기본 부팅 모드를 변경하고자 할 때 이 명령을 사용한다.

따라서, 현재 설정되어 있는 시스템의 기본 타깃을 확인하려면 'systemctl get-default' 명령을 사용한다.

문제: "This System is going down"이라는 메시지를 전달하고 현재부터 20분 후에 재부팅하기 위한 명령은?

  1. shutdown -h now "This System is going down"
  2. shutdown -r +20 "This System is going down"
  3. shutdown -r "This System is going down"
  4. shutdown -c

정답: 2

  1. shutdown -h now "This System is going down": 이 명령은 시스템을 즉시 종료(halt)하도록 한다. -h 옵션은 시스템을 종료하며, now는 즉시 실행을 의미한다. 따라서 이 명령은 재부팅을 수행하지 않는다.
  2. shutdown -r +20 "This System is going down": 이 명령은 20분 후에 시스템을 재부팅한다. -r 옵션은 재부팅을 의미하며, +20은 현재로부터 20분 후를 지정한다. 사용자에게 전달되는 메시지는 "This System is going down"이다.
  3. shutdown -r "This System is going down": 이 명령은 시스템을 즉시 재부팅하지만, 특정 시간을 지정하지 않는다. 메시지는 전달되지만, 재부팅 시간 설정이 누락되었다.
  4. shutdown -c: 이 명령은 이미 예약된 shutdown 명령을 취소한다. 즉, 시스템을 종료하거나 재부팅하는 명령을 취소하는 데 사용된다.

문제: 다음 중 리눅스를 편리하게 사용할 수 있도록 그래픽 사용자 인터페이스와 윈도우 매니저, 여러 가지 유틸리티 프로그램을 통합하여 제공하는 환경은?

  1. GNU
  2. GNOME
  3. Shell
  4. X Window

정답: 2

리눅스를 편리하게 사용할 수 있도록 그래픽 사용자 인터페이스(GUI), 윈도우 매니저, 여러 가지 유틸리티 프로그램을 통합하여 제공하는 환경은 '2. GNOME'이다.

  1. GNU: GNU는 'GNU is Not Unix'의 약자로, 리처드 스톨먼이 시작한 프로젝트이다. GNU 프로젝트는 운영 체제와 같은 여러 프리 소프트웨어를 개발했지만, 그 자체로 그래픽 사용자 인터페이스 환경을 제공하는 것은 아니다.
  2. GNOME: GNOME은 리눅스 및 유닉스 계열 운영 체제를 위한 그래픽 사용자 인터페이스 환경이다. GNOME은 사용자 친화적인 디자인과 접근성을 제공하며, 윈도우 매니저와 다양한 데스크톱 애플리케이션들을 포함한다. 따라서 이 옵션이 문제의 요구사항에 가장 부합한다.
  3. Shell: 셸은 사용자와 운영 체제 사이의 인터페이스를 제공하는 프로그램이지만, 그래픽 사용자 인터페이스를 제공하지는 않는다. 셸은 주로 텍스트 기반의 명령어를 통해 시스템과 상호 작용한다.
  4. X Window: X 윈도우 시스템은 그래픽 디스플레이를 위한 기본 프레임워크를 제공하지만, 그 자체로는 완전한 데스크톱 환경을 제공하지 않는다. 일반적으로 GNOME, KDE와 같은 데스크톱 환경이 X 윈도우 시스템 위에서 실행된다.

문제: 다음과 같은 관리자 명령이 의도하는 것은?

> systemctl enable httpd service
  1. 중지되었던 웹서버 데몬을 즉시 시작시키려는 것이다.
  2. /usr/lib/systemd/system 디렉터리에 httpd를 시작시키는 유닛을 추가하는 것이다.
  3. httpd 서비스 유닛의 동작을 확인한 후 중지 상태라면 시작시킨다.
  4. 시스템이 부팅될 때 자동으로 httpd 서비스를 시작시키려는 것이다.

정답: 4

  1. 중지되었던 웹서버 데몬을 즉시 시작시키려는 것이다.: systemctl enable 명령은 서비스를 즉시 시작하는 것이 아니라, 시스템 부팅 시 해당 서비스가 자동으로 시작되도록 설정한다. 즉시 서비스를 시작하려면 systemctl start 명령을 사용해야 한다.
  2. /usr/lib/systemd/system 디렉터리에 httpd를 시작시키는 유닛을 추가하는 것이다.: systemctl enable 명령은 서비스 유닛 파일의 위치를 변경하지 않는다. 이 명령은 시스템의 설정을 변경하여 서비스가 부팅 시 시작되도록 만든다.
  3. httpd 서비스 유닛의 동작을 확인한 후 중지 상태라면 시작시킨다.: 이것 역시 systemctl enable 명령의 기능이 아니다. 서비스의 현재 상태를 확인하고 조건부로 시작하는 것은 systemctl start 명령에 해당하는 옵션이다.
  4. 시스템이 부팅될 때 자동으로 httpd 서비스를 시작시키려는 것이다.: systemctl enable httpd 명령은 시스템 부팅 시 httpd 서비스(웹 서버)가 자동으로 시작되도록 설정한다. 이 설정은 시스템이 다음 번 부팅될 때부터 적용된다.

문제: 다음과 같은 관리자 명령이 의도하는 것과 거리가 먼 것은?

> chkconfig --level 345 httpd on
  1. 런레벨 3~5 중 하나로 리눅스가 부팅되면 웹서버 데몬이 시작된다.
  2. /etc/rc.d/rc#.d/(여기서 #는 3~5중 하나) 디렉터리에 httpd를 시작시키는 스크립트가 들어간다.
  3. 웹서버 데몬을 런레벨 3~5에서 활성화시키는 것이다.
  4. 시스템이 현재 동작 중이며 런레벨이 3~5중 하나이면 즉시 웹서버 데몬을 시작시킨다.

정답: 4

  1. 런레벨 3~5 중 하나로 리눅스가 부팅되면 웹서버 데몬이 시작된다.: 이 설명은 chkconfig 명령의 기능에 부합한다. 이 명령은 런레벨 3, 4, 5에서 httpd 서비스가 자동으로 시작되도록 설정한다.
  2. /etc/rc.d/rc#.d/(여기서 #는 3~5 중 하나) 디렉터리에 httpd를 시작시키는 스크립트가 들어간다.: 이 설명도 맞다. chkconfig 명령은 지정된 런레벨에 대한 시작/종료 스크립트 링크를 /etc/rc.d/rc#.d/ 디렉터리에 생성하거나 제거한다.
  3. 웹서버 데몬을 런레벨 3~5에서 활성화시키는 것이다.: 이 설명도 올바르다. chkconfig 명령은 httpd 서비스를 런레벨 3, 4, 5에서 활성화시킨다는 의미이다.
  4. 시스템이 현재 동작 중이며 런레벨이 3~5 중 하나이면 즉시 웹서버 데몬을 시작시킨다.: 이 설명은 잘못되었다. chkconfig 명령은 서비스의 부팅 시 자동 시작 여부를 설정하는 것이지, 현재 실행 중인 시스템에 대해 즉시 서비스를 시작하는 기능은 아니다. 즉시 서비스를 시작하려면 service httpd start 또는 systemctl start httpd와 같은 명령을 사용해야 한다.

따라서, chkconfig --level 345 httpd on 명령의 의도와 가장 거리가 먼 것은 '시스템이 현재 동작 중이며 런레벨이 3~5 중 하나이면 즉시 웹서버 데몬을 시작시킨다'이다. 이 명령은 런레벨 3, 4, 5에서 시스템이 부팅될 때 httpd 서비스가 자동으로 시작되도록 설정하는 것이지, 현재 실행 중인 서비스를 즉시 시작하는 것은 아니다.

문제: 리눅스 시스템에서 사용자 계정명, UID, GID, 홈 디렉터리, 쉘의 종류 등 사용자 계정에 대한 자세한 정보가 저장되는 파일은?

  1. /etc/group
  2. /etc/login.defs
  3. /etc/passwd
  4. /etc/shadow

정답: 3
해설: 사용자 계정에 대한 자세한 정보가 저장되는 파일은 /etc/passwd 이다.

문제: 리눅스 사용자의 암호화된 비밀번호가 저장되어 있는 파일은?

  1. /etc/bashrc
  2. /etc/passwd
  3. /etc/shadow
  4. /etc/login.defs

정답: 3
해설: 실제 비밀번호는 /etc/passwd 파일에 저장되지 않고 /etc/shadow 파일에 계정별로 암호화되어 저장된다.

문제: sudo 명령에 관한 설명으로 잘못된 것은?

  1. 관리자 권한으로 명령을 수행하고자 할 때 사용한다.
  2. 모든 사용자가 sudo 명령을 수행할 수 있는 것은 아니다.
  3. /etc/sudoers 파일은 슈퍼유저 권한이 있어야 편집할 수 있다.
  4. sudo 명령을 사용할 때 사용자는 root 사용자의 비밀번호를 알고 있어야 한다.

정답: 4

  1. 관리자 권한으로 명령을 수행하고자 할 때 사용한다.: 이 설명은 정확하다. sudo 명령은 일반 사용자가 관리자(슈퍼유저) 권한으로 특정 명령을 실행할 수 있도록 해준다.
  2. 모든 사용자가 sudo 명령을 수행할 수 있는 것은 아니다.: 이 설명도 맞다. sudo 명령을 사용할 수 있는 사용자는 /etc/sudoers 파일에 명시되어 있어야 하며, 시스템 관리자가 해당 사용자에게 sudo 사용 권한을 부여해야 한다.
  3. /etc/sudoers 파일은 슈퍼유저 권한이 있어야 편집할 수 있다.: 이 설명도 올바르다. /etc/sudoers 파일은 시스템의 중요한 설정 파일 중 하나로, 일반 사용자가 아닌 슈퍼유저(보통 root 사용자)만이 편집할 수 있다.
  4. sudo 명령을 사용할 때 사용자는 root 사용자의 비밀번호를 알고 있어야 한다.: 이 설명은 잘못되었다. sudo 명령을 실행할 때 필요한 것은 root 사용자의 비밀번호가 아니라, 해당 명령을 실행하는 사용자(즉, sudo를 실행하는 사용자)의 비밀번호이다. 이는 sudo의 보안 정책의 일부로, 사용자가 자신의 권한을 넘어서는 작업을 할 때 본인임을 확인하는 절차이다.

문제: 사용자 계정 생성과 관련이 있는 파일이 아닌 것은?

  1. /etc/passwd
  2. /etc/shadow
  3. /etc/skel
  4. /etc/fstab

정답: 4
해설: /etc/fstab 파일에는 부팅 시 자동으로 마운트되는 파일 시스템에 대한 정보가 저장되어 있다.

useradd 명령으로 사용자 계정을 추가하면 /home 디렉터리에 기본 사용자 디렉터리가 생성되고, 환경 설정을 위한 기본 파일들이 복사된다. 다음 중 사용자 기본 환경 설정 파일을 갖는 디렉터리는 무엇인가?

  1. /etc/skel
  2. /etc/rc.d
  3. /etc/services
  4. /etc/hosts

정답: 1
해설: /etc/skel 디렉터리에는 .bashrc, .bash_logout, .bash_profile 등이 존재한다.

사용자 계정을 실제로 삭제하지 않고 계정을 잠그는 명령은 ?

  1. userdel -r user
  2. userdel -f user
  3. userdel -L user
  4. userdel -U user

정답: 3

root 사용자가 사용자 kdhong의 비밀번호 변경에 사용하는 명령은?

  1. infp kdhong
  2. change kdhong
  3. passwd kdhong
  4. chpasswd kdhong

정답: 3
해설: 인수 없이 단순한 passwd 명령을 수행하는 것은 자신의 비밀번호를 바꾸기 위한 것이다.

사용자 계정과 그룹에 관한 일반적 설명으로 잘못된 것은?

  1. 사용자 계정을 생성할 때 기본적으로 사용자 계정과 같은 이름의 그룹(GID도 UID와 같음)이 만들어진다.
  2. 사용자 계정은 0개 이상의 부 그룹에 속할 수 있다.
  3. 모든 사용자는 스스로 다른 부 그룹의 구성원으로 가입할 수 있다.
  4. 모든 사용자 계정은 주 그룹을 가지며 그것의 구성원이 된다.

정답: 3
해설: 사용자 계정을 특정 그룹의 구성원이 되게 하는 작업은 해당 그룹의 비밀번호를 알고 있거나 관리자 권한이 있어야만 가능하다.

vi 편집기로 작업한 뒤 변경된 내용을 저장하고 종료하려 한다. 명령 모드에 있다고 가정하고, 다음 중 어떤 키를 입력해야 하는가?

  1. :wq
  2. :save
  3. :q!
  4. zz

정답: 1

  1. :wq: 이 명령은 vi 편집기에서 가장 흔히 사용되는 명령으로, 변경된 내용을 저장(write)한 후 편집기를 종료(quit)하는 명령이다. :wq를 입력하고 엔터를 치면, 현재 편집 중인 문서가 저장되고 vi 편집기가 종료된다.
  2. :save: 이 옵션은 vi 편집기에서 표준적인 명령이 아니다. 따라서 vi에서 이 명령을 사용할 수 없다.
  3. :q!: 이 명령은 편집기를 강제로 종료(quit)하는 명령이다. '!'를 추가함으로써 변경사항을 저장하지 않고 편집기를 종료한다. 따라서 이 명령은 변경된 내용을 저장하지 않는다.
  4. zz: zz 명령은 vi 편집기에서 현재 문서를 저장하고 종료하는 또 다른 방법이지만, 이는 명령 모드에서 입력하는 명령이 아니라 일반 모드에서 입력하는 명령이다.

vi 편집기가 명령 모드에 있을 때 문자열 패턴을 검색하는 명령은?

  1. : pattern
  2. ? pattern
  3. ! pattern
  4. / pattern

정답: 4

  1. : pattern: 이 형식은 vi에서 표준적인 검색 명령이 아니다. 콜론(:)은 보통 다른 명령들(예: :wq, :q! 등)을 입력하기 위해 사용된다.
  2. ? pattern: 이 명령은 vi 편집기에서 현재 위치에서 역방향으로 문자열을 검색하는 데 사용된다. 즉, 문서의 현재 위치에서 이전 방향으로 지정된 패턴을 찾는다.
  3. ! pattern: 느낌표(!)는 vi에서 외부 명령을 실행하는 데 사용되며, 검색 명령과는 관련이 없다.
  4. / pattern: 이 명령은 vi에서 현재 위치에서 정방향으로 문자열을 검색하는 표준 방법이다. 문서의 현재 위치에서 다음 방향으로 지정된 패턴을 찾는다.

vi 편집기의 명령 모드에서 이전 명령을 반복하는 명령은?

  1. .
  2. ^
  3. +
  4. $

정답: 1
해설: 이전 명령을 반복하는 것은 .이며 취소 명령은 u이다.

vi 편집기의 명령 모드에서 커서가 위치한 단어를 치환하는 명령은?

  1. dd
  2. d)
  3. cw
  4. yy

정답: 3
해설: dd는 한 라인을 삭제하며, d)는 커서 위치부터 문장 끝까지 삭제한다. yy는 현재 라인을 복사하는 명령이다. 명령 모드에서 'change word'를 의미하는 cw를 입력하면 커서 위치부터 단어의 끝까지 삭제되고 입력 모드로 전환되며 새로운 단어를 입력할 수 있다.

vi 편집기의 명령 모드에서 입력 모드로 전환하기 위한 명령이 아닌 것은?

  1. a
  2. i
  3. o
  4. :

정답: 4
해설: a는 커서 다음 위치부터 입력, i는 커서 위치부터 입력, o는 커서 다음 줄에 입력하기 위한 명령이다.

vi 편집기를 이용할 때 명령 모드에서 현재 라인을 포함하여 총 10개 라인을 삭제하는 명령으로 알맞은 것은?

  1. 10dw
  2. 10x
  3. 10dd
  4. d10G

정답: 3
해설: 10dw는 10개의 단어를 삭제하라는 명령이고, 10x는 10개의 문자를 삭제하라는 명령이다. d10G는 현재 라인부터 10번 라인까지 삭제하라는 명령이다.

vi 편집기의 명령 모드에서 사용할 수 있는 명령과 그 기능이 잘못 설명된 것은?

  1. i - 입력 모드로 전환
  2. u - 커서 이동
  3. d - 삭제
  4. c - 변경

정답: 2
해설: 이전에 수행했던 명령을 취소할 때 u를 입력한다.

다음중 vi 편집기의 커서 이동 명령으로 알맞은 것은?

  1. G - 문서의 마지막 라인으로 이동한다.
  2. W - 화면을 아래로 내린다.
  3. ctrl+f - 반 페이지 위로 이동한다.
  4. /pattern - 문자열 pattern을 역방향으로 검색해 이동한다.

정답 : 1

  1. G - 문서의 마지막 라인으로 이동한다.: 'G' 명령은 vi 편집기에서 문서의 마지막 줄로 커서를 이동시키는 명령이다. 이것은 편집기에서 가장 하단의 라인으로 바로 가는 빠른 방법이다.
  2. W - 화면을 아래로 내린다.: 이 옵션은 잘못되었다. 'W'는 단어 단위로 앞으로 이동하는 명령이며, 화면을 스크롤하는 기능은 아니다. 화면을 아래로 스크롤하려면 'ctrl+d' (하프 페이지 다운)나 'ctrl+f' (페이지 다운)를 사용한다.
  3. ctrl+f - 반 페이지 위로 이동한다.: 이 설명도 잘못되었다. 'ctrl+f'는 vi에서 한 페이지 아래로 이동하는 명령이며, 반 페이지 위로 이동하는 것은 'ctrl+u'이다.
  4. /pattern - 문자열 pattern을 역방향으로 검색해 이동한다.: 이 설명도 정확하지 않다. '/pattern' 명령은 vi에서 'pattern' 문자열을 문서 내에서 정방향(위에서 아래로)으로 검색한다. 역방향 검색은 '?pattern'을 사용한다.

find 명령의 사용례를 설명한 것으로 옳지 않은 것은?

  1. (find /etc -name passwd) 파일의 이름이 정확히 passwd인 파일을 찾음
  2. (find /usr/share-size +10M) 파일의 크기가 10M보다 큰 파일을 찾음
  3. (find /home -user chris -ls) 소유자가 chris인 파일을 찾아 파일의 정보를 자세히 보여줌
  4. (find /bin -mtime 644 -ls) 접근권한이 rwxr-xr-x인 파일이나 디렉터리를 찾아 정보를 보여줌

정답: 4
해설: 접근 권한을 조건으로 지정하려면 -perm 옵션을 사용한다. 또한 644는 기호 표기법으로 rw-r--r--이다.

  1. (find /etc -name passwd): 이 명령은 /etc 디렉터리에서 이름이 정확히 'passwd'인 파일을 찾는다. 이 설명은 정확하다.
  2. (find /usr/share -size +10M): 이 명령은 /usr/share 디렉터리에서 파일 크기가 10메가바이트(MB)를 초과하는 파일을 찾는다. 이 설명도 올바르다.
  3. (find /home -user chris -ls): 이 명령은 /home 디렉터리에서 소유자가 'chris'인 파일을 찾아, 해당 파일의 정보를 자세히 보여준다. -ls 옵션은 파일의 상세 정보를 출력한다. 이 설명은 정확하다.
  4. (find /bin -mtime 644 -ls): 이 명령은 /bin 디렉터리에서 수정된 시간(modified time)이 644일 전인 파일이나 디렉터리를 찾아 정보를 보여준다. -mtime 옵션은 파일이 마지막으로 수정된 시간을 기준으로 검색하는데 사용되며, 파일의 접근 권한과는 관련이 없다. 따라서 접근권한 'rwxr-xr-x'을 찾는 것과는 무관하다.

/home 디렉터리와 그 서브디렉터리 구조에서 .bak로 끝나는 파일을 모두 찾아 강제로 삭제하는 완전한 명령은 무엇인가?

  1. rm -r /home/*.bak
  2. find . -type f -exec grep '.*bak' {} ;
  3. find /home -name '*.bak' -exec rm -f {} '
  4. find /home -type '*.bak' -exec rm {} ;

정답: 3

해설: find 명령은 기본적으로 지정된 디렉터리 하위 디렉터리도 검색한다. 파일의 강제 삭제 명령은 rm -f file이다.

 

 


참고 자료: Unix 시스템 (김희천, 김진욱 공저, KNOU press 출판)

반응형