리눅스의 파일로 취급되지 않는 것은?
- inode 테이블
- 디렉터리
- 하드디스크 장치
- 심벌릭 링크
정답: 1
해설: inode 테이블은 파일 시스템에서 중요한 정보를 저장하지만 그 자체가 파일로 취급되는 것은 아니다.
마운트할 파일 시스템의 목록을 가지고 있는 파일은?
- /dev/hda
- /dev/mapper
- /etc/fstab
- /etc/rc.local
정답: 3
해설: 부팅 시 자동으로 마운트되는 파일 시스템의 목록이 /etc/fstab에 라인별로 저장되어 있다.
하드디스크의 파티션을 생성하는 명령어는?
- fdisk
- fsck
- mkfs
- mkswap
정답: 1
해설: 하드디스크의 파티션을 생성하는 명령어는 fdisk이다.
파일 시스템 관리를 위한 명령어가 아닌 것은?
- fsck
- fdisk
- mkfs
- reiser
정답: 4
해설: reiser는 저널링을 최초로 지원했던 파일 시스템의 이름이다. fsck는 파일 시스템을 검사하는 명령이다.
볼륨 관리에 관한 설명으로 잘못된 것은?
- 여러 저장 장치를 묶어하나의 볼륨으로 만들 수 있다.
- 볼륨은 크기가 재조정될 수 있는 파티션이다.
- 볼륨 관리를 위한 도구로 fdisk 또는 mkfs를 사용한다.
- 논리 볼륨에 파일 시스템을 만들 수 있다.
정답: 3
해설: LVM이 볼륨 관리를 위한 도구이며 볼륨의 생성과 관리를 위한 여러 관련 명령을 포함한다.
파일 시스템이나 디스크 관리를 위해 사용되는 명령의 일반적 설명으로 올바른 것은?
- df - 사용자의 디스크 사용량 한도를 결정
- fdisk - 하드디스크 파티션을 관리하는 대화식 유틸리티
- fsck - 디스크 파티션에 리눅스 파일 시스템을 생성
- umount - 파일 시스템을 디렉터리에 붙여 사용할 수 있게 함
정답: 2
- df - 사용자의 디스크 사용량 한도를 결정: 이 설명은 잘못되었다.
df
명령은 파일 시스템의 디스크 사용량을 보여주는 명령이지, 사용량 한도를 결정하는 기능을 하지 않는다. - fdisk - 하드디스크 파티션을 관리하는 대화식 유틸리티: 이 설명은 정확하다.
fdisk
는 하드 디스크의 파티션을 생성, 수정, 삭제하는 데 사용되는 대화식 툴이다. - fsck - 디스크 파티션에 리눅스 파일 시스템을 생성: 이 설명은 잘못되었다.
fsck
(file system check) 명령은 파일 시스템의 오류를 검사하고 수정하는 데 사용되며, 파일 시스템을 생성하는 명령이 아니다. 파일 시스템을 생성하는 명령은mkfs
와 같은 툴이다. - umount - 파일 시스템을 디렉터리에 붙여 사용할 수 있게 함: 이 설명은 잘못되었다.
umount
명령은 이미 마운트된 파일 시스템을 언마운트(분리)하는 데 사용된다. 파일 시스템을 마운트(붙이는)하는 명령은mount
이다.
파일에 사용되는 블록 수를 보여주는 명령어는?
- dc
- dd
- df
4 du
정답: 4
- dc: 'dc'는 데스크탑 계산기(Desktop Calculator)를 의미하며, 간단한 계산이나 복잡한 수학적 연산을 수행하는 데 사용되는 명령어이다. 파일의 블록 수와는 관련이 없다.
- dd: 'dd' 명령어는 'data duplicator'의 약자로, 파일을 변환하거나 복사하는 데 사용된다. 이 명령어는 주로 백업, 복구, 파일 시스템의 콘텐츠 변환에 사용되며, 파일의 블록 수를 보여주는 기능은 제공하지 않는다.
- df: 'df' 명령어는 'disk free'의 약자로, 파일 시스템별로 사용 가능한 디스크 공간을 보여준다. 파일 시스템의 총 공간, 사용 중인 공간, 사용 가능한 공간 등을 보여주지만, 개별 파일에 사용된 블록 수를 보여주는 것은 아니다.
- du: 'du' 명령어는 'disk usage'의 약자로, 파일이나 디렉터리가 사용하는 디스크 공간의 양을 보여준다. 이 명령어는 파일이나 디렉터리가 차지하는 총 블록 수(보통 킬로바이트나 메가바이트 단위)를 보여주며, 개별 파일이나 디렉터리의 디스크 사용량을 파악하는 데 유용하다.
변경을 기록하는 로그를 두어 시스템 비정상 종료시 파일 시스템의 복구를 쉽게 하는 방법은?
- 단편화(fragmentation)
- 저널링(journaling)
- 테일패킹(tailpacking)
- 레이저(reiser)
정답: 2
프로세스 컨트롤 블록(PCB)에 관한 설명으로 옳지 않은 것은?
- PCB에는 프로세스의 PID가 저장된다.
- PCB의 문맥 교환 정보로 레지스터의 상탯값이 저장된다.
- PCB에는 프로세스가 할당받은 자원에 대한 정보가 저장된다.
- PCB는 해당 프로세스가 관리하는 메모리 영역 중 제일 앞에 위치한다.
정답: 4
해설: PCB는 커널에 의해 관리되고 커널 영역에 위치한다.
프로세스가 준비 상태에서 실행 상태로 전이되는 것은?
- 대기(block)
- 디스패치(dispatch)
- 선점(preemption)
- 웨이크업(wakeup)
정답: 2
해설: 디스패치 또는 스케줄이 준비 상태에서 실행 상태로 전이시킨다.
쉘에서 포어그라운드로 실행되는 프로세스를 stopped로 전환시키는 키입력은?
- ctrl + c
- ctrl + d
- ctrl + x
- ctrl + z
정답: 4
해설: ctrl+z 로 포어그라운드로 실행되는 프로세스를 멈춤 상태로 전환시킬 수 있다. 이어서 bg 명령을 수행하면 해당 프로세스가 백그라운드로 실행된다.
백그라운드 프로세스에 관한 설명으로 옳지 않은 것은?
- 쉘 프롬프트에서 명령 뒤에 &를 입력하면 백그라운드 프로세스로 실행된다.
- 백그라운드 프로세스는 키보드 입력을 받을 수 없다.
- 백그라운드 프로세스가 종료되어야만 셸이 명령대기상태가 된다.
- 장시간 실행되어야 하는 명령을 실행할 때 주로 사용된다.
정답: 3
- 쉘 프롬프트에서 명령 뒤에 &를 입력하면 백그라운드 프로세스로 실행된다.: 이 설명은 올바르다. 쉘에서 명령 끝에 '&'를 추가하면 해당 명령은 백그라운드에서 실행되며, 즉시 쉘 프롬프트로 돌아올 수 있다.
- 백그라운드 프로세스는 키보드 입력을 받을 수 없다.: 이 설명도 정확하다. 백그라운드 프로세스는 키보드 입력을 직접 받지 않는다. 키보드 입력은 포그라운드 프로세스에 할당된다.
- 백그라운드 프로세스가 종료되어야만 셸이 명령대기상태가 된다.: 이 설명은 잘못되었다. 백그라운드 프로세스가 실행되면 셸은 즉시 명령대기상태로 돌아간다. 즉, 백그라운드 프로세스의 실행 여부와 무관하게 셸은 사용자에게 프롬프트를 표시하고 다음 명령을 기다린다.
- 장시간 실행되어야 하는 명령을 실행할 때 주로 사용된다.: 이 설명은 올바르다. 장시간 실행되어야 하는 명령이나 사용자의 지속적인 상호작용을 필요로 하지 않는 명령은 백그라운드에서 실행하는 것이 효율적이다.
터미널을 빠져나가도 실행 중인 프로그램이 종료되지 않고 계속 수행되게 해주는 명령어는?
- exec
- fg
- nice
- nohup
정답: 4
다음 crontab 파일의 필드 표현 중에서 매주 월요일에 한번만 명령을 수행하게 하는 것은?
-
-
-
-
- 1
-
-
-
- 1 * * * 1
- 1 1 * * 1
- 1 1 1 * 1
정답: 3
- * * * * 1: 이 표현은 매주 월요일마다, 하루에 24시간 동안 매분마다 명령을 실행한다는 의미이다.
- 1 * * * 1: 이 표현은 매주 월요일마다, 하루에 24시간 동안 매시간 1분에 명령을 실행한다는 의미이다.
- 1 1 * * 1: 이 표현은 매주 월요일에만, 새벽 1시 1분에 명령을 실행한다는 의미이다. 이는 매주 월요일에 한 번만 명령을 수행하게 하는 설정이 맞다.
- 1 1 1 * 1: 이 표현은 매년 1월 1일 월요일에만, 새벽 1시 1분에 명령을 실행한다는 의미이다. 만약 1월 1일이 월요일이 아니라면 이 명령은 실행되지 않는다.
crontab의 각 필드는 순서대로 분, 시, 일, 월, 요일을 나타낸다. 따라서, 매주 월요일에 한 번만 명령을 수행하게 하는 필드 표현은 '1 1 * * 1'이다.
프로세스를 모니터링하거나 관리하기 위한 명령으로 잘못된 것은?
- ps - 실행 중인 프로세스에 대한 정보를 보여줌
- top - 프로세스 모니터링과 관리를 위한 대화식 툴
- kill - 지정된 프로세스를 백그라운드 모드로 전환함
- nice - 프로세스를 실행할 때 우선순위 값을 설정함
정답: 3
rpm -qa | grep fire 를 실행하면 현재 시스템에 설치된 모든 패키지 중 무엇을 수행하는가 ?
- fire이라는 단어가 포함된 패키지만 출력한다.
- fire이라는 단어가 포함된 패키지만 삭제한다.
- fire이라는 단어가 포함된 패키지만 업그레이드한다.
- fire이라는 단어가 포함된 패키지만 설치한다.
정답: 1
해설: rpm -qa는 설치된 모든 패키지를 출력한다.
다음의 RPM 패키지에 대한 설명으로 잘못된 것은?
rpm-4.8.0-55.el6.i686
- 패키지의 이름은 rpm이다.
- 버전 번호는 4.8.0이다.
- 해당 버전에서 48번의 개선작업이 있었다.
- i686은 패키지가 설치될 수 있는 아키텍처의 종류이다.
정답: 3
- 패키지의 이름은 rpm이다.: 이 설명은 정확하다. 'rpm'은 이 RPM 패키지의 이름을 나타낸다.
- 버전 번호는 4.8.0이다.: 이 설명도 올바르다. '4.8.0'은 이 RPM 패키지의 버전을 나타낸다.
- 해당 버전에서 48번의 개선작업이 있었다.: 이 설명은 잘못되었다. '4.8.0-55'의 '55'는 릴리즈 번호를 나타내며, 이는 주로 패키지의 수정 또는 업데이트 횟수를 나타낸다. '48번의 개선작업'을 의미하지는 않는다.
- i686은 패키지가 설치될 수 있는 아키텍처의 종류이다.: 이 설명은 정확하다. 'i686'은 이 RPM 패키지가 설치될 수 있는 하드웨어 아키텍처를 나타낸다. i686은 일반적으로 32비트 인텔 호환 프로세서를 가리킨다.
다음 명령의 실행결과를 올바르게 설명한 것은?
# rpm -e mc
오류: failed dependencies:
mc is needed by tkmc-4.1.36-1 kr
- 의존성 문제로 패키지를 설치할 수 없다.
- 의존성 문제로 패키지를 삭제할 수 없다.
- 의존성 문제로 패키지를 업데이트할 수 없다.
- 패키지가 삭제되었으나 기존 패키지에 의존성 문제가 발생한다.
정답: 2
해설: rpm 명령에서 -e 옵션은 패키지를 삭제하는 것이다.
RPM과 비교했을 때, DNF 패키지 관리의 장점은?
- 이미 설치된 패키지를 업그레이드 할 수 있다.
- 패키지의 변형 여부를 검증할 수 있다.
- 패키지의 설정 파일을 확인할 수 있다.
- 패키지의 의존성 문제를 해결할 수 있다.
정답: 4
해설: DNF는 의존성 문제를 해결해주는 명령 행 기반 유틸리이며 저장소 기반의 패키지 설치 기능을 제공하는 고수준의 패키지 관리도구이다.
RPM 패키지 관리자의 기능을 설명한 것으로 잘못된 것은?
- 패키지의 설치와 업그레이드 및 삭제 기능을 수행한다.
- 패키지에 관한 정보 확인 기능을 제공한다.
- 패키지의 의존성과 관련된 검사를 수행한다.
- 패키지를 설치할 때, 선행 패키지를 자동으로 설치해준다.
정답: 4
해설: 선행 패키지가 설치되어 있지 않으면 설치가 진행되지 않고 메시지만 출력된다.
두 파일을 각각 압축한 후 연결하여, 압축된 하나의 파일을 만드는 명령이 필요하다. 적당하지 않은 것은?
- gzip file1 file2 > bar.gz
- gzip -c file1 > bar.gz; gzip -c file2 >> bar.gz
- gzip -c file1 file2 > baz.gz
- cat file1 file2 | gzip > baz.gz
정답: 1
- gzip file1 file2 > bar.gz: 이 명령은 적절하지 않다.
gzip
명령은 파일을 개별적으로 압축하며,file1.gz
및file2.gz
와 같은 별도의 파일로 결과를 생성한다. 또한,gzip
은 표준 출력을 통해 결과를 다른 파일로 리다이렉트하는 기능을 지원하지 않는다. - gzip -c file1 > bar.gz; gzip -c file2 >> bar.gz: 이 명령은 적절하다. 여기서
gzip -c file1 > bar.gz
는file1
을 압축하여bar.gz
에 저장하고,gzip -c file2 >> bar.gz
는file2
를 압축하여 기존bar.gz
파일에 추가한다. - gzip -c file1 file2 > baz.gz: 이 명령도 적절하다.
gzip -c file1 file2 > baz.gz
는file1
과file2
를 연속적으로 압축하여 단일 파일baz.gz
에 저장한다. - cat file1 file2 | gzip > baz.gz: 이 명령은 또한 적절하다.
cat file1 file2 | gzip > baz.gz
는file1
과file2
를 연결(cat
)하여 그 출력을gzip
으로 압축하고, 결과를baz.gz
에 저장한다.
tar 파일로 묶여 있는 sensor.tar 아카이브에서 파일 목록을 보고자 할 때 사용하는 것은?
- tar cvf sensor.tar
- tar xvf sensor.tar
- tar tvf sensor.tar
- tar rvf sensor.tar
정답: 3
- tar cvf sensor.tar: 이 명령은 새로운
tar
아카이브를 생성하는 데 사용되며,cvf
는 생성(create), 자세히 보기(verbose), 파일(file)을 의미한다. 이미 존재하는tar
파일의 내용을 보기 위한 명령이 아니다. - tar xvf sensor.tar: 이 명령은
tar
아카이브를 추출하는 데 사용되며,xvf
는 추출(extract), 자세히 보기(verbose), 파일(file)을 의미한다. 이 명령은 아카이브의 내용을 디스크로 추출하지만, 단순히 목록을 보기 위해서는 적합하지 않다. - tar tvf sensor.tar: 이 명령은
tar
아카이브의 내용을 보기 위해 사용되며,tvf
는 테이블(table) 혹은 목록(list), 자세히 보기(verbose), 파일(file)을 의미한다. 이 명령은sensor.tar
아카이브 내의 파일 목록을 화면에 출력한다. - tar rvf sensor.tar: 이 명령은 기존
tar
아카이브에 파일을 추가하는 데 사용되며,rvf
는 추가(append), 자세히 보기(verbose), 파일(file)을 의미한다. 이미 존재하는tar
파일의 내용을 보기 위한 명령이 아니다.
gzip 명령어에서 압축률을 높이기 위한 옵션은?
- -h
- -9
- -t
- -1
정답: 2
설명: gzip 명령에서 -number 옵션을 사용할 수 있다. 숫자 1~9는 압축률을 의미하며 9가 가장 높고 기본은 6이다.
셸 스크립트를 /bin/bash가 해석한다는 의미로 셸 스크립트 파일의 첫 번째 행에 지정해야 하는 내용은?
- !#/bin/bash
- #!/bin/bash
- $#/bin/bash
- #$/bin/bash
정답: 2
해설: #!/bin/bash가 셸 스크립트를 /bin/bash가 해석한다는 의미이다.
다음 중 셸 스크립트에서 첫 번째 명령 행 인수를 뜻하는 것은?
- $[1]
- ${1}
- $[1]
- %{1}
정답: 2
- $[1]: 이 형식은 셸 스크립트에서 표준적인 인수 표현이 아니다. 대괄호([])는 일반적으로 수학 계산이나 배열 인덱스에 사용된다.
- ${1}: 이 형식은 셸 스크립트에서 첫 번째 명령 행 인수를 나타내는 올바른 방법이다.
$1
,$2
,$3
, ... 등과 같이 사용되며, 각각 첫 번째, 두 번째, 세 번째 인수를 나타낸다. - $[1]: 이 형식 역시 셸 스크립트에서 인수를 나타내는 표준적인 방법이 아니다.
$[ ... ]
구문은 주로 산술 연산에 사용된다. - %{1}: 이 형식은 셸 스크립트에서 사용되는 인수 표현 방식이 아니다.
%
기호는 셸 스크립트에서 일반적으로 사용되지 않는다.
셸에서 사용하는 특수 문자 중 둘러싸인 내용을 전혀 해석하지 말라는 의미를 가진 것은?
- ' '
- " "
- \ \
정답: 2
해석: 셸은 작은 따옴표로 둘러싸인 내용을 전혀 해석하지 않는다.
다음 셸 스크립트를 실행했을 때의 출력은?
a=0
for ((n=1; n<10; n=n+2))
do
a=$(expr $a + $n)
done
echo $a
- 출력없음
- 10
- 25
- 45
정답: 3
해설: 반복문을 해석하면 결과적으로 a=1+3+5+7+9이고 echo 명령에 의해 셸 변수 a의 값인 25가 출력된다.
다음은 셸의 test 명령에서 사용할 수 있는 연산자이다. 파일이 존재하는지 확인하는 연산자는?
- -e
- -f
- -n
- -x
정답: 1
해설: if 조건문의 조건 검사 부분에 test -e file 또는 [ -e file] 을 사용하여 file의 존재 여부를 확인할 수 있다.
BASH 셸에서 myScript라는 셸 스크립트를 디버깅 모드에서 실행하는 옵션은?
- bash -d myScript
- bash --debug myScript
- bash -i myScript
- bash -x myScript
정답: 4
- bash -d myScript: 이 옵션은 BASH에서 표준적인 디버깅 옵션이 아니다.
bash -d
는 일반적으로 사용되지 않는 옵션입니다. - bash --debug myScript: BASH 셸에서
--debug
옵션은 존재하지 않습니다. 이는 BASH 셸의 표준 옵션이 아닙니다. - bash -i myScript:
-i
옵션은 대화형(interactive) 셸을 시작하는 데 사용됩니다. 이것은 디버깅 모드를 활성화하는 옵션이 아닙니다. - bash -x myScript:
-x
옵션은 BASH 셸 스크립트를 디버깅 모드에서 실행하는 데 사용됩니다. 이 옵션을 사용하면 스크립트가 실행될 때마다 셸이 수행하는 모든 명령과 그 인수가 화면에 출력됩니다. 이는 스크립트의 동작을 추적하고 문제를 진단하는 데 유용합니다.
셸에서 괄호 안의 명령을 실행하여 명령의 결괏값으로 치환하라는 의미를 가진 것은?
- @(명령)
- @{명령}
- $(명령)
- ${명령}
정답: 3
- @(명령): 이 형식은 셸 스크립트에서 표준적인 명령 치환 형식이 아니다.
- @{명령}: 이 형식도 셸 스크립트에서 사용되는 표준적인 명령 치환 형식이 아니다.
- $(명령): 이 형식은 셸 스크립트에서 명령 치환을 위해 사용되는 표준 방법이다. 괄호 안에 있는 명령이 실행되고, 그 출력이 명령이 있는 위치에 치환된다.
- ${명령}: 이 형식은 변수 확장을 위해 사용되며, 명령 치환을 위한 것이 아니다.
명령 치환은 셸에서 명령의 출력을 다른 명령의 입력으로 사용하고자 할 때 사용되는 기법이다. 예를 들어, $(date)
는 date
명령의 출력을 치환하는 데 사용된다. 따라서, 명령의 결괏값으로 치환하라는 의미를 가진 표현은 '$(명령)'이다.
다음과 같이 입력한 숫자에 맞춰 역삼각형을 출력하는 셸 스크립트를 작성하시오.
Number: 5
#####
####
###
##
#
정답:
#!/bin/bash
echo -n "Number: "
read num
while [ $num -gt 0 ]; do
for ((i=1; i<=num; i++)); do
echo -n "#"
done
echo
let num=num-1
done
이 스크립트는 사용자로부터 숫자를 입력받아(read num
), 해당 숫자만큼의 줄에 대해 #
문자를 출력하여 역삼각형을 만든다. while
반복문은 $num
이 0보다 클 때까지 반복되며, 각 반복마다 내부의 for
반복문을 통해 $num
개수만큼의 #
을 출력하고 줄바꿈(echo
)을 한다. 그 후 $num
값을 하나 줄여 다음 줄의 출력을 준비한다.
주요 부분에 대한 설명은 다음과 같다:
echo -n "Number: "
: 사용자로부터 숫자 입력을 요청한다.read num
: 사용자가 입력한 숫자를num
변수에 저장한다.while [ $num -gt 0 ]
:$num
이 0보다 클 동안 반복한다 (-gt
는 'greater than', 즉 '보다 큰'을 의미한다).for ((i=1; i<=num; i++))
: 1부터num
까지 반복하며,echo -n "#"
:#
을 한 줄에num
개수만큼 출력한다.echo
: 줄바꿈을 위해 사용한다.let num=num-1
:num
값을 하나 줄여 다음 줄의#
개수를 줄인다.
다음 스크립트의 기능을 설명하라.
#!/bin/bash
function sum()
{
n = $1
s = 0
while [$n -le $2]
do
s = $( expr $s + $n)
n = $( expr $n + 1)
done
return $s
}
if [ $# -ge 2]; then
sum $1 $2
echo $?
fi
제시된 스크립트는 두 개의 정수 인수를 받아 그 사이에 있는 모든 정수들의 합을 계산하고, 그 결과를 출력하는 기능을 한다.
- 함수 정의 (sum):
sum
이라는 함수를 정의한다. 이 함수는 두 개의 인수를 받아 ($1
과$2
), 이 두 인수 사이에 있는 모든 정수의 합을 계산한다. - 변수 초기화:
n
을 첫 번째 인수$1
로,s
(합계)를 0으로 초기화한다. - while 루프:
n
이 두 번째 인수$2
보다 작거나 같은 동안 루프를 반복한다. - 합계 계산:
expr
명령을 사용하여n
의 현재 값과s
의 현재 값의 합을 계산하고, 그 결과를s
에 저장한다. - n 증가:
n
의 값을 1씩 증가시킨다. - 결과 반환: 최종 합계
s
를 함수의 반환 값으로 사용한다. - 메인 스크립트: 스크립트에 전달된 인수의 개수가 2개 이상인지 확인한다 (
$# -ge 2
). - 함수 호출과 결과 출력: 조건이 참이면
sum
함수를 호출하고, 함수의 반환 값($?
)을echo
명령을 통해 출력한다.
참고 자료: Unix 시스템 (김희천, 김진욱 공저, KNOU press 출판)
'CS > Unix 시스템' 카테고리의 다른 글
유닉스와 리눅스, UNIX 발전사, 오픈소스와 라이선스, 리눅스 배포판 (1) | 2023.11.28 |
---|---|
리눅스 문제 풀이 - 버전 관리와 깃, 브랜치의 생성과 병합, 스태시와 버전 되돌리기 (1) | 2023.11.28 |
리눅스 문제 풀이 - 리눅스 시작과 종료, 사용자 관리, vi 텍스트 편집 (1) | 2023.11.27 |
리눅스 문제 풀이 - 리눅스 쉘, 파일 디렉터리 명령어 (1) | 2023.11.27 |
리눅스 문제 풀이 - 리눅스 기본 개념, 특징, 설치, CentOS (0) | 2023.11.27 |