유닉스 타임 (Unix time)

 # date +%s

 위의 명령을 사용하여 확인할 수 있다.유닉스 time() 함수는 1970년 1월 1일 0시부터 현재까지 경과된 시간을 초 단위로 정수값으로 반환하여 시간을 계산하고 있다.

 time_t 변수는 1970년 1월 1일 0시부터의 초 카운터를 정수로 나타낸다. 이 점을 이용하여 파일 이름을 겹치지 않게 만들기 위해 유닉스 타임을 이용하여 타임 스탬으를 파일 이름에 붙이는 경우도 많이 있다.

 그러나 문제는 있다. 유닉스 날짜 값은 4Byte 공간에 저장되어 있어, 이 초 카운터를 32비트의 Signed Integer 로 표현하는 현재 상태로는 2038년까지의 시간만 계산할 수 있다는 것이다.

 물론, 아직 시간이 있으므로 그 안에 이 문제 역시 해결될 것이라 생각한다.

사용자 삽입 이미지

at (작업 예약)

 명령어나 스크립트의 실행을 예약한다.

at [옵션] 시간 [날짜] [+증가시간] (Language : text)
시간 : 명령어나 스크립트를 실행할 시간을 지정한다.

+증가시간 : 증가 시간만큼 지난 후 실행한다.

-q queue : queue 이름을 지정한다. 큐 이름으로는 a~z, A~Z 가 쓰일 수 있다. 큐 이름을 지정해 주지 않으면 at 는 a 를 batch 는 b 를 사용한다. 알파벳 순서로 뒤의 이름을 갖는 큐는 더 큰 niceness 값을 갖는다. = 큐는 현재 수앻되는 작업에 대한 큐로 예약되어 있다. 대문자 이름의 큐에 추가된 작업은 batch 의 작업처럼 처리된다.

-m : 출력 결과가 없더라도 작업이 완료될 때 사용자에게 메일을 보낸다.

-f 파일명 : 스크립트 파일 등을 실행해 줄 때 사용한다.

-l : 예약된 작업 목록을 보여준다.

-v : 작업이 수행될 시간을 보여준다.

-d : 예약된 작업을 삭제한다. (Linux)

-r : 예약된 작업을 삭제한다. (Unix)

 at 는 등록된 명령어를 원하는 시간에 실행하게 하는 기능을 한다. 즉 시스템의 부하가 적은 시간에 실행시키거나 예약된 시간에 꼭 실행되어야 하는 작업을 자동으로 처리하고자 할 때 사용한다.

 at 에 의해 실행할 시간 설정

 예약 작업 기능이므로 시간에 대한 설정이 중요하다. at 의 시간 설정은 날짜와 시간을 정해주는 시간 설정과 현재 시간 혹은 정해진 시간에서 증가시간으로 설정해 주는 방법이 있다.

 시간표현 방법

분류  |  형식        |    설명                                                | 예
================================================================================================
시간 |  hh:mm      | hh(시간), mm(분)으로 설정                            | 16:18
     ——————————————————————————————–
     | am, pm       | 표시가 없는 경우 Linux 나 Unix 에서는 하루를 24시 |   4:18 pm
     |               | 간으로 표현한다. am 과 pm 을 이용하여 12시간 단위 |
     |               | 표현이 가능하다.                                      |
    ———————————————————————————————
     | midnight     | midnight(00:00), noon(12:00), teatime(16:00) 같은 |
     | noon         | 서술형 시간으로도 지정이 가능하다. now 는 현재시간|
     | teatime      | 이며 증가시간 설정에 많이 쓰인다.                   |
     | now          |                                                         |
————————————————————————————————
날짜 | yyyy-mm-dd | 일반적인 날짜 구성으로 표현                        | 2008-10-31
      ——————————————————————————————-
      | month num   | 4월 13일은 “April 13” 로 표현한다. 혹은 약자로     |  April 13
      |               | “Apr 13” 로 표현할 수 있다.                          |
      ——————————————————————————————-
      | today        | 오늘 또는 내일로 지정할 수 있다. 각 요일별로도 표  |
      | tomorrow    | 현이 가능하다.                                       |
================================================================================================

 test 라는 파일을 만들어 주는 명령어인 touch test 이란 명령어를 at 에 등록하여 2008년 10월 31일 03:35 에 실행한다. 2008년 10월 31일 3:35 는 “03:35 2008-10-31” 으로 표현할 수 있다.

사용자 삽입 이미지

 at 에 예약된 작업 정보
작업번호 | 날짜              | 시간 queue    |     이름    | 사용자
     1       Fri Oct 31          03:35              a         pchero

 작업번호 : at 에 등록된 작업 번호, 등록된 순서대로 매겨지며 at -d, 또는 atrm 을 이용해 at 작업을 삭제해 줄 때 사용.

 날짜/시간 : 등록된 명령이 실행 될 시간
 
 queue 이름 : “-q” 옵션을 이용하여 큐 이름을 지정

 사용자 : at 에 작업을 예약한 사용자

 증가시간을 이용한 설정

 현재 시간으로부터 6시간 ㄷ후에 Control.sh 스크립트가 실행 되도록 예약하고 싶다면 다음과 같이 f 옵션을 사용하여 예약 작업으로 등록한다.

 또한 리다이렉션을 이용해도 같은 결과를 얻을 수 있다.

 # at now +6 hours -f Control.sh
 파일을 예약 작업으로 등록

 # at now + 6 hours < Control.sh
 리다이렉션을 이용한 예약작업 등록

 먄약 20번에 예약된 작업을 삭제하고 싶다면 다음과 같이 삭제한 작업번호를 지정한다.

 # at -d 20

 
 at 의 사용 권한 설정

 at 명령어는 at.allow 와 at.deny 두 파일을 이용해 일반 사용자의 at 명령어 사용 권한을 지정해 줄 수 있다.

 /etc/at.allow 파일이 있으면 at.allow 에 기록된 사용자만 at 명령어를 사용이 가능하며 /etc/at.allow 파일이 없으면 /etc/at.deny 에 기록이 안된 사용자만 사용이 가능하다. 두 파일 모두 없다면 관리자만 사용할 수 있다.

 관련 명령어

 atq : 예약된 작업 목록을 보여 준다.

 atrm : 예약된 작업 목록을 삭제한다.

 batch : 시스템 부하가 일정 이하일 때 명령을 실행한다.

 cron : 정기적으로 예약된 작업을 수행한다.

