여러 화면 창에서 내 기록을 쉽게 검색할 수 있나요?

여러 화면 창에서 내 기록을 쉽게 검색할 수 있나요?

현재 screen세션에는 12개의 창이 열려 있습니다. 몇 주 동안 실행 중입니다... ImageMagick convert명령을 실행한 것으로 알고 있습니다.하나history | grep convert지난 주 언젠가 이 12개 화면 창 중 하나... 12개 화면을 모두 닫거나 실행 하지 않고 12개 인스턴스 모두의 Bash 기록을 쉽게 검색할 수 있는 방법이 있습니까 ?

답변1

history -a; history -c모든 창에서 실행하여 기록을 저장할 수 있습니다. 그런 다음 history -r새로 고치십시오.

이 문제를 보다 영구적으로 해결하려면 다음을 추가하세요 .bashrc.

export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

답변2

tcsh를 사용하면 주기적 별칭을 사용하여 세션 간에 기록을 공유할 수 있습니다.

.cshrc(또는 .tcshrc) 파일에서:

set tperiod = 60 #(or any other number.  Time in minutes between refreshing)
alias periodic 'history -S; echo "Syncing history"'

그러면 60분마다 기록 명령이 자동으로 실행됩니다. 그러면 홈 디렉터리의 공개 기록 파일에 기록이 저장됩니다. 기록을 더 자주 업데이트하려면 t기간 수를 낮추거나 "주기적" 명령을 실행하여 수동으로 새로 고칠 수 있습니다.

답변3

어려운 것 같아요. 다음은 귀하에게 도움이 될 수 있는 몇 가지 방법입니다.

프로세스 통계 도구가 설치되어 있고(Linux에서는 이름이 지정된 패키지 검색 acct) 이를 사용할 수 있는 권한이 있는 경우 다음과 같이 언제 어떤 터미널에서 실행할 수 있는지 확인할 수 있습니다 convert.

lastcomm convert

이를 사용할 수 없거나 확실하지 않은 경우 history각 bash 인스턴스에서 명령을 실행하여 찾을 수 있습니다 convert. 또한 bash 시작 기록 파일에서도 명령을 찾습니다.

: >/tmp/convert.history
for w in $(seq 0 11); do
  screen -p $w -X stuff \
    'history | sed 's/^.*convert/'$w'&/" >>/tmp/convert.history
'; done
  • $(seq 0 11)화면 창 수를 반복합니다. 현재 bash를 실행하지 않는 창은 건너뛰고, 입력을 다르게 해석하는 다른 프로세스도 건너뛰세요.
  • screen -p $w stuff …지정된 창에 대한 입력으로 다음 문자열을 보냅니다. 문자열 끝에 개행 문자를 추가해야 합니다.
  • 창 3에서 실행 중인 경우 파일에는 /tmp/convert.history유사한 행 목록이 포함됩니다.3 convert foo.jpgconvert foo.jpg

답변4

Bash는 종료 시에만 기록을 작성하므로 기껏해야 문제가 발생합니다. zsh가 활성 세션 간에 기록을 공유할 수 있다고 들었습니다.

관련 정보