Tech Artifacts/Linux

Linux - 08. package

rpm -i로 설치하면 왜 의존성 에러가 나는가 — RPM과 dnf의 역할 분담nginx를 설치하려고 rpm -i nginx.rpm을 쳤더니 의존성 에러로 실패한다. 왜? RPM은 의존성을 풀어주지 않는다. 단순 설치만 한다. 의존성 해결은 dnf의 일이다. 그래서 로컬 .rpm 파일도 dnf install ./pkg.rpm으로 설치해야 dnf가 의존성까지 처리한다.이 글은 Rocky 10이 패키지를 어떻게 관리하는지 다룬다 — RPM(포장 형식 + 저수준 도구)과 dnf(앱스토어 관리자)의 역할 분담, 그리고 Rocky 10의 두 가지 큰 변화: dnf5 전환과 modularity 폐지. 이 변화를 모르면 구형 자료의 명령이 Rocky 10에서 동작하지 않는다.RPM과 dnf는 역할이 다르다 역할비유R..

Tech Artifacts/Linux

Linux - 07. shell script

ls *.txt에서 별을 처리하는 건 ls가 아니다 — 셸과 확장ls *.txt를 친다. ls가 *.txt를 처리할까? 아니다. 셸이 먼저 *.txt를 a.txt b.txt c.txt로 펼쳐서(확장) ls에 넘긴다. ls는 이미 펼쳐진 파일 이름만 받는다. 이 사실을 모르면 셸 스크립트의 이상한 동작 원인을 평생 못 찾는다.셸은 단순한 명령 실행기가 아니다. 명령을 해석하고, 변수·glob·산술을 치환(확장)하며, 파이프·리다이렉션·제어문까지 처리하는 인터프리터다. cron, systemd unit, 배포 스크립트, 설정 자동화 — 리눅스 관리의 상당수가 셸 기반이다. 이 글은 셸이 명령을 어떻게 해석하는지, 그리고 그 해석을 스크립트로 어떻게 묶는지를 다룬다.셸은 명령 번역사다flowchart LR ..

Tech Artifacts/Linux

Linux - 06. io device

SSD, 키보드, 네트워크 카드를 같은 방식으로 다룬다 — 장치 추상화와 LVM서버에 디스크를 하나 더 꽂았다. 이제 공간이 모자라니 LVM으로 볼륨을 늘리고 싶다. 그런데 스크립트가 /dev/sda1을 찾는데 실제는 /dev/nvme0n1p1이라 실패한다 — 왜 이름이 다르지? 또 모든 드라이버를 커널에 넣지 않고도 필요할 때만 쓸 수 있는데, 어떻게?이 글은 리눅스가 수십~수백 종의 하드웨어를 일관되게 다루는 방식(장치 파일 추상화)과, 고정된 물리 디스크를 유연하게 쪼개고 합치는 방식(LVM)을 다룬다. 서버 운영 일상 — 디스크 추가, LVM 확장, 드라이버 적재 — 의 기반을 잡는다.하드웨어도 파일이다 — 장치 파일과 major/minor리눅스는 "모든 것은 파일" 원칙에 따라 하드웨어를 /de..

Tech Artifacts/Linux

Linux - 05. filesystem

inode에는 파일 이름이 없다 — 파일 시스템이 감추는 것"Permission denied"가 떴다. 파일 권한을 고쳤는데도 안 된다. 왜? 종종 진짜 원인은 파일이 아니라 부모 디렉토리에 있다. 또 디스크에 공간이 남았는데 파일이 안 만들어진다 — 이번엔 inode가 다 떨어졌기 때문이다. 이런 일들은 파일 시스템이 실제로 어떻게 돌아가는지를 모르면 진단할 수 없다.리눅스는 "모든 것은 파일"이라고 한다. 그런데 디스크는 그냥 0과 1의 블록 덩어리다. 이 블록들을 어떻게 "이름 있는 파일"로 조직하고, 누가 접근할지 통제하는가 — 이 글이 푸는 질문이다."모든 것은 파일" — VFS 추상화리눅스는 디스크 파일, 하드웨어 장치, 프로세스 정보, 네트워크 소켓까지 모두 파일로 다룬다. 그래서 같은 도구..

Tech Artifacts/Linux

Linux - 04. memory

