유닉스/리눅스에서 how to capture interactive screen in crontab 아시는 분?

  • #3504168
    Unix 75.***.43.207 685

    며칠 동안 구글링을 통해서, topas 과 같은 interactive screen 은 redirect to a file 이 crontab 에서 허용되지 않는다는 것을 알게 되었습니다. 그중 하나의 링크가

    https://unix.stackexchange.com/questions/325346/how-to-execute-the-command-in-cronjob-to-display-the-output-in-terminal

    이게 진짜 사실인가요? 사실이라면 가능하게 할 workaround 는 없는건가요?

    제가 시도한 workaround 는 클라이트에서 주기적으로 명령어를 리모트로 시도하는 것이고, 그것도 안되네요.

    plink -l userid -pw password userid@1.1.1.1 “#!/bin/bash; xxx”

    putty 커맨드 라인으로 실행해도,

    echo 2\ q\ | xxx > xxx.txt

    xxx 는 회사 모니터링 유틸이고, 2 는 인터벌, q 는 유틸 종료 명령어입니다.
    위의 명령어는 커맨드 라인에서 전혀 문제없이 실행되고, xxx.txt 에 화면 데이터가 텍스트로 잘 저장됩니다.
    실시간으로 로그를 기록하려는게 아니라, 요청된 그 순간의 화면 데이터만 저장하려고, q 를 바로 실행시켰습니다.

    크론탭에서 실행 안되고, plink, putty 로도 저정이 안되고 있습니다.

    이 게시판에 임베디드 개발자, 유닉스 엔지니어도 많으신것 같아서, 도움 요청드립니다.

    감사합니다.

    • d 73.***.176.185

      무슨 말씀이신지 이해가 되지 않네요. crontab 아웃풋을 파일에 redirect하고 싶으시단 말인지요? 그건 당연히 가능하죠. 링크거신 글은 crontab 아웃풋을 interactive shell로 redirect 할 수 있냐 물어보는 건데요.

      • Unix 75.***.43.207

        */5 * * * * /usr/exe/xxx.sh > xxx.txt

        당연히 실행되죠.

        하지만, xxx.sh 에 코드가

        echo 2\ q\ | topas > xxx.txt

        라면, xxx.txt 로 데이터가 들어가지 않습니다.

        topas 는 interactive screen 이기 때문에 그렇다고 합니다.
        topas 와 같이 장비 모니터링을 하는 유틸리티의 화면을 텍스트로 한번만 덤프할려고
        위와 같이 명령어를 작성했고, 커맨드 라인에서는 문제 없이 덤프가 됩니다.

        하지만, 이 명령어 또는 이 명령어를 담고 있는 스크립트가 crontab 에서
        실행될 경우, xxx.txt 에 아무것도 덤프 되지 않습니다.

        echo 2\ q\ | topas > topas.txt

        를 실행하면 topas.txt 에 화면 데이터가 들어옵니다.
        하지만, 이걸 crontab 에서 실행하면 아무것도 들어오지 않습니다.

        감사합니다.

        • d 73.***.176.185

          네 당연히 interactive mode로 하면 안돼고 batch mode로 해야 합니다.
          top -b -n1 쓰시길.

          • Unix 75.***.43.207

            d 님 답글 감사합니다.

            top(as) 는 -n 옵션이 제공되는 것을 구글링 통해서 알게 되었습니다.
            문제는 top(as) 자체가 아니라 그것과 동일한 interactive mode 로 작동하는 사내 장비의 모니터링 유틸리티이고,
            이 유틸리티는 -b, -n 과 같이 batch mode 를 지원하지 않습니다.

            만든 개발자한테 요청하고 싶지만, 현실적으로 불가능해서 며칠째 구글링 하고 있습니다.

            이게 crontab 에서 안되면, plink 나 putty 로 가능할 줄 알았는데, 이것도 안되니까, 질문을 올려봤습니다.

            혹시, workaround 를 알고 계시는 분이 계실까 해서요.