안녕하세요 피터입니다.

오늘은 리눅스의 I/O 재지향(redirection)에 대해서 설명드리겠습니다.

재지향파이프(pipe)와 더불어 리눅스의 명령어들을 훨씬 강력하게 무장시켜주는 역할을 하는 핵심 기능입니다.

마치 그 자체로는 특별한 맛이 나지 않지만 단맛이나 짠맛 같은 다른 맛을 훨씬 강하게 만들어주는 조미료와 같다고 할까요?


파이프는 아래 글에서 자세히 보실 수 있습니다.

개요

리눅스 쉘은 항상 아래와 같이 표준 입출력파일 형태로 열고 있습니다.
  • 표준입력(stdin: 키보드)
  • 표준출력(stdout: 모니터)
  • 표준에러(stderr: 모니터)


기본적으로 프로그램은 연산 결과를 출력 장치(파일, 모니터, 프린터 등)로 내보내는데요. 이 출력되는 데이터를 임의로 다른 장치로 보내는 것을 재지향(redirection)이라고 합니다.


다시 말하면 파일이나 프로그램, 명령어 등의 출력을 낚아채어 다른 파일이나 프로그램, 명령어의 표준 입력으로 보내는 것을 말합니다.


사용법

표준 입출력은 파일 형태로 열려 있다고 말씀드렸는데요. 리눅스에서 열려 있는 파일은 파일 디스크립터(file descriptor)를 할당 받게 됩니다.

  • 표준 입력(stdin) = 0
  • 표준 출력(stdout) = 1
  • 표준 에러(stderr) = 2

이렇게 0, 1, 2파일 디스크립터를 할당받기 때문에 이를 이용해서 재지향을 할 수 있습니다.



> file
표준 출력을 파일로 재지향 합니다. 파일이 없으면 새로 만들고, 파일이 있으면 덮어씁니다.

>> file
표준 출력을 파일로 재지향 합니다. 파일이 없으면 새로 만들고, 파일이 있으면 파일의 끝에 덧붙입니다.

2>&1
표준 에러를 표준 출력으로 재지향합니다. 표준 에러도 표준 출력의 자격으로 보내집니다.

< file
파일로부터 표준 입력을 받도록 재지향합니다.


예제

ex) test.txt 파일의 출력을 test.out 파일로 저장

cat test.txt > test.out

ex) today.log 파일의 출력을 week.log 파일의 끝에 덧붙임

cat today.log >> week.log


ex) cat 명령어의 에러를 표준 출력으로 재지향하고 표준 출력을 out 파일로 재지향

[root@peterdev test]# cat nofile > out 2>&1
[root@peterdev test]# cat out
cat: nofile: No such file or directory

에러가 표준 출력으로 재지향 되었기 때문에 화면에 에러가 출력되는 대신에 out 파일에 기록됩니다.


ex) ls 명령어의 에러를 /dev/null 로 재지향

[root@peterdev test]# ls -xy 2> /dev/null
[root@peterdev test]#

/dev/null 은 특수 파일로 이 파일로 출력된 데이터는 버려집니다.

ls 명령에 xy 라는 잘못된 옵션을 입력하여 에러가 발생하였지만, /dev/null 로 재지향하여 출력을 없애버렸습니다.



 

-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

개요

ntpdate 명령어는 리눅스의 시간을 timeserver와 동기화하는 명령어입니다.

리눅스는 서버로 운영되는 경우가 많은데 서버 시간은 서버에서 동작하는 여러 서비스에 영향을 주게 되기 때문에 항상 정확한 시간 정보를 유지하는 것이 좋습니다.

정확한 시간 정보 유지를 위해 타임서버(Time Server)의 시간 정보를 불러와서 기준 시간으로 삼을 수 있습니다.


기본적으로 rdate 명령어와 같은 기능을 수행합니다.

[Linux] rdate로 시간동기화 하기



사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

ntpdate 명령어의 문법은 다음과 같습니다.


usage: ntpdate [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] [-o version#] [-t timeo] [-U username] server ...

 

기본 사용법은 rdate와 큰 차이가 없습니다.

ntpdate timeserver

timeserver 에 시간 서버 주소를 넣어주면 해당 서버와 시간 동기화를 수행합니다.


시간 서버 목록

현재 사용 가능한 시간 서버 목록입니다. 아래 중에 하나의 서버를 선택하여 동기화 해주시면 됩니다.

  • time.bora.net
  • time.nuri.net
  • time.windows.com
  • ntp.kornet.net
  • time.nist.gov

예제

ex) time.bora.net 에 시간 동기화
ntpdate time.bora.net

 

 

-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요

개요

rdate 명령어는 리눅스의 시간을 timeserver와 동기화하는 명령어입니다.

리눅스는 서버로 운영되는 경우가 많은데 서버 시간은 서버에서 동작하는 여러 서비스에 영향을 주게 되기 때문에 항상 정확한 시간 정보를 유지하는 것이 좋습니다.

정확한 시간 정보 유지를 위해 타임서버(Time Server)의 시간 정보를 불러와서 기준 시간으로 삼을 수 있습니다.


기본적으로 ntpdate 명령어와 같은 기능을 수행합니다.

[Linux] ntpdate로 시간동기화 하기


사용법

리눅스에서 사용되는 명령어는 모두 대소문자를 구분하니 주의해주세요.

rdate 명령어에 필요한 argument들의 대한 usage 정보는 rdate 라고만 입력하고 실행하면 볼 수 있습니다.


Usage: rdate [-s] [-p] [-u] [-l] [-t sec] <host> ...

 

기본 사용법은 아래와 같습니다.

rdate -s timeserver

timeserver 에 시간 서버 주소를 넣어주면 해당 서버와 시간 동기화를 수행합니다.


시간 서버 목록

현재 사용 가능한 시간 서버 목록입니다. 아래 중에 하나의 서버를 선택하여 동기화 해주시면 됩니다.

  • time.bora.net
  • time.nuri.net
  • time.windows.com
  • ntp.kornet.net
  • time.nist.gov

예제

ex) time.bora.net 에 시간 동기화
rdate -s time.bora.net


rdate 설치

만일 rdate가 설치되어 있지 않다면 아래와 같이 yum 을 이용해 설치해줍니다.

[root@peterdev ~]# yum -y  install rdate
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirror.dmmlabs.jp
 * extras: ftp.iij.ad.jp
 * ius: mirrors.kernel.org
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package rdate.x86_64 0:1.4-25.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================
 Package              Arch                  Version                     Repository           Size
==================================================================================================
Installing:
 rdate                x86_64                1.4-25.el7                  base                 19 k

Transaction Summary
==================================================================================================
Install  1 Package

Total download size: 19 k
Installed size: 29 k
Downloading packages:
rdate-1.4-25.el7.x86_64.rpm                                                |  19 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : rdate-1.4-25.el7.x86_64                                                        1/1
  Verifying  : rdate-1.4-25.el7.x86_64                                                        1/1

Installed:
  rdate.x86_64 0:1.4-25.el7

Complete!
[root@peterdev ~]#


정기적인 시간 동기화

정확한 시간을 유지하기 위해 rdate 명령을 정기적으로 실행하고자 한다면, crontab에 등록하면 됩니다.

하지만 이런 방법 보다는 ntp 데몬을 사용하시는 것을 권장합니다.


 

 

-Peter의 우아한 프로그래밍

여러분의 댓글은 저에게 크나큰 힘이 됩니다. 오류 및 의견 주시면 감사하겠습니다.

블로그 이미지

친절한 Peter Ahn

IT 정보 공유, 프로그래밍 지식 공유

댓글을 달아 주세요