일련의 Expect 스크립트를 실행하고 싶습니다. 실행 체인은 다음과 같습니다. cron 작업은 bash 스크립트를 시작하고 이 래퍼는 약 11개의 bash 스크립트를 시작합니다. Parallel
각각은 하나를 호출합니다 Expect
.
그 Expect
부분까지는 모든 것이 괜찮았습니다. 두 번째 Bash 스크립트의 병렬 섹션은 예상되는 각 스크립트의 호스트 이름을 파일에 표시합니다. 실제로 그룹으로 표시되지만 Expect 스크립트는 즉시 종료됩니다.
크론 작업 특성상 작업에 환경변수를 전달해야 한다고 들었습니다. 내가 지금까지 시도한 것 :
48 9 * * * rm /home/admin/.flag && /home/admin/.profile; /home/admin/nodeTest.sh
nodeTest의 중요한 코드는 다음과 같습니다.
for i in {1..10}; do
for chunk in `ls /home/admin/assets/sagLogs/x*`; do
cat $chunk | parallel -j 11 -I% --max-args 1 /home/abdmin/oneNode.sh "%"
clear
done
done
이 블록의 길이는 11개의 호스트 이름입니다. 병렬 프로그램에 배치되고 Expect 스크립트는 oneNode를 통해 시작됩니다. oneNode는 호스트 이름을 IP로 변환하고 실행할 스크립트를 결정합니다.
이것은 명령줄에서 잘 작동합니다. 나에게 슬픔을 주는 것은 단지 Cron 작업입니다. tcl 명령이 문제를 일으킬 수 있다는 내용을 읽었 interact
지만 내 스크립트에서는 이를 사용하지 않습니다. 병렬로 실행되는 선은 다음과 같습니다.
timeout 80 sudo expect /home/admin/assets/activeTest $sag $ip &
업데이트: 이전 줄을 다음으로 변경합니다.
timeout 80 sudo /usr/bin/expect /home/admin/assets/activeTest $sag $ip &
업데이트: Expect 스크립트에서 오류를 확인한 후 가져온 환경 변수가 누락되었습니다. 첫 번째 오류는 TERM
변수 == 알 수 없기 때문에 발생합니다.
'unknown': I need something more specific.
while executing
"exec /usr/bin/clear"
invoked from within
"puts [exec /usr/bin/clear]"
(file "/home/admin/assets/activeTest" line 35)
호출 스크립트(oneNode)에서 env를 덤프하면 해당 용어가 설정된 것을 볼 수 있습니다.
TEMR=vt100
따라서 래퍼에 설정되지만 예상 스크립트에서는 상속되지 않습니다. 무엇을 해야 할까요?
답변1
이건 틀렸어
48 9 * * * rm /home/admin/.flag && /home/admin/.profile; /home/admin/nodeTest.sh
가장 중요한 것은 당신이.profile을 명령으로 실행-- 한 번에 실행별도의 프로세스프로세스가 종료되면 모든 환경 수정 사항이 손실됩니다.
또한 .flag
존재하지 않으면 어떻게 되나요? 구성 파일을 처리하지 않지만 계속 nodeTest 스크립트를 실행합니다.
.profile을 사용하는 것이 좋습니다 source
. 이를 사용하면 rm -f
파일이 손실되더라도 오류가 발생하지 않습니다. 그리고 .profile에 오류가 없는 경우에만 스크립트를 실행하십시오.
48 9 * * * rm -f /home/admin/.flag; . /home/admin/.profile && /home/admin/nodeTest.sh
# ..................................^
# source the .profile: execute it in the _current_ shell
다음,파싱되지 않음ls
. 변화
for chunk in `ls /home/admin/assets/sagLogs/x*`; do
cat $chunk | ...
도착하다
for chunk in /home/admin/assets/sagLogs/x*; do
cat "$chunk" | ...