문제풀이 3

문제를 풀어보면서 리눅스(Unix)의 개념을 학습해본다.

1. 소유자가 george이고 그룹이 others일때 data파일의 소유자와 그룹을 동시에 변경하시오

$ chown george:others data

2. 현재 로그인한 사용자의 목록에서 2016-01-07에 접속한 사용자를 출력하시오.

$ who | grep '2016-01-07'

3. 접근권한이 775인 data 디렉토리를 생성하시오.

$ mkdir -m 755 data

-m옵션은 디렉토리의 mod를 설정

4. 현재 디렉토리에서 링크 파일만 찾는 lnfind란 alias를 생성하시오.

$ alias lnfind='find ./ -type l'

5. 현재 디렉토리에서 24시간 이내에 수정된 파일을 찾으시오.

$ find ./ -mtime -1

6. 현재 디렉토리에서 test로 시작하는 디렉토리만 찾아 삭제하시오.

$ rm -r `find -name 'test*' -type d`

7. ssh를 이용하여 kumquat라는 서버에 /test2라는 디렉토리를 생성하시오.

$ ssh root@kumquat mkdir /test2

8. test1 과 test2 의 내용을 비교하는 명령어를 작성하시오

$ diff test1 test2

9.test1 test2 test3을 리다이렉트를 test4의 파일로 합치시오

$ cat test1 test2 test3 > test4

10. test5 파일의 마지막 10개의 행을 출력하시오.

$ tail test5

11. /etc/group 과 /etc/password에서 root가 있는 라인의 개수를 출력하시오.

