Accumulo 테이블 스캔 시간이 초과되었는지 확인하려고 합니다(테이블이 손상되었는지 확인하기 위해).
#!/bin/bash
timeout -s KILL 20s accumulo shell -zi myInstance -u root -p secret -e "scan -np -t myTable"
if [ $? -eq 0 ]; then
echo 'Scan successful'
else
echo 'Scan timed out'
fi
accumulo shell
스크립트는 명령 을 실행하지 않고 20초 동안 실행되었으며 종료 상태 0을 잘못 반환했습니다 .
터미널에서 위의 시간 제한 명령을 실행하면 명령이 예상대로 작동합니다. timeout -s KILL 20s sleep 10
스크립트나 터미널에서 기본 시간 제한 명령(예:)을 실행하는 경우에도 작동합니다. 따라서 어떤 이유로 accumulo shell
bash 스크립트에서 시간 초과와 명령의 조합이 작동하지 않습니다.
- 누적 버전: 1.6.0-cdh4.6.0
- 운영 체제 버전: CentOS 6.6
답변1
다른 쉘에서 명령을 실행하면 문제가 발생한다는 것을 발견했습니다. source
예를 들어 명령을 사용하여 스크립트를 실행하면 source myScript.sh
스크립트가 예상대로 실행됩니다.
그런데 추적이 안 됐어요.왜timeout
실행과 다른 쉘의 조합은 accummulo shell
작동하지 않습니다.