본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Contents

Chapter 1: GNU/Linux 시작하기

Section 1.1: 유용한 단축키들

Section 1.2: 파일 관리 명령어들

Section 1.3: Hello World 출력하기

Section 1.4: 기본적인 리눅스의 유틸리티들

Section 1.5: 파일 이름과 내용에 해당하는 패턴을 통해 파일 검색하기

Section 1.6: 파일 조작하기

Section 1.:: 파일과 디렉토리의 세부 정보 확인하기

Chapter 2: Linux 배포판 이름과 버전 확인하기

Section 2.1: 사용중인 시스템이 어떤 debian 기반 배포판인지 확인하기

Section 2.2: 사용중인 시스템이 어떤 systemd 기반 배포판인지 확인하기

Section 2.3: 사용중인 시스템이 어떤 RHEL / CentOS / Fedora 기반 배포판인지 확인하기

Chapter 3: 동작중인 Linux 커널에 대한 정보를 얻어오기

Section 3.1: Linux kernel 상세 정보를 확인하기

Chapter 4: 쉘

Section 4.1: 기본 쉘 변경하기

Section 4.2: 기본적인 쉘 유틸리티들

Section 4.3: 사용자만의 명령어 별칭 (Alias) 생성하기

Section 4.4: 시스템에 존재하는 파일 위치 찾기

Chapter 5: 디스크 사용량 확인하기

Section 5.1: 디렉토리들의 디스크 사용량 조사하기

Section 5.2: 디스크 공간 확인하기

Chapter 6: 시스템 정보 얻어오기

Section 6.1: CPU, 메모리, 네트웍 및 디스크 (I/O 작업) 관련 통계치 확인하기

Section 6.2: lscpu 와 lshw 도구 사용하기

Section 6.3: 하드웨어 정보 열람하기

Section 6.4: CPU 모델/속도 정보 확인하기

Section 6.5: 프로세스를 모니터링하고 정보를 수집하기

Chapter 7: ls 명령어

Section 7.1: ls 명령어의 옵션들

Section 7.2: 가장 많이 사용되는 ls 명령어의 옵션들 알아보기

Chapter 8: 'tar' 명령어를 통한 파일 압축

Section 8.1: 디렉토리 압축하기

Section 8.2: archive 로부터 내용물 추출하기

Section 8.3: archive 내용물 목록 확인하기

Section 8.4: archive 의 내용물 확인하기

Section 8.5: 일부 디렉토리를 제외하고 archive 만들기

Section 8.6: 파일 경로 일부를 제외하고 tar 압축 해제하기

Chapter 9: 서비스들

Section 9.1: Ubuntu 에서 동작중인 service 목록 확인하기

Section 9.2: systemd 서비스 관리하기

Chapter 10: 서비스들 관리하기

Section 10.1: 서비스에서 발생한 문제점 진단하기

Section 10.2: 서비스를 시작하고 중지시키기

Section 10.3: 서비스의 상태 확인하기

Chapter 11: 사용자 정보 수정하기

Chapter 12: LAMP 스택

Section 12.2: Ubuntu 에서 LAMP 설치하기

Section 12.3: CentOS 에서 LAMP 스택 설치하기

Chapter 13: tee 명령어

Section 13.1: 출력 결과를 stdout 및 파일에 기록하기

Section 13.2: Pipe chain 중간에서 출력 결과를 파일에 기록하고 다음 pipe 에도 전달하기

Section 13.3: 출력 결과를 복수의 파일에 기록하기

Section 13.4: tee 명령어가 기존 파일에 내용을 추가 (append) 하도록 설정하기

Chapter 14: Secure Shell (SSH)

Section 14.1: 원격 서버에 ssh 접속하기

Section 14.2: OpenSSH 도구 모음 (suite) 설치하기

Section 14.3: SSH 서버가 접속을 처리할 수 있게 설정하기