각 프로세스는 수십 TB 메모리를 독점한다고 착각한다 — 가상 메모리의 속임서버에서 free를 치면 "free가 거의 없다"고 나온다. 메모리 부족인가, 패닉할 일인가? 보통 아니다. 또 누군가 malloc(1GB)를 호출하면 즉시 1GB RAM이 사라질까? 그것도 아니다. 두 사실 모두 리눅스 메모리 관리가 만들어내는 환상의 결과다.이 글은 그 환상을 다룬다 — 각 프로세스가 "자기만의 거대한 주소 공간"을 독점하는 듯 보이게 만드는 가상 메모리, RAM이 부족할 때 디스크까지 끌어쓰는 swap, 그리고 모조리 고갈됐을 때 시스템을 살리기 위해 프로세스를 죽이는 OOM killer까지. 이 셋을 모르면 free/vmstat 숫자를 읽을 수 없고, "서버가 느린데 CPU는 한가하다" 같은 메모리 병목을 ..

Tech Artifacts/Linux

Linux - 03. process

수백 개 프로그램이 코어 몇 개를 나눠 쓰는 법 — 프로세스와 스케줄러컴퓨터를 켜면 웹 브라우저, 셸, SSH 서버, 시스템 모니터까지 수십 ~ 수백 개 프로그램이 "동시에" 돌아간다. 하지만 CPU 코어는 보통 4 ~ 16개뿐이다. 어떻게 가능할까?정답은 CPU를 매우 빠르게 번갈아 쓰기 때문이다. 1초에 수천 번 문맥(context)을 바꿔가며 각 프로그램에 조금씩 CPU를 나눠준다. 사람 눈엔 "동시에" 보이지만, 실은 빠른 교대 실행일 뿐이다. 이 교대를 가능하게 하는 두 추상 — 프로세스(독립된 메모리 방을 가진 실행 단위)와 스케줄러(수백 개 중 지금 누구를 CPU에 올릴지 고르는 커널의 판관) — 가 이 글의 주제다.이 둘을 모르면 "프로세스가 응답 없다", "좀비가 쌓인다", "CPU를 하..

Archive

'분류 전체보기' 26

Tech Artifacts/Linux

Linux - 08. package

rpm -i로 설치하면 왜 의존성 에러가 나는가 — RPM과 dnf의 역할 분담nginx를 설치하려고 rpm -i nginx.rpm을 쳤더니 의존성 에러로 실패한다. 왜? RPM은 의존성을 풀어주지 않는다. 단순 설치만 한다. 의존성 해결은 dnf의 일이다. 그래서 로컬 .rpm 파일도 dnf install ./pkg.rpm으로 설치해야 dnf가 의존성까지 처리한다.이 글은 Rocky 10이 패키지를 어떻게 관리하는지 다룬다 — RPM(포장 형식 + 저수준 도구)과 dnf(앱스토어 관리자)의 역할 분담, 그리고 Rocky 10의 두 가지 큰 변화: dnf5 전환과 modularity 폐지. 이 변화를 모르면 구형 자료의 명령이 Rocky 10에서 동작하지 않는다.RPM과 dnf는 역할이 다르다 역할비유R..

댓글
Tech Artifacts/Linux

Linux - 07. shell script

ls *.txt에서 별을 처리하는 건 ls가 아니다 — 셸과 확장ls *.txt를 친다. ls가 *.txt를 처리할까? 아니다. 셸이 먼저 *.txt를 a.txt b.txt c.txt로 펼쳐서(확장) ls에 넘긴다. ls는 이미 펼쳐진 파일 이름만 받는다. 이 사실을 모르면 셸 스크립트의 이상한 동작 원인을 평생 못 찾는다.셸은 단순한 명령 실행기가 아니다. 명령을 해석하고, 변수·glob·산술을 치환(확장)하며, 파이프·리다이렉션·제어문까지 처리하는 인터프리터다. cron, systemd unit, 배포 스크립트, 설정 자동화 — 리눅스 관리의 상당수가 셸 기반이다. 이 글은 셸이 명령을 어떻게 해석하는지, 그리고 그 해석을 스크립트로 어떻게 묶는지를 다룬다.셸은 명령 번역사다flowchart LR ..

댓글
Tech Artifacts/Linux

Linux - 06. io device

