리눅스 명령어 연습문제 - linugseu myeonglyeong-eo yeonseubmunje

1. 입력모드와 명령모드의 차이를 간단히 설명하시오.

[답]

- 입력모드: 텍스트를 입력할 수 있는 모드

- 명령모드: 텍스트를 수정하거나 삭제하고 복사와 붙이기 등 편집을 하는 모드

2. vi에서 입력 모드로 전환하는 데 쓰이는 세 가지 명령 키는 무엇인가?

[답] i, a, o, O

3. o 명령 키와 O 명령 키의 차이를 설명하시오.

[답]

o: 커서가 있는 행의 다음 행에 글자를 입력할 수 있도록 한다.

O: 커서가 있는 행의 이전 행에 글자를 입력할 수 있도록 한다.

4. i 명령 키와 a 명령 키의 차이를 설명하시오.

[답]

i: 커서가 있는 글자의 앞에서부터 입력할 수 있도록 한다.

a: 커서가 있는 글자의 다음에서부터 입력할 수 있도록 한다.

5. 마지막 행 모드로 이동하는 데 쓰이는 세 가지 명령 키는 무엇인가?

[답]

: 마지막행 모드로 명령을 입력할 때 사용

/ 아래 방향으로 문자열을 검색할 때 사용

? 커서의 위쪽 방향으로 문자열 검색

6. 다섯 글자인 단어를 수정하는 데 사용하는 명령 키를 나열하시오.

[답] cw, 5s

7. 특정 행으로 이동하는 데 사용하는 명령 키를 두 가지 이상 나열하시오.

[답] 예를 들어 15행으로 이동하려면 15G 또는 :15

8. 현재 파일에서 문자열 linux를 검색하는 방법을 설명하시오.

[답] /linux -> 커서가 있는 행부터 아래쪽 방향으로 검색

?linux -> 커서가 있는 행부터 위쪽 방향으로 검색

9. 파일의 5행부터 10행 사이에 있는 모든 linux를 LinuX로 고치는 명령은 무엇인가?

[답] :5,10s/linux/LinuX/g

10. 행을 잘라서 붙이기를 할 때는 dd 명령과 p 명령을 사용한다. 단어를 잘라서 붙이기를 하려면 어떤 명령 키를 사용하는가?

[답] dw 명령으로 단어를 잘라내서 원하는 위치로 이동한 후 p 명령으로 붙이기를 할 수 있다.

11. 현재 편집 중인 파일을 중간에 저장하고 계속 편집하려고 할 때 사용하는 명령은 무엇인가?

[답] :w

12. a.txt 파일의 1행과 3행을 각각 버퍼에 저장하여 b.txt 파일에 붙이기를 하려고 한다. 어떻게 해야 하는지 설명하시오.

[답] 네임드 버퍼를 사용한다. 예를 들어 커서를 1행으로 이동시키고, “ayy를 하여 1행을 복사하여 a버퍼에 저장하고, 3행으로 이동한 후 ”byy를 하여 b버퍼에 저장시킨다. :e b.txt를 입력하여 b.txt 파일로 이동한 후 “ap, "bp 명령으로 붙이기를 한다.

13. vi로 파일을 열었더니 자동으로 행 번호가 붙어 있었다. 왜 행 번호가 표시되었는지 이유를 설명하시오.

[답] vi 환경 설정 파일인 .exrc에 set nu가 설정되어 있거나 환경변수 EXINIT에 set nu가 설정되어 있기 때문이다.

14. 현재 작업 중인 파일에 다른 파일(test3.txt)을 읽어들이는 명령은 무엇인가?

[답] :r test3.txt

15. vi에서 작업 중인데 현재 어떤 모드인지 알 수 없을 때 어떻게 해야 하는지 설명하시오.

[답] :set showmode 명령으로 모드를 표시하도록 한다.

16. 파일을 저장하고 vi를 종료하는 두 가지 명령 키를 나열하시오.