Section 14.4: 암호를 사용하지 않고 (key pair 를 이용하여) 접속하기

Section 14.5: public 및 private key 생성하기

Section 14.6: ssh 서비스를 비활성화 (disable) 하기

Chapter 15: SCP

Section 15.1: Secure Copy

Section 15.2: 기본적인 scp 사용법

Chapter 16: GnuPG (GPG)

Section 16.1: 사용자의 public key 를 내보내기 (export)

Section 16.2: GnuPG key 를 빠르게 생성하고 사용하기

Chapter 17: 네트워크 구성하기 (Configuration)

Section 17.1: 로컬 DNS 변환 (resolution)

Section 17.2: 도메인 이름 변환 (resolution) 을 위한 DNS 서버 정보 설정하기

Section 17.3: 라우팅 경로 정보를 확인하고 변경하기

Section 17.4: 사용자 네트웍상의 다른 시스템을 지칭하는 호스트 이름 설정하기

Section 17.5: 네트워크 인터페이스 세부 사항

Section 17.6: 네트워크 인터페이스에 IP 추가하기

Chapter 18: Midnight Commander

Section 18.1: Midnight Commander 의 열람 (browsing) 모드에서의 function key 소개

Section 18.2: Midnight Commander 의 파일 편집 모드에서의 function key 소개

Chapter 19: Root 디렉토리 변경하기 (chroot)

Section 19.1: Root 디렉토리 변경하기 (chroot)

Section 19.2: 특정 디렉토리로 Root 디렉토리 변경하기

Section 19.3: chroot 사용이 권장되는 상황들

Chapter 20: 패키지 관리자들

Section 20.1: apt 패키지 매니저를 통해 패키지들 갱신하기

Section 20.2: pacman 패키지 매니저를 통해 패키지 설치하기

Section 20.3: pacman 패키지 매니저를 통해 패키지 업데이트하기

Section 20.4: yum 을 통해 패키지들 업데이트하기

Chapter 21: 리눅스 커널 컴파일하기

Section 21.1: Ubuntu 에서 리눅스 커널 컴파일하기

[출처] https://books.goalkicker.com/LinuxBook/ (CC BY-SA)

반응형

Section 21.1: Ubuntu 에서 리눅스 커널 컴파일하기

주의: 사용자의 시스템에 최소 15 GB 이상의 여유공간이 확보되어 있어야 한다.

Ubuntu 13.04 이상에서의 컴파일 방법들

선택지 A) Git 활용하기

항상 가장 최신의 Ubuntu 커널 소스를 사용하고 싶다면, git 을 사용하는 것이 좋은 선택지가 될 수 있다. 상세한 설명서는 Kernel Git Guide 에서 찾아볼 수 있다. git 저장소에 모든 필요한 제어 파일이 포함되어 있지는 않으므로, 아래 명령어를 사용하여 직접 생성해야 한다:

fakeroot debian/rules clean

선택지 B) 소스 archive 다운로드 하기

이는 추가적인 패치들을 더해 표준 Ubuntu 패키지들을 재빌드 하고자 하는 사용자들을 위한 선택지이다. 아래의 명령어를 사용해 빌드에 필요한 의존성 있는 패키지들을 설치하고 소스 archive 를 (현재 디렉토리에) 압축 해제할 수 있다:

  1. 아래와 같이 수행한다:
    sudo apt-get build-dep linux-image-`uname -r`

선택지 C) 소스 패키지를 다운로드 받아 빌드하기