SSD, 키보드, 네트워크 카드를 같은 방식으로 다룬다 — 장치 추상화와 LVM서버에 디스크를 하나 더 꽂았다. 이제 공간이 모자라니 LVM으로 볼륨을 늘리고 싶다. 그런데 스크립트가 /dev/sda1을 찾는데 실제는 /dev/nvme0n1p1이라 실패한다 — 왜 이름이 다르지? 또 모든 드라이버를 커널에 넣지 않고도 필요할 때만 쓸 수 있는데, 어떻게?이 글은 리눅스가 수십~수백 종의 하드웨어를 일관되게 다루는 방식(장치 파일 추상화)과, 고정된 물리 디스크를 유연하게 쪼개고 합치는 방식(LVM)을 다룬다. 서버 운영 일상 — 디스크 추가, LVM 확장, 드라이버 적재 — 의 기반을 잡는다.하드웨어도 파일이다 — 장치 파일과 major/minor리눅스는 "모든 것은 파일" 원칙에 따라 하드웨어를 /de..

댓글
Tech Artifacts/Linux

Linux - 05. filesystem

inode에는 파일 이름이 없다 — 파일 시스템이 감추는 것"Permission denied"가 떴다. 파일 권한을 고쳤는데도 안 된다. 왜? 종종 진짜 원인은 파일이 아니라 부모 디렉토리에 있다. 또 디스크에 공간이 남았는데 파일이 안 만들어진다 — 이번엔 inode가 다 떨어졌기 때문이다. 이런 일들은 파일 시스템이 실제로 어떻게 돌아가는지를 모르면 진단할 수 없다.리눅스는 "모든 것은 파일"이라고 한다. 그런데 디스크는 그냥 0과 1의 블록 덩어리다. 이 블록들을 어떻게 "이름 있는 파일"로 조직하고, 누가 접근할지 통제하는가 — 이 글이 푸는 질문이다."모든 것은 파일" — VFS 추상화리눅스는 디스크 파일, 하드웨어 장치, 프로세스 정보, 네트워크 소켓까지 모두 파일로 다룬다. 그래서 같은 도구..

댓글
Tech Artifacts/Linux

Linux - 04. memory

각 프로세스는 수십 TB 메모리를 독점한다고 착각한다 — 가상 메모리의 속임서버에서 free를 치면 "free가 거의 없다"고 나온다. 메모리 부족인가, 패닉할 일인가? 보통 아니다. 또 누군가 malloc(1GB)를 호출하면 즉시 1GB RAM이 사라질까? 그것도 아니다. 두 사실 모두 리눅스 메모리 관리가 만들어내는 환상의 결과다.이 글은 그 환상을 다룬다 — 각 프로세스가 "자기만의 거대한 주소 공간"을 독점하는 듯 보이게 만드는 가상 메모리, RAM이 부족할 때 디스크까지 끌어쓰는 swap, 그리고 모조리 고갈됐을 때 시스템을 살리기 위해 프로세스를 죽이는 OOM killer까지. 이 셋을 모르면 free/vmstat 숫자를 읽을 수 없고, "서버가 느린데 CPU는 한가하다" 같은 메모리 병목을 ..

댓글
Tech Artifacts/Linux

Linux - 03. process

수백 개 프로그램이 코어 몇 개를 나눠 쓰는 법 — 프로세스와 스케줄러컴퓨터를 켜면 웹 브라우저, 셸, SSH 서버, 시스템 모니터까지 수십 ~ 수백 개 프로그램이 "동시에" 돌아간다. 하지만 CPU 코어는 보통 4 ~ 16개뿐이다. 어떻게 가능할까?정답은 CPU를 매우 빠르게 번갈아 쓰기 때문이다. 1초에 수천 번 문맥(context)을 바꿔가며 각 프로그램에 조금씩 CPU를 나눠준다. 사람 눈엔 "동시에" 보이지만, 실은 빠른 교대 실행일 뿐이다. 이 교대를 가능하게 하는 두 추상 — 프로세스(독립된 메모리 방을 가진 실행 단위)와 스케줄러(수백 개 중 지금 누구를 CPU에 올릴지 고르는 커널의 판관) — 가 이 글의 주제다.이 둘을 모르면 "프로세스가 응답 없다", "좀비가 쌓인다", "CPU를 하..

댓글

wall

방명록

방문 흔적을 남겨주세요. 질문이나 인사 모두 환영합니다.