linuxer-admin

Linux-stdin-stdout-stderr-2


stderr 는 버퍼를 사용하지 않지만 그것과 별개로 그대로 출력하기 때문에 grep 이 되지 않는것입니다.

https://www.facebook.com/groups/korelnxuser/permalink/2060620130779393/

소용환님께서 답변해주셔서 알 수 있었습니다.

그래서 테스트를 진행하였습니다.

stdbuf 명령어를 이용하여 buffer 를 제거하고 grep 해보았습니다. stdbuf -o0 는 stdout 를 unbuffered 로 출력하는 명력어 입니다.

# cat test.txt 
1
2
3
4
5
6
# stdbuf -o0 cat test.txt | grep 2
2

.

그런데 문득 버퍼사이즈가 0인것과 버퍼가 아주없는 unbuffered 는 차이가 있다는것을 알게되었습니다. 그래서 stderr 에 buffer 를 주었습니다.

# cat test.txt 1>&2 | stdbuf -eL grep 2
1
2
3
4
5
6

# stdbuf -eL cat test.txt 1>&2 | grep 2
1
2
3
4
5
6

.

grep 이 되지 않는것을 확인할수 있었습니다.

이 테스트를 결과로 stderr가 grep 되지 않는것은 buffer의 사용유무와 상관없이 그대로 출력하기 때문임을 알게되었습니다.

https://www.pixelbeat.org/programming/stdio_buffering/

이해를 돕기위해 pixelbeat.org 의 이미지를 첨부합니다.

Linux-stdin-stdout-stderr-1


잘못된 정보를 공유하였습니다.
그부분을 수정하고자 게시물을 다시 올립니다.

바로잡은 내용은 아래의 글입니다.

리눅스에서 stderr 으로 받는 문자열은 grep이 되지 않는다.

이유는 stderr는 Unbufferd 로 출력만 하기때문이다.

# httpd -T | grep http
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.0.10.6. Set the 'ServerName' directive globally to suppress this message
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs

.

위의 경우가 그 예이다.

우리가 사용하는 grep, awk 같은 명령어는 buffer를 이용한다. 그런데 stderr는 buffer 를 거치지 않고 출력하기때문에 grep 나 awk를 사용할수 없는 것이다.

이것을 이해하기 위해선 Buffering을 이해해야 한다.

이런 경우 우리는 2>&1 같은 리디렉션을 이용하여 처리를 한다.

2(stderr)>(리디렉션)&(실행한 다음)1(stdout) 이것은 표준에러를 표준출력으로 변경해준다는 의미로 받아들이면 접근이 굉장히 어렵다. 더 풀어써보겠다.

stderr 는 unbuffer 고 이것을 pipe buffer 를 거쳐 stdin 으로 들어가 grep 은 버퍼내의 데이터를 읽어들여서 stdout로 출력하게 되는것이다.

그냥 버퍼까지 올리지 않던 데이터를 리디렉션으로 버퍼에 넣어준다고 생각하자.

# httpd -T 2>&1 | grep http
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 10.0.10.6. Set the 'ServerName' directive globally to suppress this message

.

다음과 같이 grep 가 동작한다.

grep 는 버퍼를 사용하는 명령어다. 버퍼를 사용하지 않는 출력(stderr)은 grep 할수없다.

버퍼를 사용하는 출력(stdout)는 grep 할수있다.

Mysql-Rows-count

information_schema 스키마는 랜덤샘플링으로 인하여 값의 오차가 생길수 있으므로 정확하지 않음

검증방법

ANALYZE TABLE 테이블명;SELECT table_name, table_rows, round(data_length/(1024*1024),2) as 'DATA_SIZE(MB)', round(index_length/(1024*1024),2) as 'INDEX_SIZE(MB)' FROM information_schema.TABLES WHERE table_schema = '데이터베이스명' GROUP BY table_name ORDER BY data_length DESC LIMIT 10;

ANALYZE 를 진행하며 테이블 확인 - information_schema.TABLES 이 계속 변경되는것이 확인됨

따라서 row count 로 만 검증가능

SELECT     COUNT(*)FROM    테이블명;

대표적으로 자주사용하는 테이블을 카운트하여 비교하는것이 제일 정확

11 x AWS Certification

저는 System Engineer 였습니다.

레거시중의 레거시에 위치한 hosting 을 제공하는 회사에 있었습니다.

하드웨어 서버에 익숙하고, 서버의 자원을 조금이라도 잘쓰기 위해서 여러 방안을 강구하고 매일 테스트했습니다.

자동화 설치를위해서 Clonezilia로 PXE 자동화 설치를 만들고, Hyper-V기반의 DB호스팅을 만들며, 이런저런 오픈소스를 테스트하고, L4, WAF, IPS등 여러 장비들을 다룰줄알고 셋팅도 하였지만, 남들보다 조금 손이 빠른 그저 그런 잡부중 하나일 뿐이었습니다.

그러던 중에 AWS를 만나며, 새로운 세상을 만났습니다. 그동안 힘들었던 서버 설치는 버튼클릭 몇번이면 되고, 비싸서 사용할수 없었던 솔루션, 고객에게 추천하기 어려웠던 구성들까지 그 야말로 세상의 관념이 변하는 느낌을 받았습니다.

그게 2017년이었습니다.

2017년 11월 부터 자격증을 취득하였습니다.

제 시험기록입니다. 10월 21, 2017 - 1월 03, 2022 까지입니다.

59217 번대의 등록번호에서 2163089번대의 등록번호입니다.
200만명을 시험보는동안 11개의 자격증을 취득한것입니다.