이는 Ubuntu 가 패치한 커널 소스를 기반으로 수정 및 여러가지 실험을 해보고자 하는 사용자들을 위한 선택지이다.

  1. 최신 소스를 kernel.org 에서 다운로드 한다.
  2. 다운로드한 archive 를 특정 디렉토리에 압축 해제하고 해당 디렉토리로 진입한다:
    tar xf linux-*.tar.xz cd linux-*
  3. ncurses 환경설정 인터페이스를 빌드한다:
    make menuconfig
  4. 기본 환경설정을 그대로 이용하려면, 를 눌러 < Exit > 를 선택하고 Return 키를 누른다.
  5. Return 키를 한번 더 눌러 환경 설정값들을 저장한다.
  6. make 를 사용하여 커널을 빌드한다:
    make
    알아둘 점은, -j 옵션을 이용하면 소스 파일들을 컴파일하는 과정을 다중 코어를 활용하여 병렬 빌드를 수행할 수 있다는 점이다.

최종적으로 압축된 커널 이미지는 arch/[arch]/boot/bzImage 에서 찾을 수 있으며, 여기서 [arch]uname -m 의 결과와 같다.

역주: 원문에는 uname -a 로 기술되어 있으나 문맥상 uname -m 이 더 정확한 것 같아 수정하였습니다.

본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

Section 20.4: yum 을 통해 패키지들 업데이트하기

Yellow Dog Linux 의 마지막 유물들 중 하나인 Yellowdog Updater, Modified 는, Red Hat, Fedora, 그리고 CentOS 및 이에서 파생된 시스템들에서 사용되는 패키지 관리 프로그램이다. 이러한 리눅스 배포판들을 위해, yum 은 rpm 기반의 소프트웨어 패키지들에 대한 설치 및 제거 등의 처리를 할 수 있다. 아래는 간단한 사용과 관련된 예제들이다:

search

이 명령은 설정된 소프트웨어 저장소들에서 주어진 검색 조건에 부합하는 소프트웨어 패키지들을 파악하여 검색된 패키지의 이름 /버전 / 저장소 위치 등의 정보를 출력해 준다. 이 명령어를 사용하려면, 아래와 같이 입력한다:

yum search <검색 문자열>

install

이 명령은 설정된 소프트웨어 저장소들에서 주어진 이름에 해당하는 소프트웨어를 검색하여 설치하며, 동시에 해당 패키지 설치시 필요한 필수 소프트웨어들까지 재귀적으로 검색하여 설치해 준다. 이 명령어를 사용하려면, 아래와 같이 입력한다:

sudo yum install <패키지 이름>

update

이 명령은 현재 시스템에 설치되어 있는 모든 패키지들의 가장 최신 버전을 설치하여 준다. 설치되어있는 패키지의 새로운 버전이 존재하는 경우 새 버전이 다운로드 및 업그레이드 될 것이며, 새로운 필수 패키지가 추가된 경우 이 역시 필요시 다운로드 및 설치될 것이다. 더이상 사용되지 않는 (obsolete) 패키지나 다른 패키지로 대체된 (replace) 패키지는 제거될 것이다. 업그레이드를 수행하려면, 아래와 같이 입력한다:

sudo yum update

apt 와는 달리, 대부분의 yum 명령어는 자동으로 저장소 메타데이터가 갱신되었는지 확인을 수행한다 (최근에 확인을 수행한 적이 없거나 강제 확인 수행을 요구받은 경우). 이 과정은 새로운 메타데이터를 다운로드하고 검색을 수행함으로써 요청받은 작업 실행 이전에 새로 추가되거나 업데이트된 패키지 정보를 확보해준다.

본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

Section 20.3: pacman 패키지 매니저를 통해 패키지 업데이트하기

특정 프로그램 업데이트하기:

sudo pacman -S <programName>

전체 시스템을 업데이트 하기:

sudo pacman -Syu
본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

Section 20.2: pacman 패키지 매니저를 통해 패키지 설치하기

패키지 데이터베이스에서 특정 패키지를 찾기 위해 패키지 이름과 설명 항목에 대해 검색을 수행하고 싶다면, 아래와 같이 실행한다:

pacman -Ss string1 string2 ...

하나의 패키지 혹은 패키지들의 목록을 (의존성을 가진 패키지들과 함께) 설치하고 싶다면, 아래 명령어를 실행한다:

