현재 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.jpg
convert foo.jpg
답변4
Bash는 종료 시에만 기록을 작성하므로 기껏해야 문제가 발생합니다. zsh가 활성 세션 간에 기록을 공유할 수 있다고 들었습니다.