ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 기초 훑기
    기타/리눅스 2021. 4. 23. 11:29

    리눅스가 보이는 그림책 참조

    목차

    디렉터리 구조

    쉘의 종류

    기본 명령어

    텍스트 에디터 vi

    리다이렉트와 파이프

    파일 명령어

    심볼릭 링크와 하드 링크

    시스템 관리

    네트워크

    사용자 환경 설정

    경로 설정

    로그 설정

    마운트

     


    디렉터리 구조

    디렉터리 역할
    bin 바이너리 형식의 실행 파일이나 명령이 보관되어 있다.
    dev 디바이스 관련 파일이 보관되어있다.
    etc 각종 설정 파일 등 다양한 파일이 보관되어 있다.
    root 루트 디렉터리와 별도로 준비된 시스템 관리자용인 홈 디렉터리이다.
    sbin 관리자용 시스템 표준 명령이 보관되어 있다. 
    usr 각 사용자의 데이터나 애플리케이션이 보관되어 있는 장소이다.
    home  디렉터리 아래에 사용자별 디렉터리가 만들어지고, 그곳이 각 사용자의 홈 디렉터리이다.
    var 애플리케이션의 기록(로그)파일이나 메일 데이터 등이 보관되어 있는 장소이다.

    쉘의 종류

    커널은 하나 이상의 쉘을 갖고 있다.
    쉘 사용자의 명령을 커널에 전달하는 기능을 한다. 쉘 종류는 여러가지가 있다.

    sh  가장 기본적인 명령어 처리 능력을 가지고 있는 쉘.b쉘이라고 부른다.
    동작이 빠르나 기능 면에서 다른 쉘에 비해 빈약해 주로 쉘스크립트의 실행환경에서 사용된다.
    bash (배시)  b쉘을 확장한 쉘로 현재 이것을 b쉘이라고 부르기도 한다.
    Linux 표준 쉘이며, 가장 널리 알려져있다.
    ksh (k쉘)  b쉘을 확장한 쉘로 AT&T 에서 개발해 상용 Unix 로 사용된다
    csh (c쉘) 주로 BSD계열에서 채택되고 있는 쉘로 c쉘이라고 부른다.
    c언어적 명령어 구문을 갖고 있다.
    tcsh (tc쉘)  c쉘을 확장한 쉘로 , 현재 BSD 계열 OS 에서 표준이다. 
    bash 와 함께 많이 사용된다.
    zsh (z쉘) b쉘을 확장한 쉘이지만 tcsh 의 기능도 갖고 있다.
    b,c쉘 계열의 두 기능을 모두 사용할 수 있지만 느리다는 단점이 있다.

    쉘은 사용자의 필요에 따라 전환할 수 있다.
    명령행에서 쉘의 이름을 입력해서 전환하고 exit 명령어를 통해 원래 쉘로 돌아올 수 있다.

    1. 현재 사용하고 있는 쉘 확인하는 간편한 방법은 프로세스 정보를 보는 방법

    grep [사용자이름] /etc/passwd 

    2. 현재 설치되어있는 쉘 확인하기 

    cat /etc/shells

    3. 사용하는 쉘 변경하기 (다시 로그인해야 적용된다.)

    chsh -s /bin/[쉘이름] [사용자 이름]
    -> chsh -s /bin/dash seung

    내부명령과 외부명령


    내부명령 쉘에 내장된 명령어
    외부명령 실행파일, 실행파일명=명령이름

     

    기본 명령어

    명령어 (약어) 내용 비고
    cd (Change Directory) 현재 디렉터리 변경  
    pwd (Print Work Directory) 현재 디렉터리 절대경로 표시  
    ls (List Directory) 디렉터리 정보 조사  
    mv (MoVe file) 파일명 변경 &
    파일 이동
    이름변경 [기존이름][변경할 이름]: mv sample.txt sample
    파일이동 [기존파일][변경할 위치]: mv sample data
    cp (CoPy file) 파일 복사 cp [파일명][복사할 경로] : cp sample.txt data
    mkdir 디렉토리 생성  
    rmdir 디렉토리 삭제  
    rm (ReMove) 파일 삭제  
    cat (conCATenate) 파일 내용 열람 cat sample.txt 
    파일명을 입력하지 않으면 키보드 입력 대기 상태가 된다.
    sort 지정 텍스트 파일의 내용 정렬 옵션이 없으면 알파벳 순, -r 을 붙이면 역순이다.
    파일명을 입력하지 않으면 키보드 입력 대기 상태가 된다.
    grep (Grobal Regualr Expression Print) 여러 파일 중에서 문자열 검색 grep [검색할 문자열(정규표현)][파일명(경로)]
    find 파일 검색명령 find [파일명/문자열] 
    find [검색 시작 디렉터리][파일명/문자열]
    which 지정된 명령의 본체를 검색해 
    절대경로 표시
    which ls 
    => /bin/ls
    whereis  명령 경로 뿐만 아니라 매뉴얼이나 소스파일의 경로도 표시  whereis ls  =>
    bin/ls /usr/share/man/man1/ls.l.gz /usr/share/man/man1p/ls

    텍스트 에디터 vi(visual editor)

    텍스트 에디터는 Linux 환경 설정 파일을 편집하기 위해 필요한 가장 중요한 애플리케이션이다.
    윈도우에서는 제어판과 같은 설정 도구를 이용해 설정이 가능하지만,

    Linux 에서는 주요 설정을 텍스트 파일에 기록한다.  그래서 에디터가 없다면 환경설정을 바꿀 수 없다.

    vim 은 vi 의 클론 버전이다. 이외에 evis 나 elvis 등이 있다. 통틀어 vi 라고 부른다

     

    i  insert 모드 
    esc  명령모드 
    : 뒤에 명령을 입력한 수 esc 키를
    누르면 파일저장이나 vi 종료를 할 수 있다.

     

    :w  저장
    :w [파일명] 다른 이름으로 저장
    :w! 강제 저장
    :q 저장없이 종료
    :q! 저장없이 강제 종료
    :wq 저장 후 종료
    :wq! 저장 후 강제 종료
    dd 행 삭제 
    yy 행 복사
    p /
    P
    커서 다음줄에 붙여넣기 / 커서 윗줄에 붙여넣기
    찾기  /[문자열]     (커서 뒤에서 찾기)
    ?[문자열]     (커서 앞에서 찾기)
    바꾸기 s  :s/[검색문자열]/[변경할 문자열]
    :%s/[검색문자열]/[변경할 문자열]/g    (  %를 붙이면 일괄변경 /g는 바꾸기 방법 )

    리다이렉트와 파이프 

     

    리다이렉트 ?  표준 입출력 대상을 변경하는 기능

     

    출력 대상 지정

    > [출력대상 경로] 저장(덮어쓰기) 
    >> [출력대상 경로]   추가 저장

    입력 대상 지정 

    < [입력대상 경로]  

     

    1. sample1 텍스트 파일 정렬 해 그 결과를 다른 파일 sample2 로 저장할 경우 
    # sort < sample1.txt > sample2.txt
    
    2. data 에 있는 document 와 sample1.txt 파일을 homelist.txt 에 복사하기
    # ls data > homelist.txt
    # cat homelist.txt -> document sample1.txt
    # ls data/document >> homelist.txt
    # cat homelist.txt -> document sample1.txt test1 test2

     

    파이프 ? 여러개 명령을 조합하는 기능
    명령에 의해 얻은 결과를 다른 명령에 넘겨주고 싶을 때 
    명령과 명령을 연결하는 파이프(파이프라인) 기능을 이용한다.
    명령끼리 연결은 "|" 로 한다.   

     

    1. ls가 루트 디렉터리 내 파일 목록을 넘기고 grep 에서 sr 문자 포함한 디렉터리 검색하기

    # ls / | grep sr 

    파일 관련 명령

    more   출력 결과를 페이지 단위로 표기  --More-- 
    스페이스 : 다음 페이지 , 
    엔터: 1행씩 표시 , 
    q 종료 , 
    h 도움말 
    less  more 보다 강화된 명령어 , 간단한 검색이라 점프 이동 가능, 끝까지 표시되어도 자동 종료 되지 않아 q를 입력해야한다. 검색 : /문자열 , ?문자열
    < 또는 g : 맨 앞으로 점프
    > 또는 G : 맨 뒤로 점프

    alias   자주 사용하는 명령의 별명을 설정 alias [별명]='[명령문]' 
    예) alias la='ls -a'
    unalias   삭제 unalias [별명] 
    ln  link 명령어는 파일이나 디렉터리에 대한 링크를 만든다  

     

    심볼릭 링크 - 파일로의 참조

    새로운 Inode를 만들어 원본파일을 가리키는 포인터와 연결이 되고 원본을 가리키는 Inode 를 통해 접근한다. 원본이 손상되거나 없어지면 원본 파일을 찾아가지 못하고 원본 파일이 변경되면 변경된 원본 파일을 찾아간다.
    링크를 삭제해도 파일에는 영향이 없다.

    ln -s /home/beginner/sample1.txt(대상) [링크명] 


    하드 링크 -파일 실체로 참조

    파일과 링크가 1대 1 관계를 가진다.
    원본파일의 Inode 를 공유해 원본파일 데이터와 직접 연결된다.
    원본이 손상되거나 없어져도 원본파일의 데이터에 접근할 수 있다.
    하드링크를 만들면 하나의 파일을 두개의 이름으로 참조할 수 있다.

     

    mrrootable.tistory.com/37


    권한

    리눅스는 여러 사용자가 동시에 이용하는 것을 전제로 만들어졌다.
    그래서 파일 하나라도 누가 어떻게 이용할 수 있는지 확실하게 관리할 필요가 있다.
    그래서 권한이라는 장치로 파일을 이용하는 사용자를 제한한다.

     


    프로세스

    리눅스는 여러 프로세스를 동시에 관리하는 멀티 태스크를 실형하고 있다.

    하나하나의 태스크를 프로세스라고 하며 Linux 는 os 가 관리하는 단위로 프로세스가 사용된다.

     

    잡(jobs) 

    파이프로 명령어를 연결한 경우 등 하나 이상의 명령(프로세스) 모임을 잡이라고 한다.
    잡과 프로세스는 각각 고유 번호를 가지고 있다.

     

    ps prossess status 명령은 현재 가동 중인 프로세스 Id 번호를 붙여 목록으로 보여준다

     

    jobs 현재 가동 중인 작업을 번호를 붙여 목록으로 표시한다.

     

    kill[프로세스 id혹은 job 번호] 남아있는 프로세스 도는 잡을 종료한다. 

    일반 사용자는 자신이 실행한 프로세스만 종료할 수 있다.

     

    실행 중인 잡을 일시 중단, 재개 할 수 있다.

    중단은 ctrl + z 
    재개는 fg(fore ground) 명령 사용 fg [%잡번호]

    시스템 관리자

    윈도우에서는 관리자 권한을 가진 계정이 여러개 존재할 수 있지만 
    Linux 에서는 관리자 권한을 가진 계정은 단 하나뿐이다.

    su (Switch User) [옵션]  사용자 전환 명령어 

    1.su - 
    원래 사용자 환경을 물려받지 않는다.
    비밀번호 입력후 커런트 디렉토리가 root 의 홈 디렉터리가 된다.
    
    
    2.su (옵션 없음)
    원래 사용자 환경을 물려받는다. 
    비밀번호 입력후 커런트 디렉토리가 su 명령을 실행한 디렉터리가 된다.
    
    
    3.su [사용자명]  
    다른 사용자로 로그인
    


    sudo 명령

    일시적으로 root 권한으로 명령을 실행할 수 있다.
    sudo 명령을 실행하려면 wheel 그룹의 구성원이여야 한다.

     

    시스템 관리

    Linux 시스템이 실행하기까지 대략적 흐름은 아래와 같다.

    전원on  > 커널 실행 > systemd 실행 > 각종 서비스 실행 > 로그인


    systemd ?  시스템 환경을 설정하는 프로그램 


    systemd 는 디스플레이 매니저, SSH 서비스, FTP 서비스, HTTP 웹 서비스 등.. 각종 서비스의 프로세스를 실행한다.
    systemd 은 각 서비스는 유닛 단위로 관리해, 프로세스 진행 중 이상 종료가 되어도 유닛 내에서는 정합성을 유지한다.
    유닛 종별에는 데모의 실행과 정지를 수행하는 service, 디바이스의 검지를 수행하는 device, 유닛을 그룹화한 target 등이 있다.

     

    systemd 는 default.target 이라는 tartget 유닛의 정보를 바탕으로 프로세스를 실행하는데 ,

    이 내용을 전환해 다른 모드로 실행 가능하다.

    poweroff.target 시스템 종료 
    reboot.target 시스템 재시작
    rescue.target 유지관리용 모드
    multi-user.target 멀티 유저 모드
    graphical-target   GUI 를 통한 멀티유저 모드

    네트워크 

    ifconfig , ip addr  명령으로 네트워크 어댑터에 할당된 ip 주소를 확인할 수 있다.
    nslookup 은 지정한 호스트명(Dns명/IP)에 대한 정보를 DNS 서버에서 가져온다

    nslookup www.naver.com

     

    네트워크를 설정하려면 관리자로 로그인해야한다.
    네트워크와 관련된 설정은 기본적으로 
    /etc/sysconfig 안에 있는 network 라는 파일, 
    /etc/sysconfig/network-scripts 안에 있는 설정파일로 관리된다.

    네트워크 설정의 기본 항목으로는
    호스트명, DNS 서버, IP 주소, 넷마스크, 게이트웨이 주소, DHCP의 유무이다.

     

    호스트명 설정은 /etc/hostname 이라는 텍스트 파일 (centOs6 이전은 /etc/sysconfig/network)
    dns 서버 설정은 /etc/resolv.conf 파일에 기술되어있고 
    기타설정은 네트워크 인터페이스 별로 준비된 파일에 기술되어있다.


    아래는 eth0라는 인터페이스와 관련된  

    /etc/sysconfig/network-scripts/ifcfg-eth0 내부 파일

    DEVICE=eth0 (디바이스명)
    BOOTPROTO=dhcp (dhcp 이용하지 않으면 static 으로 )
    ONBOOT=yes (시스템 시작시 설정을 유효하게 할지 결정)
    IPADDR=
    NETMASK=
    GATEWAY=

    사용자 환경 설정

    닷 파일은 시스템 관리용 환경설정 파일로 ls 명령으로는 보이지 않는데, 부주의하게 조작하지 않게 하기 위함이다.
    ls -a 를 실행하면 볼 수 있다.

    .bash_profile  로그인 시 실행되는 환경 설정 
    .bash_login  .bash_profile 이 없으면 실행되는 환경 설정
    .profile .bash_profile , .bash_login 가 없으면  실행되는 환경 설정
    .bashrc   .bash_profile 로부터 호출이나 쉘 시작 시에 실행되는 환경 설정
    .bash_logout  로그아웃시에 실행되는 환경설정
    .bash_history  bash 로 실행한 명령 기록

    경로 설정

    자주 사용하는 명령이 있는 디렉터리 경로를 미리 설정해두면 명령 이름을 입력만 해도 사용할 수 있다.
    이것을 '경로를 지나간다' 라고 표현한다.
    LInux 에는 쉘과 명령에서 공통으로 참조할 수 있는 내장변수가 있는데, 이것을 환경변수라고 한다.
    환경 변수는 env (Environment)명령어로 확인할 수 있다.

    HOSTNAME=localhost.localdomain (호스트명.도메인명)
    SHELL = /bin/bash (shell 변수에는 /bin/bash 가 들어가 있다.)
    TERM=xterm-256color
    PWD=/home/beginner
    LANG=ko_KR.UTF_8
    HOME=/home/beginner
    


    경로를 통하게 하기 위해서는 PATH 변수에 디렉터리 경로를 지정해야한다.
    .bash_profile 파일에서 'PATH=경로'를 지정해두면 로그인 할 때 PATH 변수가 설정된다.
    여러개를 설정하는 경우는 ':' 로 연결한다.

    //.bash_profile
    PATH=$PATH:$HOME/bin


    .bash_profile 를 활성화하려면 다시 로그인하거나 source 명령어를 실행하여 닷 파일을 다시 읽어들이도록 한다.

    source~/.bash_profile


    시스템 변수에는 쉘 스크립트 등에서 이용되는 쉘 변수도 있다. 내용은 set 명령으로 확인할 수 있다.

    *cron 
    스크립트 파일을 자동으로 실행하는 시스템이다.
    /etc/crontab과 설정내용에 따라 명령을 실행하는 crond 라는 프로글매으로 구성되어있다.

     


    로그 관리

    로그파일은 /var/log 디렉터리에 저장된다.
    주요 로그파일에 대해서는 /etc/system.conf 에 보관 장소와 기록할 내용이 정의되어 있다.

     

    /var/log/boot.log 커널 시작 시의 기록
    /var/log/cron  cron 처리와 관련된 기록
    /var/log/lastlog  마지막 로그인 기록
    /var/log/messages  시스템 전체의 기록
    /var/log/secure 인증과 관련된 기록
    /var/log/wtmp  로그인 기록

    logrotate 는 점점 커지는 로그 파일을 정기적으로 파일에 백업하기 위한 프로그램이다.

    백업 타이밍이나 남겨 둘 파일의 수 등을 /ect/logrotate.conf 파일에서 설정할 수 있다.


    1. 오래된 백업 파일은 삭제(덮어쓰기)한다.
    2.로그파일명 + '.숫자' 라는 이름으로 저장한다

     


    드라이브 마운트

    마운트란 하드 디스크나 CD-ROM , 플로피 디스크 등의 드라이브를 이용하기 위한 장치이다.
    Linux 시스템에서는 개별 드라이브라는 개념은 없으며, 모두 루트 디렉터리에 접속(마운트)된 디렉터리로 취급된다.

    마운트에는 mount 명력을 사용한다.
    필요에 따라 접속하는 드라이브의 파일 시스템 종류와 디바이스 파일(드라이버) 그리고 마운트 포인트(트리에 접속하는 장소)를 지정한다.
    이명령은 원칙적으로 관리자만 사용 할 수 있다.

     

    mount [파일 시스템 지정 옵션] [CD-ROM 파일시스템][디바이스 파일][마운트 포인트]

    mount -t iso9660 /dev/cdrom /mnt/cdrom 

    unmount 로 마운트를 삭제(해제)할 수 있다.

    unmout /mnt/cdrom  

     

    반응형

    '기타 > 리눅스' 카테고리의 다른 글

    리눅스 명령어 | , &, && , ||  (0) 2022.08.11
    tar, tar.gz zip 명령어  (0) 2022.08.11
    redirecting stderr to stdout  (0) 2022.08.08
    blog > BoardController MultipartForm / Post / Save  (0) 2022.08.06
    쉘스크립트의 셔뱅 shebang  (0) 2021.03.29
Designed by Tistory.