sudo pacman -S package_name1 package_name2 ...

출처

본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

Section 20.1: apt 패키지 매니저를 통해 패키지들 갱신하기

적절하게 (aptly) 명명된 apt (The Advanced Package Tool) 는, Debian, Slackware, 그리고 기타 다른 리눅스 배포판들에서 프로그램 설치 및 제거를 처리해 주고 있다. 아래에 몇가지 간단한 사용 예제가 나와 있다:

update

이 옵션은 Packages.gz 파일들을 다운로드 받고 내용물을 확인하여, 새로 추가되었거나 업데이트 된 패키지가 있는지를 확인한다. 이를 실행하기 위해서는, 아래의 명령어를 입력한다:

sudo apt-get update

upgrade

이 옵션은 현재 시스템에 설치되어 있는 모든 패키지들의 새로운 버전을 설치하기 위해 사용된다. 설치된 패키지 중에서 새로운 패키지가 존재하는 경우, 현재 설치된 상태의 특정 패키지가 제거되어야 하거나 현재 설치되어 있지 않은 패키지가 다운로드 및 설치되어야 하는 경우가 아니라면 해당 새로운 패키지가 설치될 것이다. 업그레이드를 수행하기 위해서는, 아래와 같은 명령어를 입력한다:

sudo apt-get upgrade

dist-upgrade

기본적인 upgrade 기능을 수행하는 것에 추가하여, dist-upgrade 는 새로운 버전의 패키지들에서 의존성이 변경되는 경우에 대해서까지 영리하게 처리해 줄 수 있다. 필요한 경우, dist-upgrade 는 중요도가 떨어지는 다른 패키지를 포기해서라도 가장 중요한 패키지들이 업그레이드 될 수 있게 해준다. 이러한 기능을 사용하기 위해서는, 아래와 같이 입력한다:

sudo apt-get dist-upgrade
본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

Section 19.3: chroot 사용이 권장되는 상황들

루트 디렉토리 위치를 변경하는 것은 부팅이나 로그인 등이 더이상 가능하지 않은 시스템에 대한 시스템 관리 목적을 위해 종종 사용된다.

일반적인 예제는 다음과 같다:

  • 부트로더 재설치
  • initramfs 이미지 재 빌드 (build)
  • 패키지들 업그레이드 혹은 다운그레이드
  • 유실된 암호 재설정
  • 깨끗한 루트 디렉토리 환경에서 소프트웨어 빌드 (build)
본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

Section 19.2: 특정 디렉토리로 Root 디렉토리 변경하기

  1. 이전 장에서 소개된 필요사항을 만족하는지 우선 확인한다.
  2. 임시 API 파일시스템들을 마운트한다:
    cd /location/of/new/root mount -t proc proc proc/ mount --rbind /sys sys/ mount --rbind /dev dev/ mount --rbind /run run/ (필요시)
  3. chroot 환경에서 인터넷 사용이 필요하다면, copy over the DNS 관련 설정 파일을 복사한다:
    cp /etc/resolv.conf etc/resolv.conf
  4. /location/of/new/root 로 root 디렉토리를 변경하면서, 어떤 쉘을 사용할지 명시한다 (이 예제에서는 /bin/bash 를 사용한다):
    chroot /location/of/new/root /bin/bash
  5. chroot 수행 후 로컬 bash 설정을 읽어올 필요가 있을 수 있다.
    source /etc/profile source ~/.bashrc
  6. 부가적으로, chroot 환경임을 쉽게 확인할 수 있는 고유한 프롬프트를 설정한다:
    export PS1="(chroot) $PS1"
  7. chroot 에서 수행하고자 하는 작업을 모두 마쳤다면, 아래와 같이 종료한다:
    exit
  8. 임시 파일시스템들을 마운트 해제한다:
    cd / umount --recursive /location/of/new/root
본 문서는 Linux Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/GitBook/

반응형

+ Recent posts