다른 스크립트 내에서 스크립트를 실행하고 로그 파일에 리디렉션을 포함할 수 있습니까?
더 큰 스크립트에서 3개의 스크립트를 실행하려고 합니다. 그 중 하나를 "지금" 실행해야 합니다. 다음은 수동으로 수행해야 하는 작업의 예입니다.
sample_script1.sh
at now
sample_script2.sh > sample_script2.log
2>&1
(CTRL + D)
tail -f sample_script2.log
sample_script3.sh
나는 이것을 시도했습니다 (그리고 다른 구문, 특히 인용된 구문을 사용하여 몇 가지 다른 반복):
sample_script_location="$HOME/sample_script.sh"
sample_script_log_location="$HOME/sample_script.log"
echo ""$sample_script_location" > "$sample_script_log_location" 2>&1" | at now
설계된 대로 실행하면 수동 프로세스는 로그 파일 하단에 "SQL> SP2-0042: 알 수 없는 명령 "2>&1""을 기록합니다. 에코를 "지금"으로 파이프하는 스크립트를 사용하여 이 작업을 수행하면 이 메시지가 나타나지 않습니다.
답변1
{ echo a; echo b 1>&2; echo c 1>&2; } 2>&1
a
b
c
일부 명령을 {} 중괄호로 묶을 수 있습니다. 바라보다 help {
.
at now
소위 먹이를 줄 수 있습니다here-document
sample_script1.sh
at now 2>&1 <<EOF
sample_script2.sh > sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh
script2의 stderr을 로그에 기록하려면 다음을 수행해야 합니다 2>&1
.>sample_script2.log
sample_script1.sh
at now <<EOF
sample_script2.sh 2>&1 >sample_script2.log
EOF
tail -f sample_script2.log &
sample_script3.sh
이 tail -f
명령은 취소할 때까지 실행되므로 백그라운드에 두거나 마지막 명령으로 실행해야 합니다. 바라보다 help bg
.