[답] ZZ 또는 :wq

17. q 명령 키와 q! 명령 키의 차이를 설명하시오.

[답] q 명령 키는 파일을 수정이나 삭제 등 작업한 사항이 없어서 그냥 종료할 때 사용하며, q!는 파일에서 작업한 내용을 저장하지 않고 종료할 때 사용한다.

18. vi 작업 중에 셸에서 ls 명령을 수행할 필요가 있을 때 vi를 종료하지 않고 셸 명령을 사용하는 방법을 설명하시오.

[답] :! ls 명령이나, :sh 명령으로 잠시 셸로 나가서 ls 명령을 실행하고 exit로 다시 vi로 돌아온다.

19. vi 작업을 하는데 브로드캐스트 메시지가 화면에 표시되면서 작업 내용이 이상해졌다. 화면을 다시 출력하려면 어떻게 해야 하는가?

[답] ctrl-l로 화면을 다시 표시한다.

본 문제의 저작권은 한빛아카데미 우분투 리눅스 저자에게 있습니다

[user interface 연습 예제]

1. younghee 계정을 생성하고 암호설정.

2. root 를 logout 하지 않고 younghee 계정으로 Xwindow 로 로그인

3. 3번째 가상콘솔(tty3) 에 user1 계정으로 로그인
(로그인한다음 확인 --> tty 명령어로)

4  5번째 가상콘솔(tty5) 에도 user1 계정으로 로그인
(로그인한다음 확인 --> tty 명령어로)

5.로그아웃하지 않고 Xwindows 로 돌아가서 터미널 창 열어서 
현재 접속자 정보 확인(who)

[user interface] - 2,3 번 문제는 centos 버전7에서는 풀이과정과 좀 달라서 삭제했습니다.

1. user100 계정을 생성하세요.

4. xwindows 에서 로그아웃하지 않은채로 tty5(가상콘솔)로 로그인하시오.

5. tty5에서 로그아웃하고 Xwindows 화면으로 들어가세요.


[명령어 실습문제 1]

1.testuser 계정 생성 및 암호설정

2.testuser 계정 전환

3.tree ---> tree -C 실행되게 alias 설정하기

4. tmp
      l
    os
    l            l
  linux      ms
    l              l
centos  redhat  xp  win7

디렉토리 구성 후 /etc/issue ---> win7 디렉토리 복사

5. xp 디렉토리를 centos 아래로 이동

6.user100 로그아웃하고 xwindows 로 root 로 login 하세요.

7. myuser 라는 계정을 만들고 암호를 설정하시오.

8. su 명령을 사용하여 현재 계정을 myuser 계정으로 변경하시오.

9. bash shell 에서의 프롬프트 모양을 PS1 변수를 이용하여 아래처럼 변경하시오
[현재계정이름 절대경로명]$
ex) 현재 계정이 myuser 이고 현재 디렉토리가 /etc/default 라면
[myuser /etc/default]$

10. myls 를 입력하였을때 실제 실행되는 명령은 ls -F --color=tty
이렇게 실행되도록 alias 설정을 하고 제대로 실행되는지 확인해보시오.

11. 명령어를 실행할때 명령어앞에 역슬래시를 붙이는것은 어떤 의미인가요?
ex) \ls

12. centos 디렉토리에 /etc/hosts 파일을 복사하시오.

13. centos 디렉토리 이름을 fedora 으로 변경하시오.

14. xp 디렉토리를 삭제하고 tree 명령어로 확인하시오.


[명령어 실습문제 2]

0. user1 계정으로 login 하여 /tmp 로 이동해서
yeje 디렉토리를 하나 작성해서 그쪽으로 이동하세요.
( cd /tmp  ;  mkdir yeje ;  cd yeje )

1. cat 명령과 redirection 을 사용하여 아래와 같은 내용의 파일을
server.txt 파일명으로 작성하시오.

UNNIX server
LINUX server
MS server

