콘솔에서 쉘 스크립트를 수동으로 실행하는지 또는 cron이 스크립트를 시작하는지(예: crontab 사용) 감지할 수 있는 방법이 있습니까?
편집: 사용 예: 수동으로 cron이 표시해서는 안 되는 진행률 표시줄을 표시하고 싶습니다.
답변1
애플리케이션에서 터미널(TTY)을 사용할 수 있는지 실제로 감지하려는 것 같습니다. (이렇게 하면 터미널에서 실행할 때 진행률 표시줄을 표시할 수 있지만 에서 실행하는 경우에는 문제가 되지 않습니다 crontab
.)
#!/bin/bash
#
[[ -t 2 ]] && echo "This is a status update for the terminal" >&2
echo "This is a normal line of results"
이 test -t
작업은 번호가 매겨진 파일 설명자가 터미널에 연결되어 있는지 확인합니다. 0 예표준 입력, 1은표준 출력,2는표준 에러.
일반적으로 진행 정보는 다음 위치에 기록됩니다.표준 에러실제 결과를 다음에 쓰십시오.표준 출력. 이렇게 하면 사용자가 진행 상황/상태 출력을 보고 싶지 않은 경우 이를 삭제할 수 있으며 상태 업데이트와 결과를 효과적으로 분리할 수 있습니다.
yourprogram arg1 arg2 ... > results.txt