문제풀이 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