0
아래 예제처럼 bash 함수를 사용하여 내보낼 필요가 있습니다. 내 예제 에있는 함수 본문은 단순화되어 있습니다. 실제로는 더 복잡합니다. 나는 전체 의 몸체를 send-keys 인수에 쓰고 싶지 않다.tmux : bash 함수의 환경 업데이트
#!/bin/bash
TMUX_SESSION="experiment"
LOG_FILENAME="_log"
exec_commad() {
run_my_commad_that_produces_log_messages > $LOG_FILENAME
}
watch_errors() {
tail -F ${LOG_FILENAME} | grep -E ' (WARNING|ERROR|CRITICAL) '
}
tmux new-session -d -s "$TMUX_SESSION"
tmux send-keys "exec_commad" 'C-m'
tmux split-window -v
tmux send-keys "watch_errors" 'C-m'
tmux -2 att -t $TMUX_SESSION
아이디어 변수뿐만 아니라 기능도
set-option -ga update-environment ' exec_commad watch_errors'
작품을 만드는 것입니다.
기능으로 TMUX 세션에서 파일을 소싱하는 것입니다. 필자는 tmux를 사용한 적이 없기 때문에 더 좋은 방법이 있는지 모르겠다. 그러나 단순히 명령을 별도의 스크립트에 넣고 단순히 스크립트 파일을 호출하는 것이 좋습니다. – falstro
@roe 예,하지만 제 예제는 매우 단순합니다. 나는 더 많은 기능을 두 개 이상 (더 많은 tmux 창을 위해) - 그리고 더 - 전체 스크립트는 단지 사용을 위해 생성됩니다. 기능을 별도의 파일에 저장하면 문제가 복잡해집니다 (예 : 임시 파일을 삭제하는 경우). 더 명확히하기 위해서 : 필자의 목표는 tmux 하에서 자체 모니터링 (지속 시간, 로그 파일 분석, CPU/메모리 등) 명령을 실행하는 도구를 만드는 것입니다. –
'export -f exec_command watch_errors'를 사용하여 함수를 먼저 명시 적으로 export 할 필요가 있습니다. 'bash'는 본질적으로 함수 정의를'() = {...}'형식의 단일 문자열로 밀어 넣고 함수와 같은 이름을 가진 변수에 할당합니다. 다른'bash' 쉘은 그러한 환경 변수로부터 함수를 재구성 할 수 있습니다. – chepner