2009-12-23 3 views
1

직장에서 tcsh를 사용합니다 - 제가 광범위하게 사용하는 기능 중 하나는 쉘 프롬프트에서 명령 줄 기록 완료입니다. 현재, 역사 파일의 크기를 2000으로 제한했습니다 (쉘을 너무 느리게하고 싶지 않기 때문에). 그러나 때로는 한 두 달 전에 사용했던 명령을 필요로하지만 지금은 지워졌습니다. 연대순으로 두 경우, 즉 주문한tcsh 기록을 시간순으로 하나의 파일에 주기적으로 백업하는 방법은 무엇입니까?

  1. 내 히스토리 버퍼에 저장, 그들이하는 "마스터"기록 파일에 저장해야 삭제하기 대신에 이전 명령의

  2. 2000 라인 : 그래서, 상기 시스템을 원하는 쉘이 열렸다면, 히스토리에 입력 된 명령은 날짜 기록 (쉘이 닫힌 순서가 아님)에 따라 정렬되어야합니다!

  3. 이 마스터 히스토리 파일이 자동 백업 될 수 있다면 완벽 할 것입니다 (예 : 매주 말).

많은 열렬한 셸 사용자가 이런 상황에 직면했을 것이라고 확신합니다. 이러한 사용자 중 한 명으로부터 답변을 얻으려고합니다!

+0

2000 년 이후에는 상당히 느려질 것입니다. –

+2

위의 답은 사실상 훨씬 간단합니다. 10,000 줄을 만듭니다. 또는 당신이 감속을 볼 때까지 점차 커집니다. – PurplePilot

답변

1

2000 매우 낮습니다. 당신은 너무 많은 고통없이 공정한 금액을 올릴 수 있습니다.

다음으로 로그 아웃 할 때 새로운 명령이 .history 파일에 추가되기 때문에 기록을 저장하려고합니다.

$ HOME (.bash 사용자의 경우이 파일은 .bash_logout)에 .logout 파일을 작성하십시오. 이 경우 기록의 내용을 영구 저장소에 복사하십시오. 예 :

이렇게하면 ".ancient_history"파일에 기록이 추가됩니다. bash 사용자의 경우 복사 할 파일 이름은 .bash_history입니다.

그런 다음이 때마다 백업을 만드는 크론 작업을 만듭니다. 여기서는 파일을 매일 자정 5 분 후 날짜 스탬프가있는 파일 이름으로 옮기는 방법이 있습니다.

5 0 * * *  mv $HOME/.ancient_history $HOME/.ancient_history_`date +%s` 

아마도 이것으로 할 수있는 일이 많지만 시작하기에 충분합니다. 전에 생각하지 못했던 꽤 좋은 생각입니다 :-)

1

이렇게 생각한 적은 없지만 가장 간단한 방법은 내역 파일을 다른 파일에 추가하는 cron 작업을 작성하는 것입니다. 이 문제는 덤프를 수행 한 후 cron을 작성하여 기록 파일을 지우지 않는 한 중복을 얻을 수 있다는 것입니다.

내역은 각 덤프마다 숫자가 반복되도록 행 번호로 저장됩니다 (알고있는 한). 하지만 덤프 날짜가있는 마커 선을 차게 추가하면됩니다.