로그 출력 셸 스크립트

명령은 케이스 스크립트의 목적지 방향을 바꿀 수 있습니다.
덕분에 표준 출력과 표준 오류 출력을 모두 로그에 기록하고 표준 오류만 재생하려는 소망이 이루어졌다.

exec &>


"exec & >"로 표준 출력, 표준 오류 출력을 로그로 전송해 보십시오.

테스트 스크립트


#!/bin/bash
### ログファイル
log=/usr/local/var/log/gorira/$(date '+%Y%m%d-%H%M%S').log

### 日時付きでログファイルへ流し込みます
exec &> >(awk '{print strftime("[%Y/%m/%d %H:%M:%S] "),$0 } { fflush() } ' >> $log)

pwd
ls -l naiyo
ls -l aruyo

실행 결과

  • 로그(표준 출력/표준 오류 출력)
  • [2021/12/04 09:23:52]  /home/gorira
    [2021/12/04 09:23:52]  ls: cannot access 'naiyo': No such file or directory
    [2021/12/04 09:23:52]  -rw-r--r-- 1 root root 0 12 4 09:13 aruyo
    

    exec 1>


    "exec1 >"으로 표준 출력을 로그로 전송해 보십시오.

    테스트 스크립트


    #!/bin/bash
    log=/usr/local/var/log/gorira/$(date '+%Y%m%d-%H%M%S').log
    
    exec 1> >(awk '{print strftime("[%Y/%m/%d %H:%M:%S] "),$0} {fflush()}' >>$log)
    
    pwd
    ls -l naiyo
    ls -l aruyo
    

    실행 결과

  • 로그(표준 출력)
  • [2021/12/04 09:25:55]  /home/gorira
    [2021/12/04 09:25:55]  -rw-r--r-- 1 root root 0 12 4 09:13 aruyo
    
  • 화면(표준 오류 출력)
  • ls: cannot access 'naiyo': No such file or directory
    

    exec 2>


    "exec2 >"로 표준 오류 출력을 로그로 전송해 보십시오.

    테스트 스크립트


    #!/bin/bash
    log=/usr/local/var/log/gorira/$(date '+%Y%m%d-%H%M%S').log
    
    exec 2> >(awk '{print strftime("[%Y/%m/%d %H:%M:%S] "),$0} {fflush()}' >>$log)
    
    pwd
    ls -l naiyo
    ls -l aruyo
    

    실행 결과

  • 로그(표준 오류 출력)
  • [2021/12/04 09:33:57]  ls: cannot access 'naiyo': No such file or directory
    
  • 화면(표준 출력)
  • /home/gorira
    -rw-r--r-- 1 root root 0 12 4 09:13 aruyo
    

    ... 하는 김에


    로그 출력 내용을 화면에 표시하려면 "tee"명령을 사용합니다.

    테스트 스크립트


    #!/bin/bash
    log=/usr/local/var/log/gorira/$(date '+%Y%m%d-%H%M%S').log
    
    ### tee に食わせる
    exec &> >(awk '{print strftime("[%Y/%m/%d %H:%M:%S] "),$0} {fflush()}' | tee -a $log)
    
    pwd
    ls -l naiyo
    ls -l aruyo
    

    실행 결과

  • 로그
  • [2021/12/04 09:36:05]  /home/gorira
    [2021/12/04 09:36:05]  ls: cannot access 'naiyo': No such file or directory
    [2021/12/04 09:36:05]  -rw-r--r-- 1 root root 0 12 4 09:13 aruyo
    
  • 화면
  • [2021/12/04 09:36:05]  /home/gorira
    [2021/12/04 09:36:05]  ls: cannot access 'naiyo': No such file or directory
    [2021/12/04 09:36:05]  -rw-r--r-- 1 root root 0 12 4 09:13 aruyo
    

    좋은 웹페이지 즐겨찾기