arping (네트워크 연결 확인)

 ARP 요청을 이용한 네트워크 연결 확인 명령

arping [옵션] detination (Language : text)
-c count : arping 의 개수를 지정한다.

-w timeout : w 옵션 뒤 시간(초)을 자정하여 그 시간(초)까지만 arping를 실행한다.

-I device : 이더넷 장치를 지정한다.

-s source : 소스(source) IP 를 지정한다.

 destination : 목적지 IP 주소

 ping 의 변형으로 ICMP 패킷 대신 ARP 요청과 응답으로 사용중인 IP 주소로 MAC(Medium Access Control)주소를 찾거나, MAC 주소가 있을 때 IP 주소를 찾을 수도 있다. 또한, ICMP 패킷을 차단한 호스트라도 단지 연결성만을 검사하고 싶을 경우라면, arping 은 유용한 수단이 될 수도 있다.

 다음은 자신의 시스템으로 arping 을 3번 보내서 확인하는 예제이다.

사용자 삽입 이미지
 시스템에 네트워크 디바이스가 여러 개 장치되어 있어 각 장치별로 연결성을 테스트하고 싶다면 “-I” 옵션을 이용하여 장치를 지정하여 준다.

 관련 명령어

 ping : 네트워크 연결성을 분석한다.

 ICMP (Internet Control Message Protocol)

 ICMP 는 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 에러를 알려주는 프로토콜이다. 만약 라우터가 네트워크 경로를 설정할 수 없거나 데이터를 전달할 수 없을 때 이런 네트워크 상의 문제를 해결하도록 정보를 보내야 하는데 필요한 프로토콜이다. ping 명령도 이 프로토콜을 사용하게 된다.

 

 TCP (Transmission Control Protocol)

 TCP 는 인터넷상의 컴퓨터들 사이에서 데이터를 메시지의 형태로 보내기 위해 IP 와 함께 사용되는 프로토콜로, OSI 통신보델에서, TCP 는 4계층인 트랜스포트 계층에 속한다. TCP 메시지들이 각 단의 응용 프로그램 사이에서 교환되는 동안 연결이 유지되기 때문에 연결지향 프로토콜이라고 알려져 있으며 데이터 패킷의 순서를 제공한다.

 UDP (User Datagram Protocol)

 UDP 는 IP 를 사용하는 네트워크 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다. TCP 와는 달리 ㄷ착하는 데이터 패킷들의 순서를 제공하지 않는다. 대신, 처리 속도가 빠르므로 교환해야 할 데이터가 매우 적은 경우 TCP 모다 유용하게 사용할 수 있다.

계속되는 ARP 메시지…

 이상한 일이었다.

 과제를 위해 네트워크의 트래픽 사용량을 찍어내던 중….이상한 현상을 발견하였다.

 나의 노트북에서 계속해서 ARP 메시지를 보내고 있었던 것이다.

 다른 일반적인 TCP나 UDP 패킷과는 달리, ARP메시지는 브로드 캐스트로 뿌려주는 메시지이기 때문에 이 메시지가 계속해서 네트워크에 뿌려지게 된다면 부하가 심할것이었다.

사용자 삽입 이미지

 원인을 계속 찾아보았지만 알수가 없었다.

 심지어는 KLDP에 이 문제를 올려보기도 했다.

 http://kldp.org/node/99349

 하지만 아무도 답을 달아주지 않았다.(관심점…ㅠㅠ)

 그래도 꿋꿋하게 원인분석에 들어갔다. 답이 나왔는데…어이없게도..

 얼마전…과제를 위해 설치했던 OpenVPN이 문제였다.

 OpenVPN이 리눅스 부팅과 동시에 자동으로 실행되어 매번 원격 서버에 접속을 위해 자동으로 ARP메시지를 뿌리고 있었던것…

 VPN이라 위부망으로 보내는 것이 아닌 내부망으로 보내는 것이었기에 나는 전혀 눈치채지 못하고 있었다.

 하긴…어디서 많이 보던 내부 IP 라고 생각했었다…;;;

 잠시간의 흥미로웠던 현상은 여기에서 끝이 났다.

네임서버 start….

 네임서버는 named 스크립트를 이용하여 사용하는 경우와 Bind 제어프로그램인 ndc를 이용하는 경우가 있다.

 named 스크립트를 사용하는 경우.

 
# /etc/init.d/named start

 bind 제어 프로그램을 사용하는 경우 다음의 두가지를 참고한다.

 # /etc/init.d/bind start
 혹은
 # ndc start