2. cat 명령과 redirection 을 사용하여 server.txt 맨 아래에
다음 두줄을 추가하시오(기존파일에 덮어쓰지 말고 아래 두줄을
추가하여야 합니다)

TEST server
SAMPLE server

3. 1번에서 작성한 server.txt 에 있는 server 단어를
tr 명령어와 redirection을  사용하여 대문자 SERVER로 모두 변경 되게 하여
server2.txt 에 저장되게 하시오. 

4. 다음명령의 실행결과를 예상해보고 직접 입력해서 확인하시오.
$ cd /tmp ; echo -n 1 ; echo 2 | echo 3 > test.txt ; cat test.txt

5. 다음은 cd 명령의 도움말을 캡쳐한것중 일부내용입니다.
리눅스 시스템에서 직접 확인해보고 빈칸을 채워넣으시오.
(도움말을 직접 실행해서 답을 찾으면 됩니다)

If that variable has a value, then cd to the value of that
    variable.  The -P option says to use the physical directory structure
    instead of following symbolic links; the (  ) option forces symbolic links

6. echo $PATH 의 실행결과와 pwd 의 실행결과가 각각 아래와 같다고 할때
PATH=/D/E:A/B/C/D:/F/G:/H/I:/J
pwd  ==> /D

그리고 newls 라는 명령이 /A, /B, /A/B, /D, /D/E, /F/G/H 디렉토리에 각각 하나씩 존재한다고 가정하면
현재디렉토리에서(/D) 에서 아래처럼 명령을 실행하면 어떤 디렉토리에 있는 newls 가 실행 되는가?

$ newls  엔터.

7. 다음 두줄을 보고 답하시오.
$ wc -l  a.txt
$ 100


아래와 같이 입력했을때의 출력결과가 아래와 같다고 했을때 괄호안에 들어갈 행번호는?
$ cat -n a.txt | head -15 | tail -5 | head -1

출력결과 (아래작성)
행번호 : 

8.사용자 A가 a.txt 파일을 b.txt 파일로 복사하려고 한다. 그런데 cp 명령어가 실행이 되지 않는 상황이 발생했다.
 cp 명령어를 대체해서 사용할 수 있는 올바른 명령어는?

ㄱ. alias cp='cp -i'            ㄴ. cat < a.txt > b.txt
ㄷ. mv a.txt b.txt              ㄹ. cat a.txt | more b.txt

*  root 로 login 해서 아래의 문제를 풀어보세요
9.  /etc/yum.conf 파일을 주석을 제외한 나머지 내용을 /tmp/test.conf 파일로 저장하시오.
(*. 참고로  /etc/yum.conf 파일에서 주석은 '#' 입니다.)

10.  디스크에서 mkdir 명령은 어떤 디렉토리에 있습니까?

11.  math.h 파일은 어떤 디렉토리에 있습니까?

12.  모든  사용자들의 홈디렉토리에 있는 파일중 .bashrc 를 찾아서 모니터로 출력하세요

13. 시스템 전체에서 grub.cfg 파일을 find 로  찾아서  /tmp 디렉토리로 복사되게 하세요.


[계정관리 실습문제]

1. 아래와 같은 그룹을 만드시오(groupadd)

그룹명  gid
-------------------
classA  2000 (groupadd  명령어로 gid  설정옵션 사용 ; 옵션 참고는 groupadd --help)
classB  디폴트값(groupadd 를 옵션없이 사용)

2. 아래와 같은 계정을 만들고 암호설정을 하시오(useradd 및 usermod, passwd)

계정명  home디렉토리    로그인셀        그룹                                    comment
suser1  /var/suser1        /bin/bash        classA       
suser2  /home/suser2    /bin/csh        suser2                                hongkildong
suser3  /home/suser3    /bin/bash      classA(주그룹),classB
suser4  /home/suser4    /bin/bash       suser4

3. suser2 계정을 잠그시오 (passwd, passwd --help 참조)

