<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yeah_silver.log</title>
        <link>https://velog.io/</link>
        <description>이것저것의 로그</description>
        <lastBuildDate>Wed, 20 Nov 2024 06:58:59 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>yeah_silver.log</title>
            <url>https://velog.velcdn.com/images/yeah_silver/profile/2455d297-aa83-40d1-b0b1-94dba854b75f/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. yeah_silver.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yeah_silver" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[IinWe x AWS 멘토링 후기 ]]></title>
            <link>https://velog.io/@yeah_silver/IinWe-x-AWS-%EB%A9%98%ED%86%A0%EB%A7%81-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@yeah_silver/IinWe-x-AWS-%EB%A9%98%ED%86%A0%EB%A7%81-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Wed, 20 Nov 2024 06:58:59 GMT</pubDate>
            <description><![CDATA[<p>[IinWe x AWS 멘토링] 5주에 걸친 프로그램에 참여했다.
(멘토링 상세 페이지)👉🏻 <a href="https://event-us.kr/iinwe/event/88180">https://event-us.kr/iinwe/event/88180</a></p>
<p>5주간의 과정 동안 최고의 멘토링을 제공해주신 <strong>김종일 멘토님</strong>께 감사드립니다🙇 또, 리드멘티로 임하게 됐는데, 만날 때마다 칭찬을 아끼지 않았던 멘티분들 너무 감사해요! </p>
<ul>
<li>임팩트 매핑</li>
<li>회사의 특징을 통해 나에게 맞는 회사에 대해 알아보기 </li>
<li>레쥬메 세션 </li>
<li>기술 세션 </li>
</ul>
<p>멘티분들의 프로그램 참여 동기들을 취합하여 위의 4개의 세션을 기획하고 이를 토대로 멘토님께서 진행해주셨다. </p>
<p>결과적으로 이 멘토링을 통해서 다음과 같은 부분을 얻었다. 
⭐기술공부 등 개인역량 향상을 위한 효율적인 공부 방법
⭐전반적인 Resume와 경험을 <strong>가독성</strong> 좋게 작성하는 방법
⭐다양한 종류의 회사들의 특성과 직무들에 대한 정보
⭐IT업계에서 커리어를 쌓기 위한 방향 잡기</p>
<h2 id="imapct-mapping--일의-순서와-방향을-잡는-방법">Imapct mapping : 일의 순서와 방향을 잡는 방법</h2>
<p>첫 번째 세션 전에 멘토님께서 방향성을 잡는 방법론을 추천해 주셨다. </p>
<ul>
<li>goal : 나의 <strong><em>페인 포인트</em></strong>는 무엇인가?에 초점, 구체적이고 실현 가능한 목표</li>
<li>actor: 실행자 </li>
<li>impact: behavior, 구체적인 실행 활동(deliverable)으로 가능해진 점 </li>
<li>deliverable: 구체적인 실행 방안, 수단 </li>
</ul>
<pre><code class="language-text">예시 
goal: 3주 안에 resume작성하여 5군데 지원 
actor : 구직자
impact: 이전엔 STAR형으로 경험을 어필할 줄 몰랐는데, 이젠 STAR형식으로 경험을 작성할 수 있게 됨
deliverable: 채용담당자를 만나본다. 이력서 피드백을 받아본다. </code></pre>
<p>임팩트 매핑을 작성할 때 중요하게 생각해야 할 점 -&gt; outcome⬆️ output⬇️
목표에 도달하기 위해 이것저것 하기보단 집중적으로 해야할 일만 하는 것이 효과적이다. </p>
<blockquote>
<p>TIP: 🔥<em>어떻게 하면 아웃풋을 줄일 수 있을까?</em> 를 중점적으로 생각하기 </p>
</blockquote>
<p>자세한 방법은 여길 참고 하시길 👉🏻 <a href="https://www.perplexity.ai/page/kaelrogeu-jaedan-nonrimodel-cv76.mzVQTqTftF8bC_mfQ">https://www.perplexity.ai/page/kaelrogeu-jaedan-nonrimodel-cv76.mzVQTqTftF8bC_mfQ</a></p>
<h3 id="방법론을-도입하니-실제-적용-사례">방법론을 도입하니 (실제 적용 사례)</h3>
<p>before 이렇게 주저리주저리 나열했던 목적과 동기가 ... 
<img src="https://velog.velcdn.com/images/yeah_silver/post/bed406ef-b21a-461c-bf97-edab0cee3b31/image.png" alt=""></p>
<p>after 이렇게 깔끔하게 정리됐다.
<img src="https://velog.velcdn.com/images/yeah_silver/post/9bff9639-a051-4106-ae6f-9479fd8b3b07/image.png" alt=""></p>
<p>물론 goal이 현실적이지 못할 수 있지만 before에 비하면 나름 잘 정리되었다고 볼 수 있다. </p>
<p>임팩트 매핑을 팀 단위로 진행했는데, 팀 단위의 목표를 구체화할 때 매우 효과적인 방법론임을 알 수 있었다.
이 과정을 거치지 않았다면, 세션을 기획하는 데 애를 먹었을 것이다. 멘티 4명의 경험과 상황이 다르고 목적도 각기 다양했기에... !</p>
<p>정리된 결과 3개의 기획을 하여 알찬 5주를 보냈다.
0. 임팩트 매핑에 대한 세션 -&gt; 취합하여 아래 3개의 멘토링 세션을 기획</p>
<ol>
<li>다양한 회사에 관한 세션 -&gt; 나에게 맞는 회사 기준을 확립해볼 수 있는 시간 </li>
<li>레쥬메 세션 </li>
<li>기술 세션 </li>
</ol>
<hr>
<h2 id="나에게-맞는-회사란">나에게 맞는 회사란?</h2>
<p>대기업이 좋을까? 외국계가 좋을까? SI/SM은??</p>
<p>SI업체에서 첫 사회생활을 시작하면서, 어떤 회사가 나에게 맞는 것일까? 하는 생각을 하게 됐다. </p>
<ul>
<li><p>중소기업 SI업체:
SI업체가 좋은 점이 있다면, 프로젝트 특성에 맞춰 다양한 기술 스택을 적용해 볼 수 있다는 것이다. 지루할 틈이 없달까? 장점이 있다면 단점도 있는법...! 프로젝트성이다 보니, 클라이언트 사이트에 몇 개월씩 출퇴근을 해야 한다. 고로 출퇴근 시간을 보장받진 못한다. 
실제로 인턴을 진행했던 회사에선 갑작스레 사이트에 들어가게 됐고, 왕복 시간이 4시간 걸리는 팀원도 있었다. </p>
</li>
<li><p>외국계:
멘토님도 그렇고 AWS에 다니시는 여러 전문가들을 보며 느낀 점은, <strong>열정</strong>적이시다. <strong>Learn and be curious</strong>, AWS의 backborn이라 할 수 있는 16가지의 리더십 원칙 중 하나다.  <strong><em>이 원칙이 현업 활동에서 어떻게 적용되는지</em></strong>, 외국계 회사 중에서도 AWS가 원하는 사람은 어떤 식으로 일을 하는 사람인 지 알 수 있었다. 또, 문서를 작성하는 시간이 굉장히 많다. 나의 task를 유관부서와 나눌 때 문서를 기준으로 한다. 
확실히 적극적이고 궁금해하고 끊임없이 도전하는 사람! 당신이 그렇다면 외국계는 열려 있을 것이다. </p>
</li>
</ul>
<ul>
<li>대기업:
외국계보다 안정적이다. 대기업 또한 문서를 작성하는 경우가 많다. 문서 기반으로 진행된다. 워라벨 관리가 비교적 쉽다. A-Z까지 경험할 수 있는 환경은 비교적 없다. 세분화되어있어 한 분야의 스페셜리스트가 되고 싶다면 잘 맞을 것이다. </li>
</ul>
<h2 id="기술-세션">기술 세션</h2>
<p>IT업계에서 살아남기 위해선 끊임없는 학습의 연속이 필수라고 했다. 
그렇지만, IT업계가 트렌드에 민감하니 공부해야 할 것들도 산더미들이다. 어떻게 효과적으로 학습할 수 있을까?</p>
<blockquote>
<p>나의 pain point는 무엇일까? 
왜? 이게 왜 나의 pain point일까? 이걸 극복하면 무엇이 개선되는가?</p>
</blockquote>
<p>페인 포인트를 찾는 것은 펜을 드는 행위와 같다. 스케줄을 작성해내려가기 위해 펜을 드는 그 시작점인 것이다. </p>
<p>멘토님께서는 페인 포인트를 찾는 수많은 방법 중, <code>아쉬운 점에 대한 피드백</code> 을 꼭! 요청한다고 하셨다. 나도 몰랐던 페인 포인트를 여기서 찾을 수도 있다고 하셨는데, 값진 팁이었다. </p>
<p>자, 이제 나의 페인 포인트를 찾았다면, 그 기술을 어떻게 공부해야할 지가 관건이다. 여기서도 5 WHY?를 적용시키면 좋다.</p>
<p><img src="https://velog.velcdn.com/images/yeah_silver/post/08fc5d8d-09ca-4954-8d77-05eb99c5c92d/image.png" alt="주간조선 https://weekly.chosun.com/news/articleView.html?idxno=36409"></p>
<p>이에 대해서는 나중에 좀 더 자세히 다뤄보겠다. </p>
<hr>
<p>레쥬메 세션 때에는 삼성sds, AWS 등 국내외 기업에서 종사하신 유능하신 채용 전문가님을 초빙하여 레쥬메 리뷰를 하는 시간을 가졌다. 
신입의 레쥬메에서 어떤 점을 중시 보는지, summary에서는 어떤 식으로 작성하는 것이 좋을지, 경험을 작성하는 법 등 전반적인 레쥬메 스킬을 업 시킬 수 있는 법을 알 수 있게 됐다. 
또, 개인 이력서를 피드백 받아서 업데이트 해야할 점을 명확히 인지할 수 있었다.</p>
<p>또, 직무와 배경을 고려하여 DevOps 현업자와 만남을 이어주셨다! SA를 거쳐 데브옵스 엔지니어로 계신 전문가분이셨는데, 배울 점도 많았고 궁금증도 해결되었다. 멘토님 감사합니다🙇🏻...!!</p>
<hr>
<p>마지막으로 멘토님께서 추천해 주신 책을 공유하며 마치겠다. 
이 책은 정말 구체적으로 소프트웨어의 엔지니어 분야를 정의하는 것부터 어떻게 기술적 역량을 쌓아 올려야 할지까지 총체적인 가이드를 제시하고 있다. 방향을 잃은 사람들, 처음 발을 디딘 사람들, 모두 추천한다! 
<a href="https://product.kyobobook.co.kr/detail/S000214576874">https://product.kyobobook.co.kr/detail/S000214576874</a></p>
<p><img src="https://velog.velcdn.com/images/yeah_silver/post/76821423-63b2-4030-a13c-4118b08b8f69/image.png" alt=""></p>
<hr>
<p>이미지 출처</p>
<ul>
<li><a href="https://chosun.com/news/articleView.html?idxno=36409">https://chosun.com/news/articleView.html?idxno=36409</a></li>
<li><a href="https://event-us.kr/iinwe/event/88180">https://event-us.kr/iinwe/event/88180</a></li>
<li><a href="https://product.kyobobook.co.kr/detail/S000214576874">https://product.kyobobook.co.kr/detail/S000214576874</a></li>
</ul>
<p>#아이인위 #아이인위멘토링후기 
<a href="https://www.linkedin.com/company/i-in-we-tech-beyond-boundaries/posts/?feedView=all">https://www.linkedin.com/company/i-in-we-tech-beyond-boundaries/posts/?feedView=all</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[빠르게 훑어보는 네트워크]]></title>
            <link>https://velog.io/@yeah_silver/%EB%B9%A0%EB%A5%B4%EA%B2%8C-%ED%9B%91%EC%96%B4%EB%B3%B4%EB%8A%94-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC</link>
            <guid>https://velog.io/@yeah_silver/%EB%B9%A0%EB%A5%B4%EA%B2%8C-%ED%9B%91%EC%96%B4%EB%B3%B4%EB%8A%94-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC</guid>
            <pubDate>Sun, 28 Jan 2024 22:50:55 GMT</pubDate>
            <description><![CDATA[<h1 id="네트워크란">네트워크란?</h1>
<p><strong>두 대 이상</strong>의 컴퓨터가 서로 <strong>연결하여</strong> 컴퓨터 자원 <strong>공유하는</strong> 것</p>
<h3 id="통신방식-aka-네트워크-형태">통신방식 aka 네트워크 형태</h3>
<p>네트워크는 <span style="background-color:#fff5b1">몇 명한테 전달하느냐</span>에 즉 <span style="background-color:#fff5b1">대상에</span> 따라 종류가 나뉜다</p>
<ul>
<li><strong>유니캐스트</strong> : 받는 사람이 명확히 정해져 있음</li>
<li><strong>브로드캐스트</strong>: 네트워크 범위의 모두를 대상</li>
<li><strong>멀티캐스트</strong>: 다른 그룹의 불특정 다수를 대상</li>
</ul>
<p>같은 망 안에서 통신을 할 때, 처음엔 브로드캐스트로 다 찔러본다면 어떻게 될까?
&quot;이 데이터 네 것이냐?!&quot; 이렇게 다 물어보고 다닌다면 
-&gt; 트래픽이 증가하고 인터럽트가 발생하니까 cpu성능도 저하할 것이다
그러니까 <strong>브로드캐스트는 넓은 구역에서 통신할 때 트래픽이 올라갈 수 있다</strong> </p>
<h3 id="서브넷-vs-슈퍼넷">서브넷 vs 슈퍼넷</h3>
<h2 id="네트워크-구성요소">네트워크 구성요소</h2>
<h3 id="osi-7-layer란">OSI 7 Layer란?</h3>
<p>open System interconnection </p>
<blockquote>
<p>개방형 시스템 상호 연결(OSI) 모델은 표준 프로토콜을 사용하여 다양한 통신 시스템이 통신할 수 있도록 국제표준화기구에서 만든 개념 모델입니다 -cloudflare</p>
</blockquote>
<p>OSI 모델을 말할 때 <span style="color:red"> 참조 모델 </span> 이라는 단어로 설명한다
🤔왜 model일까? 
참조 라는 의미 그대로 단순히 참고를 했다는 것일 뿐. OSI 7 Layer가 <strong>실제로 완벽하게 똑같이 적용된 기술은 없다는 것</strong>이다. 이 모델을 응용해서 사용하고 있는 것이다 </p>
<h3 id="osi-7-layer의-등장-배경">OSI 7 Layer의 등장 배경</h3>
<p>예전에는 제조사마다 장비를 만들었는데 프로토콜 또한 각기 달라서 다른 제조사 디바이스와의 통신이 어려웠다 (Apple은 AppleTalk이라는 프로토콜을, IBM은 SNA라는 프로토콜은 ... )</p>
<pre><code class="language-text">여기서 잠깐!
🤔프로토콜 protocol이란? 
통신규약으로 하나의 언어라고 생각하면 쉽다. 서로 언어가 다르니 대화가 통하지 않았겠지?! 
데이터를 주고받는 체계가 다르니 통신이 불가했던 것!</code></pre>
<p>이를 이기종 장기간 통신이 불가했다고 하는데, 이기종 장비간에도 호환이 가능하도록 네트워크 모델을 표준화 해달라는 요구가 빗발쳐서 (= 서로 다른 프로토콜끼리도 통신 가능하게 해줘!) 국제 표준화기구에서 통신이 일어나는 과정을 7단계로 세분화하여 OSI 7 Layer를 만든 것이다</p>
<h3 id="osi-7-layer의-등장의-장점">OSI 7 Layer의 등장의 장점</h3>
<ul>
<li>데이터 흐름이 파악에 용이</li>
<li>트러블 슈팅 관리 편리</li>
<li>이기종 장비간 통신 이상 무</li>
</ul>
<p>🤔왜 트러블 슈팅 관리가 편해졌을까? 
통신 흐름을 7단계로 세분화 했다는 것에 답이 있다. 문제가 생겼을 때 1부터 100까지 살피는 게 아니라, 특정 구간에서 문제가 있다는 것이 나오니까 트러블 슈팅 관리하기가 편해진 것이다</p>
<h2 id="계층에-대해-알아보자">계층에 대해 알아보자</h2>
<p>들어가기 전에, 몇 가지 알아야 할 점이 있다</p>
<p>1) 1계층-4계층 : 인프라, 네트워크 엔지니어의 포커싱
   5계층-7계층 : 소프트웨어, 프로그래머의 포커싱
2) 데이터가 어느 계층에 속해져 있는 가에 따라 불리는 이름이 달라짐
3) 전체적인 흐름은 
    A기기 7-6-5-4-3-2-1 (네트워크 ) 1-2-3-4-5-6-7 B기기</p>
<h3 id="1계층-물리계층">1계층 (물리계층)</h3>
<ul>
<li>디바이스: 케이블, 리피터, 허브 (주로 케이블)</li>
<li>데이터 통신 단위: bit 0,1 전송</li>
<li>only 받은 데이터 전달만! 분석은 일어나지 않음</li>
<li>케이블에 관하여:
  10 base T라는 케이블은 10 Mbps(=10메가 bps, bit per second)
  10 base 5라는 케이블은 10M속도로 최대 500미터까지 전송
  디지털 방식의 케이브로가 아날로그 방식의 케이블이 있음</li>
</ul>
<h3 id="2계층-데이터링크-계층">2계층 (데이터링크 계층)</h3>
<ul>
<li>디바이스: 스위치</li>
<li>데이터 통신 단위: frame</li>
<li>프레임 캡슐화(=보내는 이,받는 이를 명확히 하기 위해 메타 데이터에 헤더를 붙이는 것)</li>
<li>가장 최적의 경로(best path)를 찾기 위해 맥 테이블 생성 &amp; 이용<pre><code class="language-text">여기서 잠깐!
🤔Mac table이란? 
Physical address가 들어있는 테이블 (더 자세한 설명은 밑에)</code></pre>
</li>
<li>스위치가 하는 역할: mac table을 만듦</li>
<li>2개의 계층<ul>
<li>LLC Logical Link Control (두 장비간의 링크를 설정하고 프레임 송수신하는 방식과 상위 레이어 프로토콜의 종류를 알리는 역할)</li>
<li>MAC (3계층으로 보내기)</li>
</ul>
</li>
</ul>
<h3 id="mac-table과-ip">Mac table과 IP</h3>
<p>전송을 하기 위해서 IP주소와 Mac주소(Media Access Address) 둘 다 필요하다</p>
<p>Mac주소는 LAN카드에 고유식별코드가 찍혀서 나오는데 이러한 물리적인 주소 physical address를 의미하고,
IP주소는 논리적 주소 logical address를 의미한다</p>
<p>논리적이라는 말이 뭘까? 변경 가능하다는 뜻이다
집에서 네이버에 로그인했다가 스타벅스에 가면 IP 변경으로 재로그인해달라는 알람을 본 적이 있을 것이다 IP는 망에 속했을때 부여되기 때문에 장소에 따라 변경된다</p>
<p>IP주소는 변경되기 때문에 Mac주소 같이 유일무의한 주소로 확인을 해야 한다</p>
<table>
<thead>
<tr>
<th>MAC</th>
<th>IP</th>
</tr>
</thead>
<tbody><tr>
<td>local identification</td>
<td>global identification</td>
</tr>
<tr>
<td>layer 2 operation</td>
<td>Layer 3</td>
</tr>
<tr>
<td>physical address</td>
<td>logical address</td>
</tr>
<tr>
<td>48 bits</td>
<td>32bits</td>
</tr>
</tbody></table>
]]></description>
        </item>
        <item>
            <title><![CDATA[리눅스 Process, Shell(kernel), Archive, 압축 ]]></title>
            <link>https://velog.io/@yeah_silver/%EB%A6%AC%EB%88%85%EC%8A%A4-Process-Shellkernel-Archive-%EC%95%95%EC%B6%95</link>
            <guid>https://velog.io/@yeah_silver/%EB%A6%AC%EB%88%85%EC%8A%A4-Process-Shellkernel-Archive-%EC%95%95%EC%B6%95</guid>
            <pubDate>Sun, 28 Jan 2024 22:50:31 GMT</pubDate>
            <description><![CDATA[<h1 id="프로세스">프로세스</h1>
<p>프로세스와 프로그램의 차이점</p>
<p><em><strong>프로그램이란?</strong></em>
: 컴퓨터가 실생할 수 있는 명령 집합
코드 소스의 집합이며 <span style='background-color: #fff5b1'>디스크</span>에 저장되는 <span style='background-color: #fff5b1'>정적인 개체 </span></p>
<p>우리가 평소에 말하는 &#39;프로그램을 실행&#39;하려면 소스코드만 출력되어서는 안 된다. <code>디스크</code> 에 저장된 코드를 <code>메모리 or cpu</code> 로 보내서 작동을 시켜야 한다</p>
<p><em><strong>프로세스란?</strong></em>
: <span style='background-color: #fff5b1'>메모리</span>에 존재하는 프로그램의 형태, 프로그램의 실행을 의미하는 <span style='background-color: #fff5b1'>동적인 개체 </span></p>
<p>개발자에 의해 짜여진 프로그래밍 언어들이 기계어로 변환되어 메모리에서 드디어 실행이 되는 것이다
이렇게 실행하는 주체를 <code>프로세스</code> 라고 한다
프로세스는 프로그램이 실행 될 때, 운영체제에 의해 생성되며</p>
<ul>
<li>PID (Process Identification Number)가 프로세스에 할당된다 </li>
<li>부모-자식 관계 파악을 위해 PPID(Parent Process Identification Number) 부여된다</li>
</ul>
<h3 id="🤔프로세스에-왜-pid를-할당할까">🤔프로세스에 왜 PID를 할당할까?</h3>
<p>프로세스도 부모-자식 관계로 이루어져 있다
부모 프로세스가 <strong>자식을 kill해야 한다</strong> (물론, 자식보단 부모가 먼저 죽는 경우도 있다. 이런 경우 init process가 대신하여 종료한다.)
그렇다면 왜 이렇게 진행될까?</p>
<p>서버 <code>자원이 한정적</code> 이기 때문!
한정적인 자원을 할당하고 회수하고를 굉장히 효율적으로 진행해야 하는데, 따라서 적재적소에 프로세스를 종료하는 게 필요하다. 이를 위해서 부모 프로세스 산하에 자식 프로세스들이 관리되는 구조인 것이다</p>
<h2 id="프로세스-종류">프로세스 종류</h2>
<ul>
<li>init process
맨 처음 시작되는 프로세스
부모 프로세스라고 부름 (조상이라고 생각하면 좋다)
init process가 시작되어야 자식 프로세스들이 실행 됨</li>
<li>demon process
커널에 의해 구동되며, 백그라운드에서 특정 서비스를 제공하기 위해 돌아가는 프로세스 (유저가 직접 실행시킨 게 아니라는 점)
파일 이름 끝에 d를 붙임</li>
<li>고아 프로세스 orphan process
자식 프로세스가 작업이 종료되기 전, 부모 프로세스가 종료된 경우
그럼 누가 종료해줄까? init프로세스가 종료해준다(조상님st)</li>
<li>zombie process
이미 종료된 프로세스지만, 리소스 반환을 하지 못한 상태로 남아있는 프로세스
일이 끝났는데도 자원을 반납하지 않고 남아있는 놈!</li>
</ul>
<h3 id="🤔고아와-좀비-프로세스-어떻게-kill-처리">🤔고아와 좀비 프로세스 어떻게 kill 처리?</h3>
<ul>
<li>고아 프로세스는 앞서 언급한 봐와 같이, init 프로세스의 도움을 받아 PID를 kill한다</li>
<li>좀비 프로세스를 찾아 PID를 종료하는 스크립트를 돌리지만, 그래도 죽지 않는 프로세스가 간혹 있다. 이런 경우에는 컴퓨터를 껐다 켜서 한다고 한다</li>
</ul>
<h2 id="shell이란-kernel과-shell">Shell이란? kernel과 shell</h2>
<p>들어가기 전에, 그래서 컴퓨터가 어떻게 돌아가길래 이걸 알아야 하는 건데? 에서 시작해보자</p>
<p>사람이 일을 하는데 한계가 있으니 기계를 시키는 것처럼 시스템이 하드웨어에게 일을 시켜야 한다
여기서 커널이 하드웨어를 컨트롤하여 동작하게 만든다. 
그런데 커널이 동작하려면 누군가 또 커널에게 명령을 해줘야 한다. 여기서 shell이 등장! 인간의 말을 기계어로 변경하여 커널에게 명령어를 전달해주는 역할을 shell이 한다</p>
<ul>
<li><p>kernel:
하드웨어를 컨트롤하는 핵심 프로그램</p>
</li>
<li><p>shell:
a command-line interpreter program
유저가 유틸리티를 통해서 명령어를 내리면 분석하여 OS에게 보내는 역할이다
쉽게 말해, 기계어로 변환하여 넘기는 변역가라고 보면 된다</p>
</li>
</ul>
<h2 id="process-확인">Process 확인</h2>
<h3 id="ps-명령어">ps 명령어</h3>
<p>ps(Process Status):
ps명령어를 사용하면 현재 구동 중인 (사용자와 관련된)프로세스 정보를 확인할 수 있음</p>
<ul>
<li><code>ps -ef</code> 
  ◼ <code>e</code> 옵션 : 시스템 전체 프로세스를 출력
  ◼ <code>f</code> 옵션 : 전체 포맷을 출력 Do full-format listing , (verbose모드와 비슷하게 작동하며 상세 정보 출력)</li>
</ul>
<p><code>ps ef | more</code> : 내용이 많아서 스크린을 넘어가기 때문에 more로 분할하여 출력해줘!</p>
<pre><code>$ps ef
UID        PID  PPID  C STIME TTY          TIME CMD

deserialize 22
root         2     0  0 Nov26 ?        00:00:00 [kthreadd]

* UID : user id 프로세스 소유자
* PID : 프로세스 id
* PPID : 부모 프로세스 id
* C : 스케줄링을 위한 cpu 사용량
* STME : 프로세스 시작시간 
* TTY : 프로세스를 위한 단말기 제어 (?로 출력되는 경우 터미널로 시작하지 않은 프로세스인 demon process의미)
* CMD : 명령</code></pre><h3 id="pstree---부모-자식-프로세스-관계">pstree - 부모-자식 프로세스 관계</h3>
<p><code>prstee</code> : 트리 형태로 부모-자식간 관계를 출력함</p>
<h3 id="특정-프로세스-검색-pgrep">특정 프로세스 검색 pgrep</h3>
<ol>
<li><p><code>ps -ef | grep [찾고자하는 워드 (pattern)]</code>
예를 들어 <code>ps -ef | grep bash</code> 👉 전체 프로세스에서 bash 정보만 추출</p>
</li>
<li><p><code>pgrep [option] [찾고자하는 워드 (pattern) ]</code> 
ps와 grep을 합친 형태 </p>
<p> option
 -x : 패턴과 정확히 일치하는 PID정보 출력
 -n : 패턴 포함 + 최근에 생성된 PID
 -u uid : uid와 일치하는 사용자의 프로세스 출력
 -l : pid와 프로세스 이름 출력</p>
</li>
</ol>
<p>Quiz</p>
<details>
<summary>bash 프로세스 정보만 출력 하시오 (정확하게 bash정보만 필요)</summary>
<div markdown="1">

<pre><code> pgrep -x bash</code></pre></div>
</details>

<details>
<summary>sh패턴 포함하고 가장 최근에 생성된 PID정보 출력하시오</summary>
<div markdown="2">

<pre><code> pgrep -n sh </code></pre></div>
</details>

<details>
<summary>UID가 100번인 사용자 프로세스 정보 출력하시오</summary>
<div markdown="2">

<pre><code> pgrep -u 100</code></pre></div>
</details>

<details>
<summary>bash패턴을 찾아 결과를 출력할 때 PID와 프로세스 이름을 함께 출력하시오</summary>
<div markdown="2">

<pre><code> pgrep -l bash</code></pre></div>
</details>

<h3 id="ps-vs-top">ps vs top</h3>
<p>ps : 프로세스 전체 사용 시간 동안의 cpu 사용률</p>
<pre><code>$ ps
  PID TTY          TIME CMD
 1373 pts/1    00:00:00 bash
 1729 pts/1    00:00:00 bash
 1872 pts/1    00:00:00 bash
29824 pts/1    00:00:00 ps
32178 pts/1    00:00:00 bash</code></pre><p>top : 그때 그때의 cpu 사용률(전체 리소스에서 얼마나 차지하고 있는 가)</p>
<pre><code>$top

//출력
top - 16:52:05 up 18:01,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 236 **total**,   2 **running**, 234 **sleeping**,   0 **stopped**,   0 **zombie**
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014540 total,    73796 free,   654592 used,   286152 buff/cache
KiB Swap:  2097148 total,  1744892 free,   352256 used.   107696 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR </code></pre><ul>
<li>total : total process in Active mode</li>
<li>running : current running process</li>
<li>sleeping : total process in sleep mode</li>
<li>stopped : total process stopped</li>
<li>zombie : total process in zombie state</li>
</ul>
<h1 id="archive">Archive</h1>
<p>아카이브란?</p>
<blockquote>
<p>사전적 정의: 역사적 가치 혹은 장기 보존의 가치를 지닌 기록이나 문서들의 컬렉션을 의미 - 위키백과</p>
</blockquote>
<p>즉, 무언가를 &quot;보관&quot;한다 =&gt; 오랜시간 저장하기 위함이니 &quot;장기 저장소&quot; 라고 볼 수 있다
시스템 입장에서 아카이브란, 파일의 카피본을 백업 장치에 저장할 때의 저장소라고 볼 수 있다</p>
<p>좀 더 깊이 있게 동작으로 개념을 정리하자면,
<em><strong>리눅스에게 아카이브란? 여러 개의 파일 혹은 디렉토리를 묶어서 하나의 파일로 만드는 것</strong></em></p>
<p>그렇다면 왜? 아카이브가 필요할까??</p>
<blockquote>
<p>파일의 이동/공유/저장을 쉽게하기 위해서이다</p>
</blockquote>
<p>네트워크로 데이터를 보낼 때, 여러 파일을 하나의 파일로 만들어(=아카이브) 보내는 것이 효율적이기 때문!</p>
<h3 id="아카이브-생성과-해지-tar">아카이브 생성과 해지 tar</h3>
<p><code>tar</code> : 파일을 압축하고 저장하기 쉽게 여러 파일을 하나로 만드는 유틸리티</p>
<p>우리는 tar의 도움을 받아 아카이브를 생성할 수 있다. </p>
<p><code>tar [option] [아카이브 파일.tar] [아카이브로 만들 파일들 나열]</code>
옵션</p>
<ul>
<li><code>c</code> create : 새로운 tar파일 생성</li>
<li><code>v</code> verbose: tar파일 내부 디테일한 정보들</li>
<li><code>f</code> file = archive:  use archive file or device ARCHIVE 아카이브를 만들어 줘 (아카이브 파일이나 데이프 장치 지정)</li>
<li><code>x</code> extract : tar파일 해제
헷갈림 방지 및 명확히 하고자 뒤에 <code>tar</code> 확장자를 정해주는 게 좋은 편이라 한다</li>
</ul>
<pre><code>tar cvf weekends.tar sat, sun 
#weekends.tar 아카이브 파일 생성

tar xvf weekends.tar 
#weekends.tar 아카이브 파일 해지</code></pre><p>이렇게 하면 weekends.tar라는 파일에 sat, sun 파일이 들어가게 된다</p>
<p>이 과정에서 어떤 tar파일이 합쳐졌는 지에 대한 메타데이터 정보가 들어가기 때문에 원본 파일들 용량 합이 아카이브 파일 용량보다 크다
따라서 압축을 해야 한다</p>
<p><em><strong>여기서! 왜 압축을 할까?</strong></em></p>
<ol>
<li>파일을 압축해서 네트워크를 통해 전송한다면 트래픽을 줄이게 됨</li>
<li>압축을 통해 디스크 공간을 50~60%정도 효율적으로 공간을 줄여서 사용할 수 있음</li>
</ol>
<h3 id="파일-압축-compress-gzip-tar--zcvf">파일 압축 compress, gzip, tar -zcvf</h3>
]]></description>
        </item>
    </channel>
</rss>