$ grep -c 'root' /etc/group/* /etc/password/*

12. test6파일에서 시작문자가 a, 마지막 문자가 z로 끝나는 문장을 출력하시오.

$ grep -e '^a' test6 | grep -e 'z$'
$ grep -E '^a.*z$' test6

13. test6파일에서 mail이 나오는 행과 plug가 나오는 행 사이의 모든 행을 출력하시오.

$ sed -n '/mail/, /plug/ p' test6

14. test7파일을 gzip으로 압축하시오.

$ tar -cvzf test7.gzip test7

15. test8 파일의 가장 긴 줄의 길이를 출력하시오.

$ wc -L test8

16. vi ex에서 10행부터 파일의 끝까지를 test9로 저장하시오

:10,$ w test9

$는 마지막행을 의미

17. vi ex에서 help 또는 Help를 모두 HELP로 변경하시오

:%s/[hH]elp/HELP/

18. dd를 사용하여 블록사이즈가 2바이트이고 10블록의 null문자로 채워진 test10파일을 생성하시오.

$ dd if=/dev/zero of=test10 bs=2 count=10

19. test11파일의 3번째 필드를 기준으로 정렬하시오.

$ sort -k 3 test11

20. test12파일을 역순으로 정렬하고 중복되는 라인을 제거하고 출력하시오.

$ sort -ur test12

21. 월요일 새벽3시 30분에 /bin/date를 실행하는 cron문을 작성하시오

30 4 * * 1 /bin/date

22. 최근에 사용한 명령어 20개를 출력하시오.

$ history 20

23. cut 명령어로 test14파일의 “_“를 구분자로 지정하여 두번재 필드를 출력하시오.

$ cut -d"_" -f2

cut은 파일에서 필드를 뽑아내는 명령어이며, 기본 구분자는 탭이다.
옵션은 아래와 같다.

  • -d: 구분자를 지정한다
  • -f: 잘라낼 필드를 지정한다
  • -c: 잘라낼 곳의 글자 위치를 지정한다
  • -s: 필드 구분자를 포함할수 없다면 그 행은 수행하지 않는다

24. touch 명령어를 이용하여 test15파일을 2016년 1월 1일로 변경하시오.

$ touch -t 201601010000 test15

touch는 파일의 날짜 시간정보를변경하는 명령어이다. 옵션을 지정하지 않으면 크기가 0인 파일을 생성한다. 옵션은 아래와 같다.

  • -c: 현재 시간으로 변경
  • -t: 뒤에 따라오는 시간으로 변경
  • -r: 뒤에 따라오는 파일의 시간과 같게 변경(touch -r 1번 2번 => 2번파일이 1번과 같게 변경됨)

25. nginx 프로세스에 대한 정보를 출력하시오.

$ ps -ef | grep nginx

26. 2342의 PID를 가진 프로세스를 종료하시오.

$ kill -15 2342

27. ls를 백그라운드로 동작시키시오.

$ ls &

28. 백그라운드 작업목록을 출력하시오.

$ jobs

29. test16의 파일을 test.tar로 압축하시오.

$ tar -cvf test.tar test16

30. 일정한 크기를 가진 여러 개의 작은 파일로 분할하는 명령어를 이용하여 test17파일을 20행씩 분할하시오.

$ split -l20 test17

split은 파일을 분할하는 명령어이다. 사용법은 아래와 같다.

$ split -b 10m test17   # 파일을 10m단위로 분할한다.
$ split -l 10 test17    # 파일을 10줄 단위로 분할한다.

생성된 파일은 xaa, xab, xac 와 같은 형식으로 생성된다.

31. memory의 상세정보를 볼 수 있는 파일의 위치를 작성하시오.

$ which free

32. 명령어의 위치를 찾을 수 있는 명령어를 작성하시오.

$ which
$ whereis

33. 60초동안 대기하는 명령어를 작성하시오.

$ sleep 60

34. ./dev/sda5를 /mnt에 마운트 하는 명령어를 작성하시오.

$ mount ./dev/sda5 /mnt

mount는 장착되어있는 디바이스를 마운트하는 명령어이다. 사용법은 아래와 같다.

$ mount [OPTION] [DEVICE] [PATH]

35. 작업중인 터미널 창이 종료되더라도 실행중인 프로세스를 백그라운드 프로세스로 계속 작업할 수 있도록 하는 명령어를 작성하시오.

$ nohup 실행 &

nohup은 세션이 끊기더라도 백그라운드에서 계속 작업을 하도록 하는 명령어이다.

36. apt-get 명령이 패키지 관련 정보를 확인하기 위해 참조하는 파일의 위치를 작성하시오.

/etc/apt/sources.list

37. yum을 이용하여 nginx패키지를 제거하는 명령어를 작성하시오.

$ yum remove nginx

38. 커널에 로드되어있는 모듈을 확인하는 명령어를 작성하시오.

$ lsmod

39. 현재 파일시스템들의 사용량을 MB단위로 출력하시오.

$ df -m

40. ./home/test18 디렉토리의 사용량을 KB단위로 출력하시오.

$ du -k ./home/test18

41. awk를 사용하여 test19파일의 필드 개수를 출력하시오.

$ awk '{print NF}' test19

awk가 내부적으로 사용하는 시스템 변수는 다음과 같다.

FILENAME 현재 처리중인 파일명
FS 필드 구분자로 디폴트는 공백
RS 레코드 구분자로 디폴트는 새로운 라인
NF 현재 레코드의 필드 개수
NR 현재 레코드의 번호
OFS 출력할 때 사용하는 FS
ORS 출력할 때 사용하는 RS
$0 입력 레코드의 전체
$n 입력 레코드의 n번째 필드

42. awk를 이용하여 test20파일의 “_“를 구분자로 하는 첫번쨰와 세번째 필드를 출력하시오.

$ awk -F_ '{print $1 $3}'

43. cat nofile의 표준에러를 표준출력으로 리다이렉트하시오.

$ cat nofile 2>&1

44. basename /home/mkel/bin/test.sh의 결과값을 작성하시오

test.sh

basename은 경로명과 파일명을 분리해 파일명을 출력해주는 명령어이다.

45. test21계정의 로그인 쉘을 sh로 변경하시오.

$ vi /etc/passwd

:/test21

제일 끝을 sh로 변경

46. 시스템 부팅 시 자동으로 마운트되게 하기 위해서 설정해야 하는 파일의 위치를 작성하시오.

/etc/fstab

47. 호스트끼리 메일 메시지를 주고받기 위한 간단하고 확장성이 있는 프로토콜은 무엇인가?

sendmail

48. mailplug.co.kr의 DNS를 질의할 수 있는 명령어를 작성하시오.

$ nslookup mailplug.co.kr

49. listen되고 있는 포트의 네트워크 정보 상태를 출력하시오.

$ netstat -tnlp

50. bash에서 2MB보다 큰 파일을 만들지 못하게 하는 명령어를 작성하시오.

$ ulimit -f 2000
through.kim's profile image

through.kim

2017-01-05 13:03

Read more posts by this author