Q1) 활성화된 네트워크의 세부 사항을 확인한 후, 스트림 전환을 통해 log.txt에 기록하고, log.txt 파일 상단의 10줄만 확인하고 싶습니다. 이때 사용할 수 있는 적합한 명령을 고르시오.
ifconfig > log.txt | head
log.txt까지 생성되었으나
head
에 대한 파이프 연결을 확인하기 어렵다.
아마도 파이프 연결은 됐을 것이다. 확인하지 못 했을 뿐...
ifconfig > log.txt > head
ifconfig > log.txt | cat
ifconfig > log.txt | head
cat log.txt < ifconfig
cat | ifconfig > log.txt
ifconfig > log.txt | head -10
ifconfig > log.txt > head -10
head log.txt < ifconfig
head log.txt | ifconfig
ifconfig > log.txt | head log.txt
ifconfig > log.txt | head > log.txt
등
여러방법으로 조합해 보았지만 나오지 않는다.
정확한 답은tee
를 사용하여 화면에 출력하고 파일에 저장하는 것이다.
ifconfig | head | tee log.txt
ifconfig | head > log.txt
ifconfig | tee log1.txt | head > log2.txt
파이프와 리다이렉션의 적절한 순서로 데이터의 입출력에 따라 결과를 출력해낼수 있다.
Q2) access.log에서 마지막 100줄의 로그를 기존에 존재하던 sample.txt 파일에 덮어쓰고, 상태 코드가 200인 로그를 추출하여 새로운 파일 statusok.txt에 저장합니다. 그리고 해당 파일에 몇 개의 로그가 있는지 확인하고 그 수를 적으시오. (예: 199)
상태 코드가 200인 로그를 구분하는 것이 핵심이었다.
11.111.111.11 - - [20/May/2015:21:05:03 +0000] "GET /blog/tags/puppet?flav=rss20 HTTP/1.1" 200 14872 "-" "UniversalFeedParser/4.2-pre-314-svn +http://test123456.org/"
여기서 200이 바로 구분되나, '200'으로 검색할 시
22.222.222.22 - - [20/May/2015:21:05:47 +0000] "GET /files/blogposts/20090105/ff3linux.png HTTP/1.1" 304 - "-" "Googlebot-Image/1.0"
이 로그는 상태 코드가 304임에도 불구하고 결과에 들어간 것이다.따라서 '200 '으로 검색하여 결과를 확인해야 한다.
작은 space 하나로 결과가 달라지는 점을 기억하자.정확히 구분하는 방법은
cut
명령어로 필드를 구분하여 몇 번째 필드의 값을 가져올지 계산한 다음, 그 값의 목록 중 '200'을 찾으면 정확히 알 수 있다.