CF CLI를 사용하여 Cloud Foundry에 대한 배포 스크립트를 작성하고 있으며 분석을 위해 시작되는 새 애플리케이션과 관련된 로그를 캡처하고 싶습니다. 이를 위해서는 일반적 cf push [appname] -f [manifest.yml]
으로 두 가지 다른 명령이 필요합니다 cf logs [appname] > [appname].log
. 문제는 푸시 명령이 절반까지 실행될 때까지 앱이 아직 존재하지 않으며, cf logs
성공적으로 실행하려면 기존 앱이 필요하다는 것입니다.
나는 내 스크립트가 출력 스트림을 읽어 서비스가 생성되었음을 나타내는 줄을 찾은 다음 cf push
두 번째 스레드에서 명령을 실행하여 해당 로그를 캡처할 것이라고 생각했습니다. 저는 두 번째 프로세스의 출력을 검사 하고 두 번째 프로세스를 트리거할 cf logs
수 있는 메커니즘을 찾고 있습니다 .cf push
두 가지 질문
- 가능합니까?
- 합리적인 접근 방식에 대한 문서를 찾을 수 있도록 이와 같은 것을 무엇이라고 불러야 합니까?
답변1
서비스를 시작한 후에만 시퀀스가 완료된다는 점을 고려하면 cf push
(또는 내 생각에 시도가 실패한 경우) 파이프라인을 함께 연결할 수 있습니다(영어). "cf push를 시작하고 "성공" 메시지를 찾으세요. 메시지가 보이면 다음을 실행하세요. cf 로그".
쉘 구문에서는 다음과 같습니다(예제 명령 사용).
cf push [appname] -f [manifest.yml] | grep -q "service has been created" && \
cf logs [appname] > [appname].log
이는 쉘의 파이프를 사용하여 cf push
출력을 명령에 grep
연결합니다 . grep 명령(-q는 조용함을 의미)은 성공적인 메시지를 검색합니다(사용한 문자열을 cf push
실제 생성된 문자열로 대체). grep이 메시지를 찾으면 성공 코드와 함께 종료됩니다. 이를 통해 운영자는 명령을 &&
실행할 수 있습니다. cf logs
grep이 실패하면 &&
운영자는 다음을 수행합니다.아니요cf logs
명령을 실행하십시오 . 코드를 멋지게 감싸기 위해 백슬래시를 사용하고 있습니다. 명령은 모두 한 줄에 있을 수 \
있습니다 .&&
더 많은 내용을 보려면 다음을 참조하세요.쉘의 제어 및 리디렉션 연산자는 무엇입니까?