시험은 중간에 3번정도 변경되었습니다. Big data / alexa / data analytics 등으로 생기고 없어졌습니다. 지금 Beta에 있는 ERP SAP도 있지만 이건 무시하겠습니다.

시험을 보고 공부하고, 시간이 지나며, 2017년부터 저는 많이 변했습니다.

호스팅업체의 SE에서 지금은 CSP의 SA로 일하고 있습니다.
SE로서 길렀던 능력은 다양한 시스템을 겪고 트러블을 해결하면서 어떤시스템도 어렵지 않게 파악할수 있는 능력이 생겼고, 이 능력을 기반으로 다양한 서비스와 솔루션을 연계하고 옳은 방향으로 비즈니스를 이끌수 있는 방법을 배웠습니다. 그 덕분에 SA로 일할수 있게 되었습니다.

직무를 수행하면서 뿐만아니라 자격증을 공부하고 테스트하면서 간접적으로 느끼고 배운것들까지 저에게 녹아들면서 아키텍팅에대해서 자신감이 붙었습니다.

그러면서 저또한 공부하는 버릇이 붙었고, 그게 저 자신을 만들어갔습니다.

8년차까지 자격증에 대해서 전혀 관심도 없던 저였는데, 어느순간 18개가 넘는 자격증을 취득하게 되었습니다.

자격증은 전문가라는 뜻이 아닙니다. 관심이 있고, 공부를했다는 증명인것입니다. 이것을 업무에 녹이는것은 또 개인의 능력이나, 클라우드 프로바이더의 자격증은 일종의 롤플레잉을 부여하는 방식으로 질문을 던지기 때문에 유사경험이 가능하고, 이것은 나중에 업무를 처리할때 기준을 제시할수 있습니다.

이제 AWS의 11개의 자격증을 모두 취득함으로 소기의 목적을 달성했습니다.

정말 기분이 좋아서 치킨시켜먹었습니다.

정말 쓰고싶은 말이 많았는데, 막상 키보드위에 손을 올리니 정리가 안되네요.

언제든 도움이 필요하신분은 아래 오픈채팅으로 들어오세요.

https://open.kakao.com/o/gMCqYXxb

읽어 주셔서 감사합니다.

AWS Certified Data Analytics - Specialty - DAS-C01 - Review

Data Analytics 까지 시험을 봤습니다.

이 사태의 원인은 세웅님이었습니다.
치명적인 속도로 AWS 자격증을 클리어하는 것이 제가 나태한것 같이 느껴졌습니다.

그래서 MLS를 끝내고 DAS를 바로 시작했습니다.

DAS는 DBS-DAS-MLS 순으로 보면 좋은시험 같았습니다.

DAS는 주로 ETL 과 Analytics에 관련한 문제가 나옵니다.

https://jayendrapatil.com/aws-certified-data-analytics-specialty-das-c01-exam-learning-path/

제 블로그를 봐온 분들이라면 다들 아시겠지만 저는 jayendra 님의 블로그로 먼저 시험을 준비합니다. 도메인 분리도 잘되어있고, 요약정리가 정말 깔끔하기 때문입니다.

요약정리를 다 읽고 AWS에서 주로 사용할 서비스에 대한 이해가 필요합니다.

kinesis stream와 firehose 의 차이를 알면 정말 편해집니다.

firehose는 거의 실시간으로 동작하는 실은 1분마다 동작하는 batch 에 가깝습니다.

또 너무 비싸서 사용해볼수 없는 redshift는 경험을 쌓기 너무 어려우므로 docs가 닳도록 읽었습니다.

그외엔 사실 AWS에 익숙하다면 반쯤은 상식으로 먹고 들어가는 내용들이 많기때문에
-SAP를 취득하지 않았다면 먼저 취득하고 오십시오...(?) -
-DBS를 취득하지 않았다면 먼저 취득하고 오십시오...(?) -
아직 SAP가 없는 상태라면 SAP취득을 추천합니다.

실제로 시험은 모르는 내용이 아주 많았습니다.

하지만 풀수는 있었습니다. 샤딩이 뭔지 파티셔닝이 뭔지 ETL이 뭔지 등등 기본적인 개념들을 알고있다면 질문하는 의도와 정답을 알수있기 때문입니다.

예를 들어 stram 과 firehose 를 비교하게 되는 문제에서 실시간인지 거의 실시간인지만 파악할수 있다면 선택지를 하나를 줄일수 있게 되는것입니다. - 이것이 시험공학-

이번에 연습시험을 보려고 하니, 결제가 되지않았습니다. 바우처는 발급이 되었는데..

이젠 바우처를 사용하지 않아도 연습시험을 볼수있습니다.

AWS 에서 제공하는 무료 연습시험 모음집
11가지 시험의 연습문제를 제공해줍니다.

이렇게요!

DAS 연습문제를 각잡고 풀어본결과 70%가 나왔습니다.

시험은 미루지않는 것이 지론이고 떨어지면 칼을갈아서 다시 보면 되는거지만 벼랑끝에 매달린 심정으로 안되는 공부를 억지로 이어갔습니다.

그리고 오늘 오전일찍 시험을 봤습니다.

두구두구두구구두구 827점으로 통과.

그런데 이게 조금 아쉽긴 합니다. 만반의 준비를해서 시험이 수월하지않고, 요령으로 푼문제가 많아서 조금 아쉬웠습니다. 그렇지만 꼭 해내고 싶었고 자격증을 취득하였습니다.

2017년11월 부터 시작해서 2022년 1월까지의 장점이 마무리되었습니다.

제글을 읽어주셔서 감사합니다.