4. suser1 계정을 삭제하되 홈디렉토리까지 한꺼번에 지워지게 하세요.(userdel)

5. suser3 계정이 주그룹 root 에 소속되도록 변경하고 아무런 보조그룹에도
소속되지 않도록 변경하시오(usermod)

6. suser2 계정의 password aging 설정을 아래처럼 하시오(chage)
암호최대변경주기 : 50일
경고일수 : 10일
inactive 기간 : 20일
계정만료일 : 2020-12-31

7. 계정을 생성할때마다 사용자 홈디렉토리에 public_html 디렉토리가 자동으로
생성되도록 설정하시오(skel 과 관련되어 있음)
(*. public_html 디렉토리는 사용자가 홈페이지를 만들어서 운영할때 필요한
 디렉토리입니다)

8. 사용자 계정을 생성할때 계정만료일의 디폴트 값이 2021년12월31일 되도록
useradd 의 디폴트 옵션을 설정하시오.


[vi 실습문제]

가. /tmp 디렉토리로 이동하여 edit 디렉토리를 생성하시오.
# cd  /tmp ---> mkdir  edit ---> cd edit

나. 아래명령을 실행하시오.
# cp /etc/services  /tmp/edit/testfile

1. testfile 의 맨 마지막줄 아래에
hello unix 라는 문장을 한줄 추가하시오.

2.testfile 의 5000번째줄 바로 아래에
hello linux 라는 문장을 한줄 추가하시오

3. testfile 에서 57번째라인부터 99번째까지의
라인을 복사하여 2001번째 라인에 붙여넣으시오.

4. 7000번째 라인부터 그 아래로 100줄을 삭제하시오.(dd)

5. 9000번째 라인부터 마지막줄까지 모두 삭제하시오(Last line 모드에서)

6. testuser 계정이 vi 편집기 실행시 아래설정을
자동으로 적용되게 vi편집기 설정파일을 만들고 확인하시오.

a. 편집문서에 라인번호 보이게하기.
b. tab size 크기를 5로 하기. (tab 키 눌렀을때 5칸씩 이동)
c. 편집 제목창에 현재 파일명 보이게 하기.

7. cp  /etc/passwd  /tmp/edit/passwd.txt 로 복사한다음
아래와  같이 편집하세요.

1) passwd.txt 에서 5 ~ 20 라인까지만 nologin 이라는 문자열을 bash로 변경하시오.
(라스트라인모드에서 문자열 치환명령어사용)
2) passwd.txt 파일 전체에서 bin 을 대문자 BIN 으로 변경하시오.
3) passwd.txt 에서 1~10라인까지를 짤라서 passwd.txt 맨끝에 붙여넣기 하시오


[권한관리 실습문제]

1. root 계정으로 /tmp/test 디렉토리를 만들고 파일을 하나 만든다음에
퍼미션을 아래와 같이 설정하시오.

[root /]# rm -rf /tmp/test ; mkdir /tmp/test
[root /]# cd /tmp/test
[root /tmp/test]# echo hello unix > a.txt

퍼미션 변경을 아래와 같이 설정하고 확인하시오.
-rw-rw-r-- 1 user2 wheel 11 2016-05-05 22:45 a.txt

2. 다음 퍼미션에 대한 설명중 맞는것은?
ㄱ. 디렉토리 퍼미션이 -rwxr-xrw- 이면 제 3자가 그 디렉토리내의 파일을 삭제할수 있다.
ㄴ. 파일퍼미션이 -rw-r----x 이면 제 3자가 그 파일을 복사할수 없다.
ㄷ. chmod u=rwx,g=rw-,o=r-x testfile  이렇게 퍼미션을 지정하면 그 결과는
    8진수 모드로 765 로 변경된다.
ㄹ. 파일의 소유주라면 그 파일이 있는 디렉토리 퍼미션에 관계없이 파일을
    삭제할수 있다.

