리눅스는 서버 운영, 개발 환경 구축, 클라우드 인프라, 네트워크 실습에서 많이 사용되는 운영체제.
우리는 보통 윈도우나 macOS 같은 운영체제에 익숙한 편.
리눅스도 이들과 비슷하게 컴퓨터의 하드웨어와 소프트웨어를 관리하는 운영체제.
다만 일반 사용자용 PC보다 서버 환경에서 더 많이 사용된다는 특징.
웹 서버, 애플리케이션 서버, 데이터베이스 서버처럼 실제 서비스를 운영하는 환경에서는
리눅스를 사용하는 경우가 많음.
따라서 인프라 엔지니어, 클라우드 엔지니어, 네트워크 엔지니어, 백엔드 개발자라면 리눅스에 익숙해져야 함.
리눅스는 단순한 공부용 운영체제가 아니라 실제 서비스 운영 환경에서 많이 사용되는 실무형 운영체제.
리눅스란
리눅스란 컴퓨터의 하드웨어와 소프트웨어를 관리하는 운영체제.
우리가 평소에 사용하는 윈도우나 macOS처럼 리눅스도 운영체제의 한 종류.
운영체제는 사용자가 컴퓨터를 편하게 사용할 수 있도록
CPU, 메모리, 디스크, 네트워크 같은 자원을 관리하는 소프트웨어.
정확히 말하면 리눅스는 운영체제 전체를 의미한다기보다 리눅스 커널을 의미하는 용어.
커널이란 운영체제의 중심에서 하드웨어를 제어하는 핵심 소프트웨어.
하지만 우리가 실제로 사용하는 리눅스는 커널만 있는 형태가 아님.
리눅스 커널에 기본 명령어, 패키지 관리 도구, 애플리케이션, 사용자 환경 등을 함께 묶어서 사용할 수 있게 만든 형태가
일반적인 리눅스 운영체제.
실무에서 “리눅스를 사용한다”라고 말할 때는 대부분 Ubuntu, Debian, Rocky Linux, RHEL 같은
리눅스 배포판을 사용한다는 의미.
리눅스가 중요한 이유는 서버 운영체제로 매우 많이 사용되기 때문.
우리가 자주 사용하는 웹 서비스도 대부분 리눅스 서버 위에서 동작.
웹 서버, 애플리케이션 서버, 데이터베이스 서버의 운영체제로 리눅스를 사용하는 것이 일반적.
따라서 엔지니어라면 리눅스를 당연히 다룰 줄 알아야 하며, 기본 명령어와 서버 환경에 익숙해질 필요성.
또한 리눅스는 개발 환경 구축이 쉽고 비용이 거의 들지 않는 운영체제.
오픈 소스 운영체제이기 때문에 내부 동작을 확인할 수 있고, 운영체제와 서버 구조를 공부하기에도 좋은 환경.
그래서 리눅스는 프로그래밍 학습, 서버 실습, 네트워크 실습, 클라우드 실습 환경으로 많이 활용.
리눅스의 장점
리눅스의 첫 번째 장점은 오픈 소스라는 점.
오픈 소스란 소스 코드가 공개되어 있어 누구나 자유롭게 사용하고 수정할 수 있는 방식.
리눅스는 무료로 사용할 수 있고, 필요하면 내부 구조를 확인하거나 수정하는 것도 가능.
두 번째 장점은 높은 품질의 다양한 소프트웨어를 리눅스에서 사용할 수 있다는 점.
웹 서버로 많이 사용하는 Apache와 Nginx,
데이터베이스인 MySQL과 PostgreSQL,
컨테이너 도구인 Docker 같은 소프트웨어가 리눅스 환경에서 널리 사용.
세 번째 장점은 신뢰성이 높다는 점.
리눅스는 전 세계의 많은 서버에서 오랫동안 사용된 운영체제.
서버는 한 번 켜지면 오랜 시간 안정적으로 동작해야 하므로 운영체제의 안정성이 매우 중요.
리눅스는 이런 서버 환경에서 많이 검증된 운영체제.
네 번째 장점은 자동화에 강하다는 점.
리눅스에서는 명령어와 스크립트를 사용해 반복 작업을 자동화할 수 있음.
예를 들어 로그 정리, 백업, 서버 상태 확인, 프로그램 실행 같은 작업을 명령어로 처리 가능.
반복되는 작업을 사람이 직접 클릭하는 대신 스크립트로 만들어 실행할 수 있기 때문에 운영에 편리.
이러한 이유로 리눅스는 서버 운영, 개발 환경, 클라우드 인프라, 네트워크 장비 관리에서 많이 사용.
리눅스의 단점
리눅스에도 단점은 존재.
첫 번째 단점은 윈도우나 macOS에 비해 상용 애플리케이션이 많지 않다는 점.
예를 들어 Microsoft Word나 Excel 같은 프로그램은 리눅스에서 기본적으로 사용하기 어려움.
문서 파일을 편집해야 할 때는 LibreOffice 같은 대체 프로그램을 사용하는 경우가 많음.
두 번째 단점은 멀티미디어 작업에 불편함이 있을 수 있다는 점.
이미지, 음악, 영상 편집 소프트웨어는 윈도우나 macOS 환경이 더 편한 경우가 많음.
세 번째 단점은 초보자에게 진입 장벽이 있다는 점.
리눅스는 공식 문서나 오류 해결 자료가 영어로 되어 있는 경우가 많음.
또한 소프트웨어에 따라 한글 문자가 깨지거나 입력 환경 설정이 필요한 경우도 존재.
CLI 환경에 익숙하지 않은 사용자라면 처음에는 명령어 기반 작업이 어렵게 느껴질 수 있음.
하지만 서버 운영이나 인프라 분야를 공부한다면 이러한 불편함보다 리눅스가 제공하는 장점이 훨씬 큼.
결국 리눅스는 일반 사무용 PC 운영체제라기보다 서버 운영과 개발 환경에 강한 운영체제.
리눅스 환경 준비
리눅스를 공부하기 위해서는 먼저 어떤 리눅스 배포판을 사용할지 정해야 함.
리눅스는 하나의 고정된 제품이 아니라 여러 배포판으로 나뉘어 있는 운영체제.
배포판마다 패키지 관리 방식, 기본 설정, 사용 목적이 조금씩 다름.
처음 리눅스를 공부한다면 자료가 많고 설치가 쉬운 Ubuntu를 사용하는 것이 좋은 선택.
Ubuntu는 Debian 계열의 리눅스 배포판이며, 초보자가 리눅스 기본 명령어와 서버 환경을 익히기에 적합.
또한 클라우드 서버, 개발 환경, Docker 실습, 네트워크 실습에서도 자주 사용되는 배포판.
배포판이란
배포판이란 리눅스 커널과 기본 프로그램을 묶어서 사용자가 바로 사용할 수 있게 만든 운영체제 패키지.
원래 리눅스라는 말은 리눅스 커널만을 의미.
커널은 운영체제의 중심에서 하드웨어를 제어하는 역할을 담당하는 소프트웨어.
하지만 커널만 있다고 해서 사용자가 바로 컴퓨터를 사용할 수 있는 것은 아님.
파일을 관리하는 명령어, 프로그램을 설치하는 도구, 네트워크 설정 도구, 사용자 관리 기능 등이 함께 필요.
이러한 요소들을 리눅스 커널과 함께 묶어 배포하는 것이 리눅스 배포판.
대표적인 리눅스 배포판 계열에는 Red Hat 계열과 Debian 계열 존재.
Red Hat 계열에는 RHEL, CentOS Stream, Rocky Linux, AlmaLinux 등이 있음.
Debian 계열에는 Debian, Ubuntu 등이 있음.
서버 운영 실무에서는 Red Hat 계열이 많이 사용되며, 학습과 개발 환경에서는 Ubuntu가 많이 사용.
본인은 Debian 계열의 Ubuntu로 리눅스를 공부할 예정.
Ubuntu는 설치가 쉽고 자료가 많으며, 처음 리눅스를 배우기에 편리한 배포판.
GUI와 CLI
리눅스를 공부할 때 반드시 알아야 하는 개념이 GUI와 CLI.
GUI는 Graphical User Interface의 줄임말.
화면에 보이는 아이콘, 창, 메뉴 등을 마우스나 터치패드로 클릭해서 컴퓨터에 명령을 내리는 방식.
우리가 윈도우나 macOS에서 주로 사용하는 방식이 GUI.
CLI는 Command Line Interface의 줄임말.
키보드로 명령어를 입력하고, 결과가 문자열로 출력되는 방식.
GUI는 눈에 보이는 화면을 클릭해서 조작하는 방식이고, CLI는 명령어를 직접 입력해서 조작하는 방식.
예를 들어 a.txt 파일을 b.txt 파일로 복사해야 하는 상황을 생각해볼 수 있음.
GUI에서는 파일 아이콘을 클릭한 뒤 마우스 오른쪽 버튼을 눌러 복사하고 붙여넣기 가능.
또는 Ctrl + C, Ctrl + V 사용 가능.
하지만 CLI에서는 다음 명령어 하나로 파일 복사 가능.
cp a.txt b.txt
여기서 cp는 copy의 줄임말.
a.txt 파일을 b.txt라는 이름으로 복사하라는 의미.
처음 CLI를 접하면 GUI보다 불편하게 느껴질 수 있음.
하지만 리눅스를 제대로 다루려면 CLI에 익숙해질 필요성.
서버 환경에서는 GUI가 없는 경우도 많고, 대부분의 작업을 명령어로 처리하기 때문.
높은 작업 효율
CLI를 사용하는 첫 번째 이유는 높은 작업 효율.
예를 들어 어떤 디렉터리에서 이름이 a로 시작하는 파일을 전부 확인해야 하는 상황.
GUI에서는 파일 이름을 눈으로 하나씩 확인하면서 선택해야 함.
파일이 10개 정도라면 괜찮지만 100개, 1000개가 되면 매우 불편.
하지만 CLI에서는 다음 명령어 입력.
ls a*
여기서 ls는 list의 줄임말.
현재 디렉터리의 파일 목록을 출력하는 명령어.
a*는 a로 시작하는 모든 이름을 의미.
따라서 ls a*는 a로 시작하는 파일이나 디렉터리를 출력하라는 의미.
이처럼 CLI를 사용하면 많은 파일을 빠르게 찾거나 처리 가능.
서버에서는 파일 개수가 많고 로그도 많이 쌓이기 때문에 CLI의 작업 효율이 중요.
프로그램 간 연동
CLI를 사용하는 두 번째 이유는 프로그램 간 연동의 용이성.
리눅스에서는 작은 프로그램들을 서로 연결해서 더 크고 복잡한 작업을 수행 가능.
이것은 Unix 철학과도 관련된 개념.
Unix 철학은 하나의 프로그램이 한 가지 일을 잘하게 만들고, 여러 프로그램을 조합해서 복잡한 일을 처리하는 방식.
대표적인 기능이 파이프.
파이프는 | 기호로 사용.
파이프는 앞 명령어의 출력 결과를 뒤 명령어의 입력으로 넘겨주는 역할.
예를 들어 다음 명령어 확인.
grep "abc" sample.txt | sort
여기서 grep은 파일 안에서 특정 문자열을 찾는 명령어.
sample.txt 파일에서 abc라는 문자열이 들어간 줄을 찾는 역할.
sort는 입력받은 내용을 정렬하는 명령어.
따라서 이 명령어는 sample.txt 파일에서 abc가 들어간 줄을 찾고, 그 결과를 정렬해서 출력하라는 의미.
GUI에서는 이런 식으로 프로그램의 입출력을 직접 연결하기 어려움.
하지만 CLI에서는 여러 명령어를 조합해서 강력한 작업 흐름을 만들 수 있음.
처리 자동화
CLI를 사용하는 세 번째 이유는 처리 자동화에 유리하다는 점.
CLI에서는 실행할 명령어들을 파일에 기록해두고 한 번에 실행 가능.
이런 파일을 보통 셸 스크립트라고 부름.
셸 스크립트는 반복해서 실행해야 하는 명령어들을 저장해두는 자동화 파일.
예를 들어 서버 상태 확인, 로그 정리, 백업, 프로그램 실행 명령어를 하나의 파일에 저장 가능.
그러면 매번 명령어를 직접 입력하지 않고 파일 하나를 실행해서 같은 작업을 반복 가능.
GUI에서는 반복되는 작업을 사람이 직접 클릭하면서 수행해야 하는 경우가 많음.
하지만 CLI에서는 명령어를 조합하고 파일로 저장해 자동화 가능.
서버 운영에서 자동화가 중요한 이유는
실수를 줄이고, 시간을 줄이고, 같은 작업을 항상 같은 방식으로 실행할 수 있기 때문.
리눅스 간단 명령어 몇 개
리눅스를 처음 공부할 때 알아두면 좋은 기본 명령어 몇 가지.
첫 번째는 슈퍼 사용자로 전환하는 명령어.
sudo su -
sudo는 관리자 권한으로 명령어를 실행할 때 사용하는 명령어.
su는 switch user 또는 substitute user의 의미로, 다른 사용자로 전환할 때 사용하는 명령어.
뒤에 붙은 - 기호는 해당 사용자의 로그인 환경까지 함께 불러오겠다는 의미.
따라서 sudo su -는 관리자 권한으로 root 사용자 환경에 들어가겠다는 의미.
root 사용자는 리눅스에서 가장 강한 권한을 가진 관리자 계정.
다만 실무에서는 항상 root 사용자로 작업하기보다 필요한 명령어 앞에 sudo를 붙여 실행하는 방식이 더 안전.
두 번째는 시스템을 종료하는 명령어.
shutdown -h now
shutdown은 시스템을 종료하거나 재부팅할 때 사용하는 명령어.
-h는 halt의 줄임말로, 시스템을 멈추고 종료하라는 의미.
now는 지금 바로 실행하라는 의미.
따라서 shutdown -h now는 지금 바로 시스템을 종료하라는 명령어.
서버 환경에서는 시스템 종료가 서비스 중단으로 이어질 수 있으므로 자주 사용하는 명령어는 아님.
실행하기 전에 반드시 종료해도 되는 상황인지 확인 필요.
세 번째는 시스템을 재부팅하는 명령어.
shutdown -r now
-r은 reboot의 줄임말.
시스템을 종료하지 않고 다시 시작하라는 의미.
따라서 shutdown -r now는 지금 바로 시스템을 재부팅하라는 명령어.
서버 설정을 변경한 뒤 재부팅이 필요한 경우 사용할 수 있음.
하지만 재부팅도 서비스 중단을 만들 수 있으므로 서버에서는 신중하게 사용해야 하는 명령어.
정리
리눅스는 서버 운영, 개발 환경 구축, 클라우드 인프라, 네트워크 실습에서 매우 중요한 운영체제.
정확히 말하면 리눅스는 커널을 의미하고, 우리가 실제로 사용하는 것은 커널과 여러 도구를 묶은 리눅스 배포판.
리눅스의 장점은 오픈 소스, 무료 사용, 높은 안정성, 다양한 서버용 소프트웨어, 자동화에 강하다는 점.
리눅스의 단점은
상용 프로그램이 적고, 멀티미디어 작업이 불편할 수 있으며, 초보자에게 CLI와 영어 문서가 어렵게 느껴질 수 있다는 점.
리눅스를 제대로 공부하려면 GUI보다 CLI에 익숙해지는 것이 중요.
CLI는 처음에는 불편하지만 파일 관리, 프로그램 연동, 반복 작업 자동화에서 강력한 장점.
결국 리눅스는 단순히 운영체제 하나를 배우는 것이 아니라 서버와 인프라를 다루기 위한 기본기.