리눅스 기초에 해당하는 글 2

[Linux] 쉘과 명령어 기초 #4

IT_Engineer/Unix & Linux (Bash)|2020. 11. 18. 09:00
728x90

! 시스템 관리자 명령어 정리

유저와 그룹

  • user : 현재 로그인하고 있는 유저들을 출력. who -q와 동일
  • groups : 현재 쉘에 접속해 있는 유저가 속해 있는 그룹을 출력. GROUPS 환경 변수를 출력, 그룹 이름이 아닌 그룹 번호만 가지고 있음
  • chown, chgrp : 소유자, 소유자 그룹 변경
  • useradd, userdel : 유저를 추가, 삭제할 때 사용하는 명령
    • adduser : useraddd에 심볼릭 링크되어 있음
    • 유저를 추가한 다음, passwd [유저 아이디]를 통해 패스워드 지정
    • 유저를 삭제할 때, 유저 디렉터리까지 삭제하고 싶으면 r 명령을 사용
  • usermod, groupmod : 그룹 이름이나 아이디 변경시 사용
  • id : 유저의 아이디, 그룹아이디, 소속된 그룹명 등을 출력
  • lid : 유저가 소속되어 있는 그룹 출력
  • who : 현재 로그인되어 있는 유저 목록 출력
  • `w`` : 모든 유저에 대한 정보 출력. who 명령의 확장
  • logname : 현재 유저의 로그인명
  • su : 한 유저가 다른 유저로 전환. 유저가 주어지지 않으면 기본적으로 슈퍼 유저(root)로 설정
  • sudo : 슈퍼 유저(root) 또는 다른 유저로 명령을 실행
    • /etc/sudoers 파일에 정의되어 있음
  • passwd : 유저의 패스워드를 생성/변경
  • ad : /var/log/wtmp 파일로부터 유저의 로그인 시간을 시간 단위로 출력
  • last : /var/log/wtmp로부터 모든 유저의 마지막 로그인 시간을 출력. reboot 아규먼트를 사용하면 reboot한 날짜, 시간을 출력
  • newgrp : 자신이 소속된 그룹을 새 그룹으로 변경/추가하지만 현재 쉘을 빠져나오면 초기화됨

터미널

  • tty : 현재 유저의 터미널 출력 -> /dev/ttys000 라고 나옴
  • stty : 터미널 설정을 출력하거나 변경할 수 있음
  • setterm : 터미널의 설정갑을 변경
  • tset : 터미널 설정을 초기화 하고 터미널 타입을 출력
  • mesg : 다른 유저가 자신의 터미널에 접근하는 것을 제어, mesg y : 자신의 터미널에 쓰기 허용, 기본 설정. mesg n : 자신의 터미널에 쓰기 불허
  • wall : 접속해 있는 모든 유저에게 메시지를 전송할 때 사용
  • write : 유저를 지정해 메시지를 발송할 경우 사용

정보와 통계

  • uname : 커널 정보와 같은 시스템 정보를 출력해 볼 수 있음
  • arch : 시스템 아키텍처를 출력. uname -m 명령과 동일
  • lastlog : /var/log/lastlog 파일을 참고해 모든 유저의 마지막 로그인 시간을 출력
  • lsof : 오픈된 파일의 목록을 출력. i 옵션을 사용하면 오픈되어 있는 네트워크 소켓 파일들을 출력할 수 있음
  • strace : 주어진 명령을 실행할 때 호출하는 시스템 콜과 시그널을 추적하는 명령
  • ltrace : 주어진 명령을 실행할 때 호출하는 라이브러리 콜을 추적하는 명령
  • nc : TCP와 UDP 포트 커넥션과 리슨을 출력. 포트 접속을 위해서는 호스트명과 포트번호를 아규먼트로 사용하면 되고, z 옵션과 포트번호 범위를 지정하면 포트로 접속이 가능한 상태인지 체크할 수 있으며, 검색할 포트 범위는 1-80 형식을 사용함
  • free : 메모리와 캐시 사용량을 Byte 단위로 출력
    • 해당 명령어를 사용하면 used free shared buffers cached이 나타남. 이와 관련된 내용은 링크를 참고
  • procinfo : /proc 파일 시스템에 대한 정보를 출력
  • lsdev : 설치된 디바이스 장치들의 목록을 출력
  • du : 디스크 파일 사용량을 출력. 재귀적으로 출력하며 특정 디렉터리를 지정 가능.
    • h : 킬로바이트 단위로 출력 / sh : 현재 디렉터리 아래의 전체 용량을 출력
  • df : 파일시스템의 파티션 사용량을 출력.
    • h : M, G 단위로 출력
  • dmesg : 부팅 시 콘솔에 출력된 메세지들을 출력
  • stat : 주어진 파일의 각종 정보를 출력
  • vmstat : 버추얼 메모리 통계 출력
  • netstat : 현재 네트워크 통계와 정보를 출력. 현재 오픈되어 있는 포트 목록을 출력하고자 한다면 lptu 옵션을 사용
  • uptime : 현재 시간과 시스템이 종료/재부팅되지 않고 계속 운영되고 있는 기간, 현재 접속자 수, 평균 부하를 출력. load average가 3 이상이면 시스템 성능이 현저히 떨어짐
  • hostname : 시스템의 호스트명을 출력
  • hostid : 호스트 머신을 32비트 16진수 숫자의 식별자로 출력
  • readelf : elf 바이너리 파일의 정보 출력
  • size : 바이너리 실행 파일 또는 아카이브 파일의 세그먼트 크기를 출력

시스템 로그

  • logger : 시스템 로그를 기록하는 명령이며, 로그는 /var/log/messages 시스템 로그 기록 파일에 저장
  • logrotate : 시스템 로그 파일을 관리하기 위해 사용하며, 로테이트, 압축, 삭제, 이메일 발송 등의 기능을 사용
    - 일반적으로 cron을 사용해 주기적으로 logratete를 실행해 로그 파일을 관리
    - 환경 설정 파일로는 /etc/logrotate.conf 파일을 사용

잡 컨트롤

  • ps : 현재 실행중인 프로세스 통계(PID, 프로세스 실행 시간, 실행 유저 등)를 출력.
          트리 형식으로 출력하기 위해선 -forest 옵션을 사용
    • ps -ef 를 자주 사용
  • pgrep, pkil : 이름 또는 다른 속성을 사용해 시그널 프로세스를 검색
  • pstree : 프로세스 목록을 트리 형식으로 출력, p 옵션을 사용하면 프로세스 아이디도 출력
  • top : 전반적인 시스템 상황을 출력하며 기본값으로 3초마다 refresh
  • nice : 스케줄링 우선권을 조정해 프로그램을 실행하는 명령
    • 아무런 옵션도 주어지지 않을 경우 nice는 상속받은 현재의 스케줄링 우선권을 출력
    • 조정수치가 생략되면 명령의 nice 값은 10이 됨. 음의 수치까지 부여할 수 있으며 -20 ~ 19까지 조정할 수 있음
    • renice 명령으로 실행 중인 프로세스의 우선권을 변경할 수 있으며, skill, snice 명령으로 시그널을 보내거나 프로세스 상황을 리포팅 할 수 있음
    • Ss, S<, Ss+, SN 등으로 표기
  • nohup : 적은 명령에 대해 Hangup(프로세스 중단) 신호를 무시한 채 수행하도록 하는 명령
    • nohup.out 파일에 출력 내용을 추가
    • 자동으로 백그라운드로 보내지 않기 때문에 명령행 뒤에 & 문자를 추가해 실행하거나 명시적으로 백그라운드로 실행
    • 실행 파일을 백그라운드로 실행(&)하고 현재 쉘을 종료해도 실행 파일의 수행이 중단되지 않음
    • bash 쉘 옵션 중 huponexit은 현재 쉘을 빠져나갈 때 SIGHUP 시그널(정지 신호)을 모든 job에게 보내는 옵션인데, 이 옵션의 기본값은 off라 현재 쉘을 종료하더라도 백그라운드로 실행된 프로세스는 종료되지 않고 계속 실행
    • nohup python execute.py > output & 등으로 사용
  • pidof : 실행중인 프로세스 아이디를 검색, 출력
  • fuser : 파일 또는 소켓을 사용하고 있는 프로세스를 출력
  • cron : 수퍼유저용/일반유저용 스케줄러
    • /etc/crontab 파일에 설정이 존재하며, 설정별 실행할 파일들은 /etc/cron.hourly 디렉터리에 위치

프로세스 관리와 부팅

  • init : 모든 프로세스의 부모 프로세스(PID 1번)이며 부팅시 /etc/inittab 파일에 런레벨을 결정
  • service : 시스템 서비스를 시작하고 중지하기 위해 사용
    • 리눅스 시작스크립트 원본 경로는 /etc/rc.d/init.d 또는 심볼릭 링크된 /etc/init.d이며, 부팅 시 7개의 런레벨별 시작 스크립트 위치는 /etc/rc.d 디렉터리 아래에 런레벨별 디렉터리 명으로 존재
    • service cron restart 등으로 사용

네트워크

  • ifconfig : 네트워크 인터페이스 환경을 출력하고 튜닝하는 유틸리티. eth0은 첫번째 이더넷 카드를 의미하고, lo는 로컬호스트 루프백을 의미
    • ifconfig eht0 down : 네트워크 사용 중지. 시작은 up
  • iwconfig : 무선랜 네트워크 인터페이스 환경을 출력해주는 명령이며, ifconfig와 유사하지만 무선랜 장치만 보여줌
  • ip : 라우팅, 디바이스, 라우팅과 터널 정책을 출력하고 조작할 때 사용
  • route : 커널 라우팅 테이블 정보를 출력하거나 변경. ip route list와 동일한 내용 출력
  • chkconfig : 시스템 서비스를 위한 런레벨 정보를 업데이트하고 검색
  • tcpdump : 네트워크 패킷을 실시간으로 출력해볼 수 있음
    tcpdump tcp port 21 을 실행하면 21번 포트로 통신하는 패킷들을 출력

파일시스템

  • mount : 파일 시스템을 마운트하기 위해 사용. 파일 시스템을 가지는 디바이스는 하드 디스크의 파티션, 플로피 디스크, CDROM, USB 같은 외장 디바이스, 램디스크 등이 해당
    • etc/fstab 파일을 보면 여러 설정 내용을 볼 수 있는데, 이 설정 파일을 부팅시 자동으로 읽어들여 마운트하고 부팅 후 파일 시스템과 디바이스를 지정하지 않고 수동으로 마운트하기 위해 사용
    • /etc/mtab 파일에는 현재 마운트되어 있는 파일 시스템 또는 파티션 정보가 저장되어 있음
    • mount -o loop -t iso9660 -r cd_image.iso /media/cdimg
  • umount : 마운트된 파일 시스템을 즉시 마운트 해제할 때 사용. 언마운트와 동시에 시디롬 드라이브에서 시디롬을 꺼내려면 eject 명령을 사용
  • sync : 업데이트된 모든 버퍼의 데이터를 강제로 하드 드라이버에 즉시 저장. 버퍼와 하드 드라이버 동기화 수행
  • losetup : 루프 장치를 정규 파일 또는 블럭 장치와 연결, 루프 장치와 분리, 루프 장치의 상태 파악을 하는 데 사용됨. 루프 장치 인자만 줄 경우에 해당하는 루프 장치의 상태를 보여줌
  • mkswap, dd : mkswap 명령은 스왑 파일 또는 스왑 파티션을 생성할 때 사용
    • dd if=/dev/zero of=swapfile bs=1024 count=8192
    • mkswap swapfile 8192
    • sync
    • swapon swapfile
  • swapon : 파일이나 파티션을 스왑으로 사용하도록 하는 명령
  • swapoff : 파일이나 파티션을 스왑으로 사용하지 않도록 하는 명령
  • mkfs.ext3 : 파티션이나 파일을 ext3 파일 시스템으로 만들 때 사용, mkfs 명령과 함께 t 옵션값으로 ext3를 지정해 파일 시스템을 생성
  • hdparam : 하드 디스크의 설정을 보여주거나 설정을 조정
  • fdisk [디바이스명] : 저장용 디바이스의 파티션 테이븡를 생성하거나 변경
    • /dev/hda : 첫 IDE 하드 드라이브
    • /dev/sda : 첫 SATA, SCSI 하드 드라이브
  • fsck.ext3 : ext3 파일 시스템을 체크, 수리, 디버그하는 명령. 단 mount된 파티션에 대해 파일 시스템 체크를 하면 해당 파티션에 문제가 발생할 수 있으므로 마운트를 해제한 다음, 파일 시스템 체크를 해야함!
  • badblocks : 저장 디바이스의 물리적인 배드 블록을 체크
  • lsusb : 장착되어 있는 USB 디바이스 목록 출력
  • lspci : 장착되어 있는 pci 디바이스 목록 출력
  • mkbootdisk : 시스템 구동을 위한 독립적인 부트 플로피 디스크를 만듬. iso 옵션을 사용해 부팅이 가능한 iso 파일로 만들 수 있음
  • mkisofs : iso9660 파일 시스템, 즉 CD 이미지를 만들 수 있음
  • chroot : root 디렉터리를 변경. 지정한 루트 디렉터리를 사용해 명령과 인터렉티브 쉘을 실행. 보안적 측면에서 유용함
  • lockfile : procmail 패키지에 포함되어 있음. lcokfile 명령으로 세마포어 잠금 파일, 디바이스, 리소스 등을 생성해 파일 접근을 관리할 수 있음. 잠금 파일이 존재하면 다른 프로세스의 접근이 제한됨
    • /var/lock 디렉터리에 잠금 파일을 생성하고 체크하며 rm -f [잠금파일명] 명령으로 삭제할 수 있음

백업

  • dump : 정교한 파일 시스템(ext2/ext3) 백업 유틸리티이며, -f 옵션을 사용해 네트워크 파일 시스템도 백업 가능
    dump 명령은 저수준 디스크 파티션을 읽고 바이너리 포맷의 백업 파일을 만듬. 이 파일들은 restore를 사용해 복원
  • fdformat : 플로피 디스크를 로우레벨 저수준으로 포맷

시스템 리소스

  • ulimit : 시스템 리소스 사용의 상한 제한값을 설정
    - f 옵션을 사용해 파일 크기 제한, c 옵션으로 코어덤프 크기를 제한
    - a옵션을 사용해 현재 시스템의 상한값을 출력해볼 수 있음

모듈

  • lsmod : 설치된 커널 모듈 목록을 출력. cat /proc/modules도 동일
728x90

댓글()

[Linux] 쉘과 명령어 기초 #1

IT_Engineer/Unix & Linux (Bash)|2020. 11. 13. 09:00
728x90

※ 사전 지식
리눅스
는 CLI (Command Line Interface - 명령어 기반 인터페이스),
그리고 그 명령어는 현재 머물고 있는 디렉토리를 대상으로 내려진다.

1. 디렉토리와 파일

현재 머물고 있는 디렉토리를 확인하기 위한 명령어는 pwd

$ pwd /root

 

'mkdir + 폴더이름' 명령어를 활용하여 폴더 생성

$ mkdir hello_gi

 

해당 디렉토리에 있는 내용 확인 명령어 : ls

  • 명령어 뒤에 '-' 기호를 붙여서 파라미터(옵션)를 줄 수 있음
$ ls
$ ls -l          #디렉토리 내용 자세히 확인
$ ls -al        #전체 내용 확인

 

디렉토리 이동 : cd (change directory) + 이동할 폴더명

$ cd hello_gi/  # 후 pwd 를 확인하면 디렉토리가 이동된 것을 확인할 수 있음
$ pwd         # Print Working Directory 의 약어, 현재 어떤 디렉토리경로에 있는가를 절대경로로 표시하는 명령어
$ cd ..         # 상위 폴더로 이동

 

디렉토리 삭제 : rm (remove directory)

$ rm 파일명        # 파일삭제 가능
$ rm -r hello_gi/    # 폴더를 삭제할 경우는 rm과 폴더명 사이에 -r 옵션 필요
$ ls                    # ls를 통해 디렉토리가 삭제된 것을 확인할 수 있음

 

커맨드창 정리

$ clear

 

매뉴얼은 '—help' 와 'man 명령어'를 통해서 확인 가능

$ rm --help   # 명령어 --help 를 사용하면 세부 옵션 및 매뉴얼 보기 가능
$ man rm     # man 명령어는 전용 매뉴얼 페이지로 이동 # 스크롤은 방향키로 조종할 수 있음

/explain       # 매뉴얼 페이지에서 /찾고싶은 단어를 입력하면, 해당 단어를 찾아 스크롤 이동 및 표시
/n              # n(next) 키를 누르면 다음 단어로 이동, p(previous) 키를 누르면 이전 단어로 이동

 

sudo

  • super user do 의 약자
  • 권한이 필요해서 실행이 안 되는 경우, super user의 권한으로 실행하게 함
$ apt-get install git    # git을 설치하는 명령어 입력해도 설치는 X, are you root?라고 물음
$ sudo apt-get install git       # 앞에 sudo를 붙여서 명령어를 입력하면 설치 가능

 

에디터

  • 정보를 저장한 파일을 만들기 위해선 에디터 사용 필요
  • vi가 많이 사용됨, 초심자에게는 nano 에디터를 추천
  • 터미널에 nano를 입력하면 nano 에디터 실행 > html 태그를 입력 후 파일 저장
  • 터미널에 'vi 파일명'을 입력하면 vi 에디터 실행
$ nano
$ vi g1         # g1 파일이 없는 경우, 하단에 new file이라고 뜨면서 에디터 실행
                # g1파일이 있는 경우, 내용을 가져오고 에디터 실행

 


패키지 매니저

기본적으로 내장되어 있지 않은 프로그램을 설치해야 할 때 사용

리눅스의 대표적인 패키지 매니저 : apt, yum

  • 레드햇(RedHat) 계열 or CentOS : yum (yellow dog updater. Modified)
  • 데비안(Debian) 계열 or 우분투(Ubuntu) : apt (Advanced Packing Tool)
  • apt 앞에는 sudo를 항상 붙여주어야 함
  • 설치에 앞서 항상 설치할 수 있는 목록을 최신화(update)
  • upgrade 와 update의 차이 (apt와 yum이 다름)
  • apt apt update : 단순히 패키지 업데이트가 존재하는지 저장소 경로를 통해 확인(저장소만 업뎃) apt upgrade : 실제로 패키지를 최신 패키지로 변경하는 작업
  • yum : update와 upgrade 명령어 모두 패키지의 실제 업데이트 작업 수행
  • yum upgrade = yum -obsoletes update
    (패키지 업데이트되면서 더 이상 사용되지 않는 관련 파일이나 패키지를 삭제)
# 패키지 매니저 별 최신화 명령어

$ sudo apt-get update
$ yum update                 # yum -y update : 현재 설치된 모든 패키지 업데이트, 모든 대답 : yes
$ sudo apt-get update      # 저장소 경로를 통한 업데이트 (저장소 업데이트만 진행)
$ sudo apt-get upgrade    # 실제로 패키지를 최신 패키지로 변경
$ yum update                 # 패키지 업데이트 여부 확인 후 새로운 파일로 갱신
$ yum upgrade               # yum update 하면서 더이상 사용하지 않는 파일/패키지 삭제

 

728x90

댓글()