3. 아래의 조건으로 퍼미션을 설정하시오.
(먼저 puser1 ~ puser5 계정을 만드시오)

a. ifconfig 를 puser1,puser2 두사람한테만 실행권한을 주고 나머지
모든 사용자들은 실행 못하게 퍼미션 설정을 하시오.

b. cal 는  puser2,puser3 만 실행을 못하게 하고 나머지 모든 사용자는
실행할수  있게 퍼미션 설정을 하시오.
(*. puser2 는 ifconfig 명령은 실행할 수 있고 cal 는 실행을 못해야 합니다)

4. 퍼미션 설정을 이용해서 root를 제외하고 sysuser1,sysuser2 두명한테만
 date 명령으로 시간과 날짜를 설정할 수 있는 권한을 부여하시오.

5. zuser100 계정을 하나 만들어서(useradd zuser100)

zuser100 계정으로 변경하여(su - zuser100) 아래조건처럼 디폴트 퍼미션이
되게 umask 값을 설정하고 .bash_profile 또는 .bashrc 에 등록해서 새로 login 해도 설정된 umask 값을
계속 사용할수 있도록 하시오.

 - 파일 생성시 디폴트 퍼미션을 rw-------
 - 디렉토리 생성시 디폴트 퍼미션을 rwx------ 
  *. 설정완료 후 테스트는 zuser100 으로 새로 로그인하여 파일과 디렉토리 생성해서
     확인하면 됩니다.


[프로세스 실습문제]

1. sleep 1000, 2000, 3000을 백그라운드로 실행하시오.

2. 백그라운드로 실행하고 있는 ps를 정보를 출력하시오.(2가지 방식으로 출력)

3. top 명령어를 실행하고 목록에 1개, 5개, 10개씩만 출력하시오.

4. sleep 1000, 2000, 3000을 강제 종료하시오.

5. 로그아웃 후에도 sleep 2000 작업이 실행되도록 설정하시오.


[작업예약 실습문제]

1. 오늘 현재시각 +5분 뒤 harry는 shutdown -h now 명령어를 예약하고 싶다.
   at 명령어를 사용하여 설정하시오.

2. 오늘 현재시작 +10분 뒤 sara는 자신의 홈디렉터리 출력정보를 homelog.txt로
   저장하고 싶다. at 명령어를 사용하여 설정하시오.

3. 1-2번에 설정된 at명령어를 조회하고 실행되는지 확인하시오

4. 20년 매월 1일 00시에 harry는 reboot 명령어를 예약하고 싶다. cron을 활용하여
   작성하시오.

5. 20년 3월 19일 22시에 sara는 자신의 홈디렉터리에 있는 homelog.txt 파일을
   삭제하고 싶다. cron을 활용하여 설정하시오.

6. 4-5번에 설정된 cron 명령어를 조회하고 실행되는지 확인하시오.(실행을 위해 시간을 바꿔도 상관없음)


[파티션 실습문제 1]

/dev/sdb 파티션구성

1번 = 주 300M (파일시스템 : ext2)
2번 = 확장 800M
      - 논리 = 485M (파일시스템 : xfs)
      - 논리 = 남은용량
3번 = 주 디스크 남은용량

작업완료 후 확인 및 출력결과 하단부 기재



[파티션 실습문제 2]

/dev/sdc 파티션 구성

1번 = 주 400M * 3개(ext2)
2번 = 확장 남은용량(xfs)
      - 논리 = 400M
      - 논리 = 200M

작업완료 후 확인 및 출력결과 하단부 기재


파티션 전체목록
=


파티션 타입출력
=


[파티션 실습문제 3]

1. /dev/sdd 파티션 구성

1번 = 주 200M * 3개 // ext4 시스템
2번 = 확장 400M
      - 논리 = 200M // xfs 시스템

2. /mailhome, /ftphome 디렉터리를 생성하고 sdd1 -> /mailhome, sdd2 -> ftphome에 mount 하시오.

