[{"content":"\rHugo shortcodes Blowfish shortcodes toggle # click\rcontent\rcode block # linux command : ls .\n","date":"3 December 2025","externalUrl":null,"permalink":"/posts/guide/draft_archive/","section":"Posts","summary":"shortcodes archive","title":"Draft Archive","type":"posts"},{"content":"","date":"3 December 2025","externalUrl":null,"permalink":"/tags/draft-archive/","section":"Tags","summary":"","title":"Draft Archive","type":"tags"},{"content":"###Blowfish Official Doc.\nThis article offers a sample of basic Markdown formatting that can be used in Blowfish, also it shows how some basic HTML elements are decorated.\nHeadings # The following HTML \u0026lt;h1\u0026gt;—\u0026lt;h6\u0026gt; elements represent six levels of section headings. \u0026lt;h1\u0026gt; is the highest section level while \u0026lt;h6\u0026gt; is the lowest.\nH1 # H2 # H3 # H4 # H5 # H6 # Paragraph # Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.\nItatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.\nBlockquotes # The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a footer or cite element, and optionally with in-line changes such as annotations and abbreviations.\nBlockquote without attribution # Tiam, ad mint andaepu dandae nostion secatur sequo quae. Note that you can use Markdown syntax within a blockquote.\nBlockquote with attribution # Don\u0026rsquo;t communicate by sharing memory, share memory by communicating.\n— Rob Pike1\nTables # Tables aren\u0026rsquo;t part of the core Markdown spec, but Hugo supports supports them out-of-the-box.\nName Age Bob 27 Alice 23 Inline Markdown within tables # Italics Bold Code italics bold code Code Blocks # Code block with backticks # \u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html lang=\u0026#34;en\u0026#34;\u0026gt; \u0026lt;head\u0026gt; \u0026lt;meta charset=\u0026#34;utf-8\u0026#34; /\u0026gt; \u0026lt;title\u0026gt;Example HTML5 Document\u0026lt;/title\u0026gt; \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;p\u0026gt;Test\u0026lt;/p\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; Code block indented with four spaces # \u0026lt;!DOCTYPE html\u0026gt;\r\u0026lt;html lang=\u0026quot;en\u0026quot;\u0026gt;\r\u0026lt;head\u0026gt;\r\u0026lt;meta charset=\u0026quot;utf-8\u0026quot;\u0026gt;\r\u0026lt;title\u0026gt;Example HTML5 Document\u0026lt;/title\u0026gt;\r\u0026lt;/head\u0026gt;\r\u0026lt;body\u0026gt;\r\u0026lt;p\u0026gt;Test\u0026lt;/p\u0026gt;\r\u0026lt;/body\u0026gt;\r\u0026lt;/html\u0026gt;\rCode block with Hugo\u0026rsquo;s internal highlight shortcode # 1 2 3 4 5 6 7 8 9 10 \u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html lang=\u0026#34;en\u0026#34;\u0026gt; \u0026lt;head\u0026gt; \u0026lt;meta charset=\u0026#34;utf-8\u0026#34;\u0026gt; \u0026lt;title\u0026gt;Example HTML5 Document\u0026lt;/title\u0026gt; \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;p\u0026gt;Test\u0026lt;/p\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; List Types # Ordered List # First item Second item Third item Unordered List # List item Another item And another item Nested list # Fruit Apple Orange Banana Dairy Milk Cheese Other Elements — abbr, sub, sup, kbd, mark # GIF is a bitmap image format.\nH2O\nXn + Yn = Zn\nPress CTRL+ALT+Delete to end the session.\nMost salamanders are nocturnal, and hunt for insects, worms, and other small creatures.\nThe above quote is excerpted from Rob Pike\u0026rsquo;s talk about nothing during Gopherfest, November 18, 2015.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"3 December 2025","externalUrl":null,"permalink":"/posts/guide/hugoblowfishsettings/","section":"Posts","summary":"","title":"Hugo \u0026 Blowfish Settings","type":"posts"},{"content":"","date":"3 December 2025","externalUrl":null,"permalink":"/tags/hugo/blowfish/","section":"Tags","summary":"","title":"Hugo/Blowfish","type":"tags"},{"content":"","date":"3 December 2025","externalUrl":null,"permalink":"/categories/guide/","section":"Categories","summary":"","title":"Guide","type":"categories"},{"content":"","date":"3 December 2025","externalUrl":null,"permalink":"/posts/guide/","section":"Posts","summary":"Hugo/Blowfish Guideline","title":"Guide","type":"posts"},{"content":"어제보다 오늘, 오늘보다 내일 더 나은 엔지니어가 되기 위해 계속 만들고 배우겠습니다.\n","externalUrl":null,"permalink":"/kr/","section":"","summary":"","title":"","type":"page"},{"content":"about.md\n","externalUrl":null,"permalink":"/about/","section":"","summary":"","title":"","type":"page"},{"content":"어제보다 오늘, 오늘보다 내일 더 나은 엔지니어가 되기 위해 계속 만들고 배우겠습니다.\n","externalUrl":null,"permalink":"/kr/","section":"","summary":"","title":"","type":"kr"},{"content":"ddd\n","externalUrl":null,"permalink":"/kr/posts/","section":"","summary":"","title":"","type":"kr"},{"content":"ddd\n","externalUrl":null,"permalink":"/kr/posts/","section":"","summary":"","title":"","type":"posts"},{"content":"resources.md\n","externalUrl":null,"permalink":"/resources/","section":"","summary":"","title":"","type":"page"},{"content":"","externalUrl":null,"permalink":"/tags/architecture/","section":"Tags","summary":"","title":"Architecture","type":"tags"},{"content":"","externalUrl":null,"permalink":"/kr/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/aws/","section":"Categories","summary":"","title":"AWS","type":"categories"},{"content":" AWS에는 유명한 서비스들을 대부분 제공함. 베껴서 AWS만의 독자적인 서비스(보통 더 비쌈)나 기존의 서비스를 AWS에서 올려서 사용 가능. 한 서비스만 써도, 뒤에서 타서비스가 같이 켜지는 경우 多. EC2 on → VPC, EBS, IAM, CloudWatch 여러 서비스들을 하나씩 하는 게 불편하고 어려우니 통합된 서비스들(more managed)도 존재 ex. LightSail : EC2 + VPC + EBS + 네트워크 + 방화벽 + 고정 IP + 스냅샷 + 간단한 콘솔 UI 요구사항에 맞게 서비스나 서버의 Architecture 구성하는 것이 중요하다.\n=\u0026gt; 초기 스타트업을 위한 서버선택 가이드\nMonolithic Architecture # 확장을 고려하더라도, 처음부터 복잡하게 서버를 설정할 필요는 없다. Monolithic Server 구성으로도 충분하다.\n정적 페이지만 필요 : S3(정적 파일 저장소) + CloudFront(CDN) 동적 기능이 필요하지만, 주요하진 않을 때(ex. 방문자 카운트, 댓글, etc.) : S3 + CloudFront + Lambda 3-tier Architecture # 서버를 사용할 경우 보통은 3-tier architecture로, Front / Back / DB를 구분해서 설계한다.\nEC2 = AWS의 기본 컴퓨팅 자원\nEC2보다 More managed or 특정 서비스에 특화된 서버를 쓰고 싶으면 : Elastic Beanstalk, Fargate, Amplify, Sagemaker\nEC2를 Container로 관리 : ECS, ECR\n데이터의 종류에 따른 DB 선택 : RDS, Aurora, \u0026hellip;\nNetwork 및 기본 설정. # 처음에 생성한 EC2에는 default VPC가 설정되어 있다. 방화벽과 같은 기능도 AWS에서 기본적으로 제공된다. 따라서 초기에는 크게 건들이지 않아도 무관하다.\n하지만, 서비스가 커지면서 사용자가 늘어나고 사원수가 늘어나면, VPC 및 IAM 설정 등 추가해줄 필요가 생긴다.\nVPC는 하나의 큰 네으퉈크에서, 기능과 보안 목적에 따라 서브넷으로 나뉜다. 예를 들어, 외부 접근이 필요한 웹 서버는 퍼블릭 서브넷에, DB는 프라이빗 서브넷에 배치한다.\n트래픽이 늘어나면, Loadbalancing으로 트래픽을 분배하고, Autoscaling으로 서버 수를 조절 가능하다.\n물리적 네트워크 관점에서도 동일하다.\n단일 네트워크나 단일 장비에 의존하지 않기 위해 네트워크를 여러 구간으로 분리하고 각각을 독립적으로 운영한다.\n서버에 트래픽이 늘 때, 장애가 나도 서비스가 돌아가게 이중화를 위해 라우터나 스위치를 늘리기도 한다.\nCompute / Server # 복잡도 : EC2 \u0026lt; Auto Scaling \u0026lt; Elastic Beanstalk \u0026lt; Lightsail \u0026lt; Fargate \u0026lt; App Runner \u0026lt; Amplify \u0026lt; Lambda\rEC2 : 가상 서버 컴퓨팅 서비스 (가상서버 + OS + 네트워크 + 스토리지)\nAWS Compute Optimizer : Compute 리소스 전반(EC2, RDS 등)의 리사이징 추천 도구. 최소 30시간(끊김 없이)의 CloudWatch 메트릭 데이터가 쌓여야 한다. 비용 최적화에 도움.\n무료. EC2에 CloudWatch Agent를 깔아서, Memory, Disk IOPS 등의 지표를 함께 수집하기. Auto Scaling : 인스턴스 수 자동 조절 서비스 (EC2 관리 + 헬스 체크 + 트래픽 기반 증감 + 비용 최적화)\nElastic Beanstalk : app. 배포·운영 자동화 서비스 (EC2 + Auto Scaling + Load Balancer + 배포 관리 + 모니터링)\nLightsail : 소규모 프로젝트용 간편 서버 서비스 (EC2 + 스토리지 + 네트워크 + 고정 요금 + 관리형 콘솔)\nFargate : 서버 관리 없는 컨테이너 실행 엔진 (컨테이너 실행 + 서버리스 + 자동 확장)\nApp Runner : 컨테이너 기반 웹 서비스 자동 실행 서비스 (컨테이너 실행 + HTTPS + 오토스케일링 + 배포 자동화)\nAmplify : 프론트엔드 앱 배포와 서버리스 백엔드(AWS 서비스) 연결을 쉽게 해주는 풀스택 개발 플랫폼. Compute / Server + CI/CD / 배포. 빠른 MVP 개발에 주로 사용.\nLambda : 이벤트 기반 서버리스 함수 실행 서비스. 함수만 작성하면 끝. (함수 실행 + 이벤트 트리거 + 자동 확장 + 서버 관리 제거)\nEC2 vs. Fargate\nEC2로 직접 서버를 올리기보다 Fargate가 최근 트렌드. 하지만 비용 더 증가 위험.\n서비스가 커지면 세부설정을 위해 결국 EC2가 나음.\n[AWS] EC2가 아닌 ECS Fargate 사용 시 좋은 점 (Lv 1)\n특징 Fargate EC2 기반 ECS 서버 관리 AWS가 관리 (서버리스) 사용자가 직접 서버를 관리 리소스 사용 방식 컨테이너 단위로 CPU/메모리 설정 EC2 인스턴스의 자원을 공유 확장성 자동으로 확장/축소 사용자가 EC2 인스턴스 추가/삭제 비용 구조 사용한 만큼만 비용 청구 EC2 인스턴스 크기에 따라 비용 발생 운영 복잡도 낮음 상대적으로 높음 EC2 \u0026lt; Elastic Beanstalk \u0026lt; Lightsail \u0026lt; App Runner\nLightsail : Autoscaling 지원 X\nApp Runner : EC2조차 안 보이는, 컨테이너 완전관리형 PaaS\n실제 서비스에서는 그냥 EC2를 쓰는 게 나아 보임.\nSecurity / Identity # IAM : 사용자·역할·권한을 관리하는 접근 제어. 보통 한 계정에서 IAM을 나눠 사용. 여러 계정 : Prod/Dev/Test 계정 분리할 때, 회사 조직/보안 요구 있을 때 암호화/키 서비스 SSM(Parameter Store) : 서버·설정·자동화·접속(Session)까지 관리하는 운영 관리. 원걱접속(SSH) 및 파라미터 및 비밀값 관리에 사용. Secrets Manager : DB 비밀번호·API 키 같은 비밀정보 저장·회전 관리 서비스 KMS : 암호화 키를 생성·보관·제어하는 키 관리. 위 둘 서비스 사용시 자동으로 켜짐. 엔진 느낌. KMS를 이용해 Lambda에서도 암호화 상태로 저장·사용 가능. 암호키 자체를 관리시 사용. 보안 서비스(방화벽) = WAF \u0026amp; Shield Shield : L3/L4에서 WAF보다 먼저 방어. DDoS(SYN/UDP Flood - 정상적인 TCP 수행 X. Kali의 악성 프로그램 등 이용) 공격을 자동으로 방어하는 보안 서비스. default로 Shield Standard 켜짐. WAF : 웹 공격(SQLi, XSS 등)을 차단하는 웹 방화벽 서비스. L7 DDoS(ex. 한 ip에서 내 웹사이트에 1초에 100번 접속 - Rate-based rule 등)도 방어. default X. 사용자가 직접 Web ACL 생성하고 리소스에 연결해야 동작 Firewall Manager : AWS Organizations 환경에서 주로 사용. WAF \u0026amp; Shield 중앙 통제용. 인증서 ACM : HTTPS용. Route53은 Domain 구매만. SSL/TLS 인증서를 발급·갱신·배포 관리하는 인증서 서비스 PCA : 내부용 사설 인증서를 발급하는 프라이빗 CA 서비스. 내부 개발 환경 웹페이지 등에 사용. Cognito : 사용자 인증·가입·로그인 기능 제공하는 인증 서비스. S.S.와 같이 or 대체. CI/CD / 배포 # AWS CI/CD = CodeCommit → CodeBuild → CodeDeploy 조합이 기본 세트 CodeCommit : Git 저장소 서비스 CodeBuild : 테스트·빌드·Docker 이미지 생성 담당 CodeDeploy : EC2·ECS·Lambda에 무중단 배포 담당 CodePipeline : 소스→빌드→배포 흐름을 연결하는 파이프라인 오케스트레이터 CloudFormation / CDK : IaC 기반 인프라 배포. EC2 등 복잡한 설정을 코드로 Storage # S3 : 인터넷/앱에서 접근 가능한 객체 스토리지. 무제한 용량, 이미지/로그/백업 등 다양한 데이터 저장 가능. EBS : EC2 전용 블록 디스크. OS, DB 등 사용. 인스턴스별 독립. EFS : EC2 인스턴스와 독립적으로 운영되는 여러 서버가 동시에 접근 가능한 공유 디스크. 여러 EC2에서 동시에 읽기/쓰기 공유 가능. Backup : AWS 서비스 전반 데이터 백업 관리 - EC2, RDS, DynamoDB, EBS, S3 등 백업을 한 곳에서 EC2 인스턴스 자체는 스냅샷 개념이 없음. EC2 백업 = EBS 백업. 한 EC2가 여러 개의 EBS를 참조할 수도 있으므로, EC2, EBS 둘다 존재 하는 것. S3의 버전 관리, RDS의 DB 스냅샷 등 개별적으로 해도 되지만, Backup을 사용하는 게 권장됨. 위의 개별 서비스를 활성화한다고 해서 AWS Backup이 자동 활성화되지는 않음. 따로 돌아감. S3 Glacier : 장기 아카이브용 저비용 객체 스토리지. 데이터 복원 시 지연 발생 가능. DB # RDBMS AWS RDS : 관계형 DB를 관리형으로 제공하는 서비스. MySQL, PostgreSQL 등 지원. Amazon Aurora : AWS에서 만든 전용 DB. RDS 호환 고성능 분산형 관계형 DB. AWS 최적화. Key-Value / NoSQL Amazon DynamoDB : 서버리스 키-값 NoSQL DB. 초고속, 자동 확장. Amazon Keyspaces : Cassandra 호환 분산형 NoSQL DB. In-Memory / Cache (Redis) Amazon ElastiCache : Redis/Memcached 기반 인메모리 캐시 DB. Amazon MemoryDB for Redis : 영속성 있는 Redis 호환 인메모리 DB. 더 비쌈. Document Amazon DocumentDB : MongoDB 호환 문서형 NoSQL DB. Graph Amazon Neptune : 그래프 DB. 관계 탐색 최적화. Time Series Amazon Timestream : 시계열 데이터 전용 DB. IoT, 모니터링용. Data Warehouse / Analytics Amazon Redshift : 대용량 분석용 컬럼 기반 데이터 웨어하우스. Messaging / Queue # SQS : 메시지 큐 서비스. 비동기 작업 처리용. SNS : Pub/Sub 메시징 서비스. 다수 구독자에게 알림 전송. 브로드캐스팅용. SES : 대량 이메일 발송 서비스. 트랜잭션/마케팅 메일 전송용. Amazon MQ : Apache ActiveMQ 또는 RabbitMQ 엔진을 AWS가 관리형으로 운영해주는 메시지 브로커 서비스 AWS End User Messaging Pricing : SMS, Email, Push, Voice 같은 “엔드유저 대상 메시징”을 묶은 상위 개념 서비스 EventBridge : Lambda로도 다 가능하지만, 보다 조금 더 친절·편리. 이벤트 기반 메시징/라우팅 서비스. 서비스 간 이벤트 연결. 람다는 코드 실행 위주로, EB는 다른 서비스로 언제, 어떤 이벤트로, 누구에게 보낼지 위주로 Eventbridge 개념 및 사용 방법 Kafka Kinesis : 실시간 스트리밍 메시지 처리용 서비스. AWS 자체 스트리밍 서비스 MSK : Apache Kafka 관리형 스트리밍 플랫폼. Kafka 오픈소스를 그대로 사용 가능. Container # ECR(컨테이너 이미지 저장소) → ECS(컨테이너 실행/운영 장소 → EC2 or Fargate 선택)\rECS : AWS 네이티브 컨테이너 오케스트레이션 서비스. EC2/Fargate에서 컨테이너 실행. ECR : Docker 컨테이너 이미지 저장소. 프라이빗 레지스트리. EKS : k8s관리형 서비스. 쿠버네티스 표준 환경 제공. Networking / CDN # CloudFront : 글로벌 CDN 서비스. 정적/동적 콘텐츠를 사용자와 가까운 엣지에서 캐싱·전송. 지연시간 감소, 트래픽 비용 절감, WAF·Shield 연동 가능. VPC (Virtual Private Cloud) : AWS 내 전용 가상 네트워크 공간. IP 대역, 서브넷, 라우팅 직접 설계. Security Group : 인스턴스 단위 방화벽. 허용 규칙만 존재하는 상태 기반 필터. NACL (Network ACL) : 서브넷 단위 방화벽. 허용·거부 모두 설정 가능한 무상태 필터. ELB (ALB / NLB) : 트래픽을 여러 대상에 분산하는 로드밸런서. ALB (Application Load Balancer) : L7. HTTP/HTTPS 레벨. 경로·호스트 기반 라우팅. NLB (Network Load Balancer) : L4. TCP/UDP 레벨. 초고성능, 낮은 지연. Route 53 : 기본적으로 DNS 서비스. 추가로 도메인 관리 + 트래픽 라우팅 + 헬스체크. 지리·지연·가중치 기반 라우팅, 헬스체크 지원. Log / Monitoring # CloudWatch + CloudTrail 까지는 기본 세팅으로.\nEC2 콘솔에서 보는 것은 CloudWatch 기반 메트릭.\nCloudWatch = Prometheus + Grafana를 합쳐놓은 AWS 서비스 Prometheus = CloudWatch의 메트릭 수집 + 시계열 저장 역할 Grafana = CloudWatch의 대시보드 화면 역할 AWS CloudWatch : AWS 기본 모니터링 서비스. P., G. 따로 쓰는 거에 비해 비쌈. AWS에 종속됨. EC2, RDS, Lambda 등 메트릭 자동 수집 로그 수집 및 검색 알람 설정 → SNS 연동 AWS CloudTrail : AWS API 호출 감사 로그 서비스 누가 어떤 리소스를 변경했는지 기록 IAM, 보안 사고 추적 핵심 AWS X-Ray : 분산 트레이싱(APM) 서비스 CloudTrail이 기록용이면, X-Ray는 디버깅용. 사용자 요청 1건이 어디 서비스에서 느려졌는지 추적. 특히 MSA용. Amazon Managed Grafana Amazon Managed Service for Prometheus ","externalUrl":null,"permalink":"/posts/aws-architecture/","section":"Posts","summary":"","title":"AWS Architecture","type":"posts"},{"content":"[Local Dev Machine]\r|\r| git push\rv\r[GitLab Repository]\r|\r| GitLab CI Pipeline\rv\r[GitLab CI Runner]\r|\r| build / test / bundle\rv\r[Build Artifact (JS bundle / worker script)]\r|\r| deploy (wrangler / API)\rv\r[Cloudflare Workers]\r|\rv\r[Edge Network (Global CDN)]\r|\rv\r[Users] Server # Local test command : hugo server --disableFastRender --noHTTPCache\n","externalUrl":null,"permalink":"/posts/guide/blog-architecture/","section":"Posts","summary":"","title":"Blog Architecture","type":"posts"},{"content":"","externalUrl":null,"permalink":"/categories/boot/","section":"Categories","summary":"","title":"Boot","type":"categories"},{"content":"","externalUrl":null,"permalink":"/kr/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/categories/ccna/","section":"Categories","summary":"","title":"CCNA","type":"categories"},{"content":"","externalUrl":null,"permalink":"/posts/ccna/","section":"Posts","summary":"Jeremy\u0026rsquo;s IT Lab","title":"CCNA","type":"posts"},{"content":" 컴퓨터 부팅 과정 # 전원 ON → 파워가 전기를 공급 시작 → 메인보드의 플레시 메모리에 담긴 BIOS / UEFI가 실행됨 → POST(Power-On Self Test) 진행 → 특정 HW가 없거나 문제 있으면 빞 소리남. MBR/EFI 파티션 읽기 → 부트로더 실행 → OS 커널 RAM에 적재 대부분 : BIOS-MBR 방식 또는 UEFI-GPT 방식 MBR/GPT는 “디스크 파티션 구조 정보”. BIOS/UEFI가 디스크 읽을 때 참고하는 메타데이터 MBR(Master Boot Record) : 옛 ver. 최대 4개의 파티션. 디스크 첫 섹터에 부팅 정보 + 파티션 정보 몰아넣음. GPT(GUID Partition Table) : 이론상 무한개의 파티션 가능. 파티션 정보를 디스크 전체에 체계적으로 저장 및 관리. UEFI가 EFI 파티션 찾아서 .efi 파일 실행 [2026 최신] MBR VS GPT 차이점 상세 분석 가이드 : 실제 내 pc는 GPT 기반. 4개의 파티션 나뉨. EFI 파티션이, 구심이 되어, 파티션을 나누고 디스크 총 관리. 프로그램 # RAM : 그냥 물리적인 메모리 덩어리 JVM : OS로부터 할당받은 RAM을 관리하고, 실행을 담당하는 런타임 환경 Java 등 언어에서 다루는 스택, 힙 = 실제로 RAM에 있는 부분. OS가 JVM 프로세스 실행 → OS가 RAM 일부를 JVM에게 할당 → JVM이 그걸 내부적으로 나눔 - Heap, Stack, Metaspace 등 커널 : 커널은 운영체제(OS)의 핵심 부분으로, 하드웨어와 소프트웨어 사이에서 중재자 역할을 하는 프로그램. 커널 : OS 중 항상 메모리에 올라가 있는 OS의 핵심 부분으로써 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터 자원들을 관리하는 역할 프로세스 관리 – CPU 시간을 각 프로그램에 나눠주고 실행 순서 결정 메모리 관리 – 프로그램이 사용할 메모리 할당과 보호 장치 관리 – 디스크, 네트워크, USB 등 하드웨어 제어 파일 시스템 관리 – 파일 읽기/쓰기, 디렉터리 관리 시스템 호출 인터페이스 제공 – 프로그램이 OS 기능 사용 가능하게 함 프로그램은 커널에 PID로 등록, 네트워크 통신은 소켓 통해 포트로 연결. IP + 포트 조합으로 특정 프로세스와 통신 프로그램은 소켓을 통해 커널에게 “저쪽 프로그램과 통신하고 싶다”고 요청하고, 커널이 실제 네트워크 전달을 처리함. 소켓 : 프로그램이 네트워크 통신을 할 때 커널이 제공하는 추상화된 인터페이스 웹소켓, TCP소켓, IPC 등 여러 층에 존재하는 개념. IPC = OS에서 프로세스들이 데이터를 교환하는 기술(파이프, 소켓 등). TCP 소켓 = TCP 프로토콜 기반으로 신뢰성 있는 데이터 전송을 하는 소켓 인터페이스 TCP는 핵심 프로토콜로, OS에 기본 탑재됨. TCP 소켓은 유저가 쓰지만, 실제 동작은 커널에서 처리되는 인터페이스로 유저 모드와 커널 모드 사이를 이음. 커널 모드 : CPU가 운영체제 핵심 권한으로 동작하는 상태.\n커널 모드 : 대다수의 OS에는 커널 모드와 사용자 모드가 구분되어 있으며, 사용자 모드에서는 사용자가 접근할 수 있는 영역이 제한되어 있고, 접근을 위해서는 시스템 콜을 해야한다. 커널 모드는 OS가 CPU를 사용하는 모드이다. 시스템 콜을 통해 커널모드로 전환되면 OS는 하드웨어를 제어하는 명령어(Privileged Instructions)를 실행한다. Privileged Instructions는 사용자 모드에서 실행되면 exception이 발생한다. 하드웨어 입력시 # https://baebalja.tistory.com/354 드라이버(Device Driver) = OS가 하드웨어를 제어할 수 있게 해주는 중간 소프트웨어층 내가 컴퓨터에 내린 명령. 키보드/마우스를 통한 입력(HW) → 인터럽트 발생\n인터럽트 요청 발생 (HW) CPU가 처리하던 프로세스 중단 후 인터럽트 수락 현재 실행 중인 프로세스 상태 PCB에 저장 커널 모드 진입 인터럽트 원인 확인 (인터럽트 벡터) 인터럽트 처리 루틴 (ISR) 실행 → 인터럽트 처리 완료 저장했던 상태 복구 (레지스터 등) PCB에서 프로세스 상태 정보 다시 로드 원래 실행하던 위치부터 계속 수행 RAM에서의 과정 # RAM → CPU 캐시(L1/L2/L3) → 레지스터 → ALU → 레지스터 → 캐시 → RAM\n","externalUrl":null,"permalink":"/posts/computer-bootprocess/","section":"Posts","summary":"JVM, Interrupt","title":"Computer BootProcess","type":"posts"},{"content":"","externalUrl":null,"permalink":"/categories/hypervisor/","section":"Categories","summary":"","title":"Hypervisor","type":"categories"},{"content":"\rHypervisor : VM들을 만들고 관리하는 SW. 가상화를 가능하게 하는 핵심 기술. 하이퍼바이저가 CPU, 메모리, 디스크, 네트워크 같은 물리 자원을 분배·관리함. 메모리 등 가상화.\nType 1 : bare-metal기반. 하드웨어 위에서 동작. Type 2 : OS 위에서 동작. VM(Virtual Machine) : hypervisor 위에서 돌아가는 가짜 컴퓨터.\n[RedHat] 가상 머신(VM)이란?\nType 1 # OS 없이 바로 하드웨어 위에 올라감. CPU, RAM을 직접 제어 성능 좋음. 서버/클라우드용 VMware ESXi, Xen, Hyper-V(Windows), KVM(Linux) Hyper-V, KVM : default로 있긴 하지만, 사용자가 켜야 활성화됨. Xen → KVM : AWS just announced a move from Xen towards KVM. So what is KVM? Xen = Type1 / VMware = Type1 \u0026amp; 2 Type 2 # 실제 자원 관리는 OS가 하고, 하이퍼바이저는 그걸 빌려 씀 HW → OS → Hypervisor → VM 편하나 성능 손해 有 VirtualBox, VMware Workstation Hypervisor(Type2) vs. Docker # 둘 다 OS 자원 공유, OS 위에서 돌아감.\nType 2 → 가짜 컴퓨터 생성 (OS 포함) Docker → 프로세스만 격리 Docker vs. LXC # Docker : 앱 실행용. MSA, 배포에 최적. LXC(LinuX Containers) : OS 느낌 컨테이너. VM 대체용에 가까움. 툴들 비교 # Proxmox : 오픈소스 가상화 플랫폼. KVM 기반 VM + LXC 컨테이너 관리\nKVM(Type1) + LXC(컨테이너, 커널 공유) + 관리 기능 → 다 묶은 올인원 오픈소스 VMware vSphere (ESXi 포함) : 기업에서 가장 많이 씀. 기능/안정성 최상. 비싸지만 엔터프라이즈 표준 느낌.\nOpenStack : AWS처럼 만들기 가능한 대규모 클라우드용. VM 플랫폼 + 클라우드 자체 구축. 난이도 高\nXen / KVM 단독 : 순수 Hypervisor. Low-level 느낌.\nType 1 Hypervisor = OS? X → Difference between bare metal hypervisor and operating system\nhypervisor ⊂ OS 개념 : “Type 1 hypervisor = OS로 볼 수는 있음” 하지만 “모든 OS = hypervisor”는 아님 OS ≠ hypervisor A \u0026ldquo;bare-metal hypervisor\u0026rdquo; may also provide other facilities beyond this \u0026ldquo;supervisor of supervisors\u0026rdquo; definition,\nso you could loosely call it \u0026ldquo;an operating system for running operating systems\u0026rdquo;.\nAgain, that makes the hypervisor a type of operating system, but does not make other operating systems hypervisors.\nOS는 개념이 더 넓음 : 하드웨어 자원 관리 + 프로그램 실행 환경 제공 bare-metal hypervisor (Type 1) : OS의 한 “특수한 하위 분류” → VM을 1급 객체로 관리하는 OS 전가상화(Full Virtualization) vs. 반가상화((Paravirtualization)\n전가상화 : Guest용 CentOS를 설치. 자신이 Guest OS인지 모름. 변환과정에서 오버헤드 크게 발생. CPU 가상화 → 전가상화 (VT-x / AMD-V) 반가상화 : 자신이 Guest OS인지 알음. HyperCalls 수행. 초기엔 반가상화 전용 CentOS 필요. 지금은 똑같은 CentOS로, 대신 드라이버 별도로 사용하는 방식도 사용. 디바이스 드라이버 → 반가상화 (PV drivers) ","externalUrl":null,"permalink":"/posts/hypervisor/","section":"Posts","summary":"Type1, Type2, Docker","title":"Hypervisor","type":"posts"},{"content":"","externalUrl":null,"permalink":"/categories/linux/","section":"Categories","summary":"","title":"Linux","type":"categories"},{"content":" 리얼리눅스 실습환경 기본 명령어 : ls / pwd / ps / mkdir / mv / kill [PID] /\nShebang / POSIX / Shell vs. Bash\nPOSIX = 유닉스 계열 OS가 따라야 하는 표준 규격 ls, cat, grep 같은 기본 명령 규칙, 쉘 문법 최소 공통 기능, 파일/프로세스 동작 Shell = 사용자 명령을 OS에 전달하는 프로그램 명령 입력 받음 → 실행 → 결과 출력 bash(Bourne Again SHell) = shell의 한 종류 GNU에서 만든 확장된 shell. 추가 기능 많음. 배열, [[ ]] 조건문, 함수 강화 등 docker에서는 최소 환경이라 sh를 쓰고, 로컬에서는 편의성으로 bash를 사용한다. POSIX (규칙) ↑ shell (프로그램 카테고리) ↑ bash, sh, zsh (구현체) Shell Script 작성(.sh / windows : .bat) : crontab\nSheBang (#!) : #! [optional-arg]\n#!/bin/sh #!/bin/bash #!/usr/bin/pwsh #!/usr/bin/env python3 SheBang은 생략 가능. 생략시 default로 인터프리트.\ncpu_check.sh\n#!/bin/bash usage=$(top -bn1 | grep \u0026#34;Cpu(s)\u0026#34; | awk \u0026#39;{print $2}\u0026#39;) echo \u0026#34;CPU Usage: $usage\u0026#34; crontab과 같이 자주 사용. crontab -e / l → 설정한 crontab 실행됬으면, mail 옴.\n* * * * * /home/reallinux/cpu_check.sh \u0026amp;\u0026amp; echo \u0026#34;hello\u0026#34; \u0026gt;\u0026gt; /home/reallinux/test.log 2\u0026gt;\u0026amp;1 You have new mail in /var/spool/mail/reallinux test.log\nhello hello 대문자 소문자 차이\ncurl -v https://google.com : 로그 상세히 curl -X POST https://api.com : HTTP 메소드 지정 소문자 옵션: 대부분의 Unix/Linux 명령어에서 소문자 옵션은 일반적으로 기능이나 동작을 지정하는 데 사용됩니다. 예를 들어: d (데이터 전송) v (verbose 모드) h (도움말) 대문자 옵션: 대문자 옵션은 특정한 기능이나 구체적인 동작을 지정하는 데 사용됩니다. 예를 들어: X (HTTP 요청 메서드 지정) H (HTTP 헤더 지정) A (User-Agent 설정) Redirection 명령어\n리눅스 파이프 명령어 : 대부분 파이프를 많이 씀.\n파이프 : 파이프는 프로세스들을 동시에 실행시키고, OS가 중간 버퍼(pipe)로 데이터 흐름을 자동 조절해서 안꼬이게 만드는 구조임.\ncat big.log | grep ERROR | head → cat big.log \u0026amp;\u0026amp; grep ERROR big.log\n파이프는 병렬이다. 순차실행을 의도하면, \u0026amp;\u0026amp;을.\n의도된 순차실행이었으면,\n1. cat이 big.log 끝까지 다 읽음 2. grep이 전체 처리 3. head가 마지막에 10줄 자름 근데 파이프면, head가 10줄 읽는 순간 바로 종료됨. 전체 파일 다 안읽음\nERROR 10줄 발견 → head 종료 → 나머지 프로세스도 종료 출력 보기 # less : 길게 보기. 스크롤 기능. dmesg | less : 시스템 부팅 메시지 확인 head : 앞부분 몇 줄 출력. ps aux | head : 프로세스 목록 상위 몇 줄 보기 tail : 뒷부분 몇 줄 출력. journalctl | tail : 최근 로그 확인 tail -f : 로그 실시간 추적. tail -f app.log : 앱 로그 실시간 감시 tee : 출력 저장 + 화면 출력 동시 수행. ls | tee files.txt : 화면 출력하면서 파일 저장 watch : 명령 반복 실행. watch \u0026quot;ps aux | grep java\u0026quot; : java 프로세스 실시간 감시 검색 / 필터 # grep : 문자열 검색/필터링. ps aux | grep nginx : nginx 프로세스 검색 grep -E : 확장 정규식 검색. cat log.txt | grep -E \u0026quot;ERROR|WARN\u0026quot; : ERROR 또는 WARN 검색 find : 파일 검색. find . | grep \u0026quot;.log\u0026quot; : log 파일 검색 정렬 / 중복 # sort : 정렬. cat names.txt | sort : 이름 정렬 sort -nr : 숫자 내림차순 정렬. cat nums.txt | sort -nr : 숫자 큰 순서 정렬 uniq : 연속 중복 제거. sort names.txt | uniq : 중복 제거 uniq -c : 중복 개수 세기. sort names.txt | uniq -c : 항목별 개수 출력 컬럼 처리 # awk : 컬럼 처리/텍스트 가공. ps aux | awk '{print $1}' : 첫 번째 컬럼만 출력 awk : 계산/집계 가능. cat nums.txt | awk '{sum+=$1} END {print sum}' : 숫자 합계 계산 cut : 특정 컬럼 자르기. cat /etc/passwd | cut -d: -f1 : 사용자명만 출력 cut -c : 문자 위치 기준 자르기. echo \u0026quot;abcdef\u0026quot; | cut -c1-3 : abc 출력 column : 출력 정렬해서 보기 좋게 표시. cat data.txt | column -t : 테이블 형태 정렬 출력 column -t : 공백 기준 표처럼 정렬. ps aux | awk '{print $1, $2}' | column -t : 보기 좋게 컬럼 정렬 nl : 줄 번호 붙이기. cat file.txt | nl : 줄 번호 출력 paste : 여러 줄/파일 합치기. cat a.txt b.txt | paste - - : 두 줄씩 합쳐 출력 변환 # tr : 문자 치환/변환. echo \u0026quot;ABC\u0026quot; | tr A-Z a-z : 대문자를 소문자로 변환 sed : 문자열 치환/편집. cat file.txt | sed 's/foo/bar/g' : foo를 bar로 변경 rev : 문자열 뒤집기. echo \u0026quot;abc\u0026quot; | rev : cba 출력 개수 / 통계 # wc -l : 줄 수 세기. ls | wc -l : 파일 개수 세기 JSON 처리 # jq : JSON 파싱/가공. curl api.com | jq '.name' : JSON의 name 필드 출력 반복 실행 / 인자 전달 # xargs : 입력값을 명령어 인자로 변환. find . -name \u0026quot;*.log\u0026quot; | xargs rm : 현재 디렉토리(.)에서 이름이 .log로 끝나는 애들 찾음. =인자들임. 삭제(rm) 수행. xargs -P : 병렬 실행. cat urls.txt | xargs -P 10 curl : URL 10개 병렬 요청 🐧 /dev/null 2\u0026gt;\u0026amp;1 명령어 의미 - 완벽 이해하기\n기본 리다이렉션 # \u0026lt; : 파일 내용을 stdin으로 입력. wc -l \u0026lt; file.txt : file.txt 줄 수 계산 \u0026gt; : stdout을 파일로 덮어쓰기 저장. ls \u0026gt; files.txt : 파일 목록 저장 \u0026gt;\u0026gt; : stdout을 파일 끝에 append 저장. echo hello \u0026gt;\u0026gt; log.txt : 로그 뒤에 추가 | : stdout을 다른 프로세스 stdin으로 전달. ls | grep txt : txt 파일만 필터링 문자열 / 블록 입력 # \u0026lt;\u0026lt;\u0026lt; : 문자열 자체를 stdin으로 전달. wc -w \u0026lt;\u0026lt;\u0026lt; \u0026quot;hello world\u0026quot; : 단어 수 계산 \u0026lt;\u0026lt; : 여러 줄 문자열을 stdin으로 전달. cat \u0026lt;\u0026lt; EOF : 여러 줄 입력 전달 stderr 리다이렉션 # 2\u0026gt; : stderr를 파일로 저장. 덮어씌우기(overwrite) python app.py 2\u0026gt; error.log : 에러 로그 저장 2\u0026gt;\u0026gt; : stderr append 저장. 뒤에 추가(append) python app.py 2\u0026gt;\u0026gt; error.log : 에러 로그 뒤에 추가 2\u0026gt;\u0026amp;1 : stderr를 stdout 방향으로 합치기. python app.py \u0026gt; all.log 2\u0026gt;\u0026amp;1 : 일반 출력 + 에러 같이 저장 stdout + stderr 동시 처리 # \u0026amp;\u0026gt; : stdout + stderr 둘 다 파일 저장. python app.py \u0026amp;\u0026gt; all.log : 전체 로그 저장 |\u0026amp; : stdout + stderr 둘 다 pipe 전달. python app.py |\u0026amp; grep ERROR : 출력/에러 모두 grep 처리 출력 버리기 # /dev/null : 출력 버리는 특수 파일. ls \u0026gt; /dev/null : 출력 숨김 /dev/null + stderr : 출력 + 에러 둘 다 버리기. command \u0026gt; /dev/null 2\u0026gt;\u0026amp;1 : 모든 출력 숨김 파일 디스크립터(fd) # \u0026lt;는 0이고, \u0026gt;는 1인데 대부분 사실상 생략, 2는 에러만 따로 뽑는 용도\n0 : stdin fd. 0\u0026lt; file.txt : stdin 입력 지정 1 : stdout fd. 1\u0026gt; out.txt : stdout 저장 \u0026gt; out.txt : 위아래 동일함. 사실 1이 생략된거임. 2 : stderr fd. 2\u0026gt; err.txt : stderr 저장 텍스트 파일 생성 : touch, echo, vi\ntouch : 파일 생성 touch test.txt touch a.txt b.txt c.txt echo : 내용 작성 echo \u0026quot;hello\u0026quot; \u0026gt; test.txt vi : 편집기 생성 vi test.txt cd [destination] : 디렉토리 이동\ncd ~ : 홈 디렉토리\ncd .. : 상위 디렉토리\ncd - : 이전 디렉토리\nrm [파일명] : 파일 하나 삭제\nrmdir [폴더명] : 빈 폴더 삭제\nrm -r [파일명] : 파일 안의 내용물도 삭제\ncp [원본] [대상경로] : 복사\ncp -r project backup : 디렉토리 및 내용 복사 ss -tplan : -t, TCP 소켓만, -p, 프로세스 정보 표시, -l, LISTEN 상태만, -a, 전체 소켓 표시, -n, 이름 해석 없이 숫자로 출력\nsystemctl start/stop : 서비스 시작/중지. systemd에서 서비스 생명주기 + 부팅 설정 관리하는 도구\nsystemd = 리눅스 부팅 이후 “모든 서비스 관리하는 관리자 프로그램” journalctl : 위는 제어, 이건 로그 확인용. systemd 시스템에서 로그를 조회하고 관리하기 위한 도구\ntop : 시스템 프로세스 정보\nfree : 시스템 메모리 사용량 확인\ndmesg : Linux 커널 메시지 버퍼에 저장된 메시지를 확인할 수 있는 명령어. 커널 확인용.\ndmesg | grep -i error : HW 에러 확인 echo [내용] \u0026gt; [파일명] : 파일에 텍스트 작성(덮어쓰기)\necho [내용] \u0026gt;\u0026gt; [파일명] : 파일에 텍스트 작성(이어붙이기) cat [파일명] : 파일 내용 출력\nless [파일명] : 파일 내용을 페이지 단위로 보기\nhead [파일명] : 파일의 시작 부분 보기\ntail [파일명] : 파일의 끝 부분 보기\nrsync : 두 디렉토리/서버 간 파일 차이만 효율적으로 동기화하는 파일 복사 도구\nA파일을 B폴더에 rsync → 처음에는 A그대로 복사됨. =C파일 A파일 살짝 수정후, B폴더에 rsync → C파일에서, 바뀐 부분만 수정됨. 신입 or Jr 엔지니어 면접을 위한 리눅스 명령어 top 10\n1. Server를 어떻게 접속하는가? 사용하는 도구나 방법은? # ssh : 서버에 연결하는 명령어. 원리와 key를 확인하는 것 등 알아보기\nsudo -i : root 사용자로 로그인하는 명령어\n2,3. IP를 확인하는 명령어는? 자신의 Public IP는 어떻게 확인하는가? 웹사이트가 잘 동작하는지 check할 때 사용하는 명령어는? Curl은 언제 사용하는가? # curl [OPTIONS] [URL] : Client Url. 클라에서 url을 사용해서 서버와 데이터를 송수신하는 명령어 툴\ncurl ifconfig.co : 자신의 Public IP를 확인하는 명령어\n결국 데이터는 최종적으로 내 private IP에 도착하지만, 들어오거나 나갈 때 Public IP(ISP)를 경유하게 되어있다.\ncafe같은 데서 접속시, iptime과 같은 공유기의 웹페이지로 이동된다.\ncurl -v : verbose mode. 요청 및 응답의 상세한 정보를 터미널에 출력.\ncurl -X : HTTP 요청 메서드를 명시적으로 지정하는 옵션. default curl GET, -X 으로 변경 可\n# 기본 GET 요청 curl -X GET https://jsonplaceholder.typicode.com/posts/1 # POST 요청 - JSON 데이터 전송 curl -X POST https://jsonplaceholder.typicode.com/posts \\ -H \u0026#34;Content-Type: application/json\u0026#34; \\ -d \u0026#39;{\u0026#34;title\u0026#34;: \u0026#34;foo\u0026#34;, \u0026#34;body\u0026#34;: \u0026#34;bar\u0026#34;, \u0026#34;userId\u0026#34;: 1}\u0026#39; # POST 요청 - JSON 데이터 전송, -d option curl -X POST https://example.com -d \u0026#34;name=John\u0026amp;age=30\u0026#34; 4. Domain의 IP를 조회하는 명령어는? # nslookup : domain의 ip를 조회하는 명령어\n+root folder에 위치한, vim /etc/host → hosts 파일에서 ip주소와 호스트 이름의 매핑 정보 확인 可\n5. 웹서버 혹은 DB 같은 서버들을 확인하는 방법은? ping, telnet, nc 차이는? # ping : ICMP Protocol로 동작. 서버가 살아있는지만 확인 可\nping 8.8.8.8 or 1.1.1.1 : 인터넷 연결 확인 목적. 구글의 DNS 서버(8.8.8.8). ping을 날리면 ICMP 요청 패킷이 전달되고 구글 DNS 서버로부터 ICMP 응답 패킷을 받게 된다.\ntelnet : 로컬 영역이나 인터넷에 있는 원격 시스템의 가상 터미널(의 텍스트 기반 연결)을 제공하는 프로토콜. 주로 원격 로그인 및 원격 명령 실행에 사용. 보안상의 이유로 HTTPS, SSH 등으로 대체되는 경우가 多. TCP를 씀.\ntelnet [호스트명] [포트] ex) telnet example.com 80\nyum install telnet : 기본적으로 없는 경우가 많음. 설치후 사용가능. nc : 네트워크 관련 작업을 수행할 수 있는 다목적 도구입니다. 포트 스캐닝, 데이터 전송, 원격 쉘 생성 등 다양한 용도로 사용. TCP 또는 UDP 프로토콜을 사용하여 연결을 설정\n지정된 포트에서 데이터를 수신하고, 이를 클라이언트에게 전달. 기본적으로 데이터 스트림을 읽고 쓰는 데 사용할 수 있어, 파일 전송이나 원격 커맨드 실행에도 유용. 다양한 네트워크 작업을 스크립트에 통합하기 쉬운 유틸리티. 6. 내 서버가 잘 떠있는지, 현재 DB Connection 등을 확인하는 명령어는? # netstat : netstat(network statistics)는 전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스(네트워크 인터페이스 컨트롤러 또는 소프트웨어 정의 네트워크 인터페이스), 네트워크 프로토콜 통계를 위한 네트워크 연결을 보여주는 명령 줄 도구 → ip addr\nex) Tomcat webserver를 download해 띄운 후, 확인하면 8080 port에서 확인 가능.\nnetstat options l (listen) : 연결 가능한 상태 n (number port) : 포트 넘버 t (tcp) : tcp u (udp) : udp p : 프로그램 이름 / PID a : 모두 i : 이더넷 카드별 정상/에러/드랍 송수신 패킷 수 확인 r : 라우팅 테이블 s : 네트워크 통계 netstat -lntp : 간략화된 열람\nnetstat -an | grep [port 번호] : 특정 port로 연결된 connection 확인\n7. 특정 프로세스를 확인하는 명령어는? PID 등 확인 # ps -ef, ps aux : 어떠한 프로그램이 잘 떠있는지 확인하는 용도. tomcat이 잘 떠있나.\nex) ps -ef | grep “tomcat”\n8. CPU, Memory, Disk 등 시스템 정보 등을 확인하는 명령어는? # top\nsar 1 : 1초마다 조회\nfree -m : 메모리 사용중인 공간, 여유 공간 확인\ndf -h : GB 형태로 메모리 확인 가능\n9. 서비스들은 어떻게 관리되고, 그와 관련된 명령어는? # systemd : 일부 리눅스 배포판에서 유닉스 시스템 V나 BSD init 시스템 대신 사용자 공간을 부트스트래핑하고 최종적으로 모든 프로세스들을 관리하는 init 시스템이다. systemd라는 이름 뒤에 추가된 d는 유닉스에서의 데몬(daemon)을 나타낸다.\nsystemd의 내용은 yum, apt-get install을 사용하면 자동으로 작성된다. custom하려면 알아야함.\ninit.d : 시스템 부팅시 실행할 데몬을 설정 upstart : 시스템에서 발생하는 이벤트에 반응하여 서비스를 시작하거나 중지 ⇒ 현대의 Linux에서는 systemd로 통합되었다.\nservice : 서비스(데몬)를 관리하는 데 사용되는 명령\nservice tomcat status, start, kill\n10. Linux 파일 권한 체계를 이해하는가? chmod, chown # chmod, chown : 파일의 권한, 소유자 변경 명령어\nex) yum으로 자동 설치한 tomcat만 봐도, default 사용자가 root가 아닌 tomcat으로 되어 있다.\n11. 그 외에도 많은 명령어가 존재한다. # 리눅스 부팅 프로세스(리눅스 로그인 쉘 초기화 순서)\n리눅스에서 사용자가 로그인할 때 실행되는 쉘 초기화 파일의 실행 순서는 기본적으로 다음과 같습니다. 각 파일은 로그인 쉘과 비로그인 쉘에 따라 다르게 실행된다.\n로그인 쉘: 사용자가 시스템에 로그인할 때 시작되는 쉘 환경 변수와 사용자 설정을 초기화하는 과정이 포함된다. ex) ssh로 원격 서버에 접속하거나, tty(텍스트 모드 터미널)에서 로그인하는 경우 비로그인 쉘 : 사용자가 터미널을 열거나, 스크립트를 실행할 때 시작되는 쉘 로그인 과정 없이 바로 사용자가 설정한 환경을 사용합니다. ex) GUI에서 터미널을 열 때. /etc/profile 모든 사용자가 로그인할 때 실행되는 전역 설정 파일입니다. 시스템 전반에 걸쳐 기본 환경 변수를 설정하며, 모든 사용자의 초기 환경을 구성합니다. 이 파일은 기본적으로 모든 사용자에게 적용되며, 개인 사용자의 설정 파일이 존재하면 해당 파일로 제어를 넘깁니다. ~/.bash_profile 사용자의 홈 디렉토리에 있는 개인 설정 파일입니다. 주로 bash 로그인 쉘에서 사용됨. 일반적으로 사용자가 자신의 환경 변수를 설정하고, 시작할 프로그램이나 스크립트를 실행하기 위해 사용합니다. 우선 순위: ~/.bash_profile이 존재하지 않으면 ~/.bash_login 파일이 실행되고, 이 또한 존재하지 않으면 ~/.profile이 실행됩니다. ~/.bash_login ~/.bash_profile이 없을 경우 실행되는 파일로, 사용자별 환경 설정을 포함할 수 있다. 이 파일이 실행되면, ~/.bash_profile과 마찬가지로 사용자의 환경을 설정하는 데 사용됩니다. ~/.profile 사용자의 홈 디렉토리에 있는 또 다른 개인 설정 파일입니다. ~/.bash_profile 및 ~/.bash_login이 없을 때 실행됩니다. sh 또는 bash와 같은 POSIX 호환 쉘에서 사용되며, 환경 변수를 설정하거나 프로그램을 시작하는 데 사용됩니다. ~/.bashrc 비로그인 쉘에서 실행되는 설정 파일입니다. 일반적으로 터미널 세션을 시작할 때마다 실행됩니다. 주로 별칭, 함수, 프롬프트 설정과 같은 사용자 정의 쉘 환경을 설정합니다. 로그인 쉘에서 ~/.bash_profile이나 ~/.profile에서 ~/.bashrc를 호출하는 것이 일반적입니다. 예를 들어, ~/.bash_profile에 if [ -f ~/.bashrc ]; then . ~/.bashrc; fi와 같은 코드가 포함되어 있을 수 있습니다. /etc/bashrc 모든 사용자의 비로그인 쉘에서 실행되는 전역 설정 파일입니다. 사용자 정의 설정을 포함할 수 있으며, 일반적으로 시스템 전반에 걸쳐 기본 환경 변수를 설정합니다. 각 사용자의 ~/.bashrc에서 호출되므로, 로그인 쉘과 비로그인 쉘 모두에 적용됩니다. cron : 리눅스에서 정기적인 작업을 예약 실행하는 데 사용하는 스케줄러입니다. crontab 파일에 작업과 실행 주기를 설정하여, 특정 시간마다 스크립트나 명령을 실행할 수 있습니다.\nfdisk : 디스크 파티션을 관리하는 명령어입니다. 파티션을 생성, 삭제, 변경하는 데 사용되며, MBR 파티션 테이블을 다룹니다. GPT(GUID Partition Table)는 다른 도구(gdisk 등)로 처리된다.\n주로 파티션을 나눌 때 사용한다. mkfs : 리눅스에서 파일 시스템을 생성하는 명령어입니다. 파티션에 파일 시스템을 적용하기 위해 사용되며, mkfs.ext4, mkfs.xfs 등 다양한 파일 시스템 포맷을 지원합니다.\npartition한 HDD를 포맷하기 위해 사용한다. lvm(Logical Volume Manager) : 리눅스에서 디스크 관리를 보다 유연하게 할 수 있게 해주는 시스템입니다. 여러 디스크 파티션을 하나의 논리 볼륨으로 묶어, 파일 시스템 크기 조정이나 디스크 확장을 쉽게 할 수 있습니다.\nlvm vs. partition : partition은 저장 크기가 고정되지만 lvm은 volume이라는 단위로 저장 장치를 다룸. 스토리지의 확장,변경에 유연하며, 크기 변경시 기존 데이터의 이전이 필요 X. cloud-init : 클라우드 환경에서 가상 머신(VM)이나 인스턴스의 초기 설정을 자동화하는 도구입니다. 네트워크 설정, 패키지 설치, SSH 키 설정 등을 처리\nLinux 핵심 디렉토리 구조 정리\n리얼리눅스 레벨업 챌린지 - 간단실습 # iproute2 vs net-tools Comparison : net-tools(ifconfig / route / netstat) → iproute2(ip addr / ip route / ss) - 성능 더 좋아짐.\n알아둘 명령어(what they can do) : iptables, nc/nmap\nwhatis vs. man : 명령어 한 줄 간단 설명 / 메뉴얼 길게 포트번호 80번 충돌문제 어떻게 해결하죠? : netstat로 확인 → netstat systemctl stop nginx → start, status 8080 포트번호 어떻게 차단하나요 ? : 레벨업 챌린지(웹기반 리눅스 실습) → iptables(Linux 기본 방화벽) / nc nc → 특정 포트에 “직접 연결” nc -l 8080 \u0026amp; : 스트용으로 포트 8080 리스너 실행 가능 → 실제 연결 : sudo ss -tplan | grep 8080 iptables : sudo iptables -A INPUT -p tcp --dport 8080 -j DROP : 특정 포트(8080) 차단 규칙 추가, reject 메시지 줄 수도 있음. = AWS Security Group에 상응. nc로 연결 테스트 : nc -vz 127.0.0.1 8080 nmap → 여러 포트를 “탐색/정찰” ","externalUrl":null,"permalink":"/posts/linux-commands/","section":"Posts","summary":"","title":"Linux Commands","type":"posts"},{"content":"","externalUrl":null,"permalink":"/categories/osi7/","section":"Categories","summary":"","title":"OSI7","type":"categories"},{"content":" 네트워크 통신이란 : 네트워크 스택이 계층별로 헤더를 벗기면서 L7까지 전달하는 구조.\nIP는 패킷을 수신지과지 전달하기 위해 사용되는 프로토콜이다. 패킷은 우체국에서 소포나 꾸러미에서 유래. 헤더 / 페이로드 / 트레일러로 구성. 헤더 : 어디로 보낼지 / 어떻게 처리할지 페이로드 : 실제 데이터. 위의 계층에서 내려온 패킷을 페이로드 삼아서 캡슐화가 이루어진다. 트레일러 : 전송 중에 데이터 손실과 같은 오류가 발생했는지, 체크섬. FCS(Frame Check Sequence) : CRC(Cyclic Redundancy Check) 방식을 사용하여 데이터가 전송 중 변경되었는지 확인한다. 에러가 검출되면 해당 프레임은 버려진다. 신호 손상: L1 - L1은 “비트를 보내고 받는 방식” 자체가 중심. 오류 검출: L2 (Ethernet Frame의 FCS) - “이 전체 프레임이 논리적으로 멀쩡한가?” 판단은 L2가 담당. 네트워크 성능 지표 : 처리율(Throughput), 대역폭(Bandwidth), 패킷 손실(Packet Loss) 처리율 : 단위 시간당 네트워크를 통해 실제로 전송되는 정보량. bps, Gbps, pps 대역폭 : 통신 매체를 통해 송수신말 수 있는 최대 정보량 ","externalUrl":null,"permalink":"/posts/osi7/","section":"Posts","summary":"OSI 7 Layer","title":"OSI7","type":"posts"},{"content":"","externalUrl":null,"permalink":"/kr/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/kr/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"}]