Linux ETC

리눅스 서버에서 일반적으로 history 라는 명령어를 통해서 로그인한 사용자가

작업했던 커맨드를 확인할 수 있습니다.

1. SHELL 마다 각기 다른 HISTFILE이 지정되는데,

    Redhat Linux 계열에서 Default SHELL은 BASH이며 HISTFILE은 아래와 같습니다.

    ~/.bash_history

    로그인한 순간부터의 입력한 커맨드는 버퍼에 기록되며,

    로그아웃시 버퍼에 기록된 history는 ~/.bash_history 파일에 추가 기록이 됩니다.

2. history 라는 명령어를 입력하면 ~/.bash_history 와 buffered/cache history 가

   아래와 같이 화면에 나열됩니다.

    [root@rootnya root]# history
    204 dmesg
    205 clear
    206 df -TH
    207 ls -alR /var/tmp
    208 ls -alR /tmp
    209 cd /var/tmp
    210 clear
    211 ls -la
    212 rm -f rpm-tmp.64248
    213 clear
    214 ls -la
    215 clear
    216 ls -al
    217  history
   [root@rootnya root]#

   출력된 결과를 살펴보면 Column 1 은 ~/.bash_history 와 buffered/cache history 에

   저장된 커맨드의 히스토리 순번이며 Column 2 은 입력하였던 명령어들이다.

   그러나, 정작 언제(명령어를 입력한 시각)라는 항목은 보이지 않고 있습니다.

3. bash 에서는 다양한 HIST 변수를 지정할 수 있습니다.
    man bash 후 /HISTTIMEFORMAT 이라는 변수를 조회해보면,

   우리가 알고 싶은 명령어를 입력한 시간을 hostory 에 남길 수 있는 방법을 제시하고 있습니다.

    HISTTIMEFORMAT

    If this variable is set and not null, its value is used as a format string for strftime(3)

    to print the time  stamp associated with each history entry displayed by the history builtin.

    If this variable is set, time stamps are written to the history file so they may be preserved

    across shell sessions. HOME The home directory of the current user; the default

    argument for the cd builtin command. 

     The value of this variable is also used when performing tilde expansion.

4. HIST 변수의 적용은 /etc/profile 파일에 아래와 같은 라인을 추가합니다.

    # Add timestamp to .bash_history
    HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S "
    export HISTTIMEFORMAT

   위와 같이 /etc/profile 파일에 추가 후 source /etc/profile 또는 ssh 로 재로그인 후 부터는
   history 명령어 입력시 Column 2 에 연/월/일/시/분/초 의 시간 정보를 확인할 수 있습니다.

   [root@rootnya root]# history
   959 2007-06-23_02:08:59 vi /home/com/www/bbs/skin/member_list/list_main.php
   960 2007-06-23_02:10:00 ps aux
   961 2007-06-23_02:10:01 ps ax
   962 2007-06-23_05:24:47 vi /etc/procmailrc
   963 2007-06-23_05:25:07 /etc/init.d/qmail reload
   964 2007-06-23_05:25:08 ps aux
   965 2007-06-23_05:25:11 /etc/init.d/qmail restart
   966 2007-06-23_05:25:12 ps aux
   967 2007-06-23_05:25:20 tail -f /var/log/qmail/procmail
   968 2007-06-23_05:25:31 vi /etc/procmailrc
   969 2007-06-23_05:25:39 /etc/init.d/qmail restart
   970 2007-06-23_05:25:47 vi /var/log/qmail/procmail
   971 2007-06-23_05:26:38 vi /etc/procmailrc
   972 2007-06-23_05:26:49 /etc/init.d/qmail restart
   [root@rootnya root]# history

   단, bash-3.0-alpha 이상의 bash 부터 HISTTIMEFORMAT 변수를 지원합니다.
   이전 버전의 bash 는 위 이상의 버전으로 업데이트 후 부터 지원이 됩니다.

번호 제목 글쓴이 날짜 조회 수
226 debian / ubuntu SSH root 사용자 접속 허용 호스트웨이 2012.11.23 14069
225 epel-release 설치하기 file 호스트웨이 2014.12.22 14293
224 /proc의 퍼미션 조정으로 보안 강화 호스트웨이 2012.05.18 14350
223 Linux 시스템 정보 확인 호스트웨이 2012.08.24 14444
222 특정 IP 엑세스 못하게 하는방법 호스트웨이 2012.06.22 14454
221 서버 아이피 변경으로 인한 다량의 네임서버 존파일 일괄 변경 방법 호스트웨이 2012.04.06 14685
220 find 명령어-1 호스트웨이 2012.03.30 14935
219 리눅스에서 Which 명령어로 명령어 경로 확인 호스트웨이 2012.07.13 14959
218 find 명령 사용 예제들 호스트웨이 2012.06.29 14966
217 리눅스 가상콘솔개수 조절 file 호스트웨이 2012.06.15 15248
216 "The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY AED4B06F473041FA" 에러 메시지 발생 시 호스트웨이 2012.07.27 15400
215 yum 업데이트시 특정 패키지 예외처리 방법 호스트웨이 2012.08.23 15416
214 Linux 설치후 기본언어 한국어로 변경 호스트웨이 2012.08.23 15422
213 리눅스 runlevel이란? 호스트웨이 2012.07.13 15452
212 특정 NIC에 한 개 이상의 IP 할당하기 호스트웨이 2012.05.18 15481
211 Linux 미사용 Demon이 실행되지 않게 설정하기 file 호스트웨이 2012.07.20 15565
210 hdparm 을 이용한 하드성능 체크 및 하드 정보 확인 호스트웨이 2012.05.25 15585
209 실수로 압축해제 한 파일들 삭제하기 file 호스트웨이 2012.04.27 15664
208 netstat 명령 옵션-2 호스트웨이 2012.09.13 15803
207 리눅스 퍼미션(Permission)이란? file 호스트웨이 2012.07.20 15923