mailuser1, mailuser2, ftpuser1, ftpuser2 계정을 생성하시오.
-- 조건 : mail, ftpuser1, 2의 디렉터리를 /mailhome, /ftpuser 각 계정명에 맞게 생성하시오.

3. mailhome과 ftphome을 자동마운트로 설정하고 해당 설정값을 아래 작성하시오.
=


[파일시스템 및 mount 실습문제 1]

/var/log/ 의 모든 로그파일을 sdb1로 옮기는 작업

1. /dev/sdb --> 전체크키고 주파티션 1개만 생성 (파일시스템 ext3로 생성)
2. /mnt 디렉토리에 logmount 폴더 생성
3. sdb1을 logmount 디렉토리에 마운트
4. /var/log 의 모든 파일을 sdb1을 마운트 한 디렉토리에 모두 복사
5. rm -rf /var/log/* 명령으로 기존 파일 삭제하기
6. rsyslog 데몬 재시작 -->> systemctl restart rsyslog
7. /var/log 복사 폴더의 messages 파일 내용을 확인하기

   -- messages 파일 맨 하위 내용 중 아래와 같다면 성공!

Mar 17 17:58:05 localhost systemd: Starting System Logging Service...
Mar 17 17:58:05 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.2" x-pid="4879" x-info="http://www.rsyslog.com"] start
Mar 17 17:58:05 localhost systemd: Started System Logging Service.


[파일시스템 및 mount 실습문제 2]

1. /usr/share/man/* /dev/sdd1(임의폴더 마운트 후) 옮기기

2. 옮기고 나서 원래 데이터는 삭제

3. 확인방법 : man cp  --> 도움말이 실행되면 성공

4. 성공한 작업내용을 기술하시오.


[파일시스템 및 mount 실습문제3]

1. /dev/sdb을 주파티션 최대용량으로 1개 파티션을 생성하시오(type : ext2)

2. 임의의 디렉터리를 임의경로에 생성하여 /dev/sdb1을 마운트 하시오.

3. /home에 있는 모든 계정 디렉터리를 /dev/sdb1 마운트 포인트에 복사

4. 복사 후 /home에 있는 계정 디렉터리를 삭제하시오.

5. /dev/sdb1이 자동으로 mount 되도록 설정하시오.

6. 리부팅 후 자동으로 mount 되는지 확인하시오.

7. su - <계정> 으로 접속하여 문제를 조치하시오.

8. [root@localhost ~]# 형식으로 나오면 성공!


[LVM 생성 실습문제 1]

===조건===
1. HDD 10G 1개를 장착하여 root 계정으로 로그인하시오.
2. 1번 = 주 500M * 2개 // ext4 시스템
   2번 = 논리 500M * 2개 // xfs 시스템

   논리볼륨 디스크를 2개 생성하는데
   1번 = vg name = ext4
         PE size 16MB
         lv name = data
         extend 볼륨 확장은 60 으로 지정하여 생성

   2번 = vg name = xfs
         PE size 8MB
         lv name = data2
         extend 볼륨 확장은 500MB 로 지정하여 생성

3. lv ext4의 용량을 500M 로 축소하시오

3-1. lv ext4의 용량을 900MB 로 확장하시오

4. lv xfs의 용량을 1GB 로 확장하시오.

3. lvdisplay결과를 하단부에 작성하시오.


출력결과 

=


리눅스 해부학 강의를 보고 학습을 하고 계신 독자여러분 모두 한번 실습문제를 직접 풀어보시면 많은 도움이 되실 겁니다. 모두 한번 1강부터 9강까지 학습을 해보셨더라면 한번 직접 실습문제를 풀어보세요. 문제를 풀어보시면서 궁금하신 사항이 생기시거나 문제 푸는 중간에 막히신 부분 댓글 달아주시면 빠른 시일 내로 답변 및 풀이해설 해드리도록 하겠습니다.