public:computer:linux

linux 기초 사용법

$ history

  • ls; list 파일 목록

$ ls  # 현재 디렉토리 파일 목록
$ ls /etc/systemd  # /etc/systemd 디렉토리의 목록
$ ls -a  # 현재 디렉토리의 목록(숨김 파일 포함)
$ ls -l  # 현재 디렉토리의 목록을 자세히
$ ls *.conf  # 확장자가 conf인 목록
$ ls -l /etc/systemd/b*  # /etc/systemd 디렉토리에 있는 목록 중 앞 b로 시작하는 파일 목록을 자세히

  • cd; change directory 디렉토리 이동

$ cd
$ cd ~ubuntu
$ cd ..

  • pwd; print working directory
  • rm; remove

$ rm abc.txt
$ rm -i abc.txt
$ rm -f abc.txt
$ rm -r abc

  • cp; copy
  • touch; 사이즈 0인 파일 생성, 파일이 존재할 경우 최종 수정 시간 변경
  • mv; move
  • mkdir; make directory
  • rmdir; remove directory
  • cat; concatenate, 파일의 내용을 화면 출력
  • head; 텍스트 파일의 앞 10행 출력
  • tail; 텍스트 파일의 뒤 10행 출력
  • more; 텍스 파일 페이지 단위로 화면 출력, space bar, b, q
  • less; more의 확장, pageUp, pageDown
  • file; 파일의 종류 표시
  • df; 디스크 사용량
  • wc; word count
  • clear; 화면 지움
  • date, time, cal; 날짜, 시간, 달력 출력
  • 파이프; |
  • 필터; grep, tail, wc, sort, awk, sed 등
  • 리디렉션; >(overwrite), »(append), <, < >
  • 연속 실행 ;
  • 프로세스
    • foreground process
    • background process
    • 프로세스 번호
    • 작업 번호
    • 부모 프로세스, 자식 프로세스
    • ps
    • kill
    • pstree
  • 데몬; 명령 &
  • 서비스;
    • systemctl start/stop/restart
    • systemctl status
    • systemctl enable/disable
  • 소켓; /lib/systemd/system 디렉토리 소켓이름.socket
  • GRUB; /etc/default/grub
  • uname -r; 커널 버전 확인
  • /etc/issue; 우분투 버전
  • lsb_release -a
  • wget
  • curl
  • ls -l
    • 파일유형; d(디렉토리),-(일반), b(블록 디바이스), c(문자 디바이스), l(링크)
    • 파일허가권; r(read)w(write)x(execute) 형식, 소유자-그룹-기타 순.
    • 링크수
    • 파일소유자
    • 파일소유그룹
    • 파일크기(Bytes)
    • 마지막변경 날짜/시간
    • 파일 이름
  • chmod; u(user), g(group), o(others)
  • chown;
  • chgrp
  • whoami
  • 링크
    • Hard link; 원본 데이터를 직접 가르킴
    • Symbolic link; ln -s, 별도의 포인터
    • inode에 대한 이해
  • package
    • dpkg -i(–install), -r(–remove), -P(–purge), -l, -L
    • apt-get; 의존성 문제 해결,
      • apt-get -y install 패키지 이름
      • apt-get update
      • apt-get remove,
      • apt-get purge,
      • apt-get autoremove
    • apt-cache
      • apt-cache show
      • apt-cache depends
      • apt-cache rdepends
  • 파일 압축
    • xz; 확장명 xz로 압축/해제
    • bzip2; bz2로 압축/해제
    • gzip; gz 압축/해제
    • zip / unzip; zip 압축/해제
  • 파일 묶기
    • tar; tar로 묶음/해제
      • c; 새로운 묶음
      • x; 묶인 파일 해제
      • t; 묶을 풀기 전에 묶인 경로 보여줌
      • C; 묶음을 풀 때 지정된 디렉토리에 압축 해제.
      • f(필수); 묶음 파일 이름 지정
      • v; visual
      • J; tar + xz
      • z; tar + gzip
      • j; tar + bzip2
  • 파일 위치 검색
    • find 경로 옵션 조건 action;

$ find /etc -name "*.conf"
$ find /home -user ubuntu
$ find ~ -perm 644
$ find /user/bin -size +10k -size -100k
$ find ~ -size 0k -exec ls -l { } \;
$ find /home -name "*.swp" -exec rm { } \;

  • which; PATH에 설정된 디렉토리 검색. 절대 경로를 포함한 위치 검색
  • whereis; 실행 파일 및 소스, man 페이지 까지 검색
  • locate; updatedb 실행 필요
  • cron; crond : /etc/crontab
  • at
  • ifconfig
  • ifdown
  • ifup
  • systemctl start/stop/restart/status networking
  • nslookup
  • ping
  • /etc/resolv.conf; dns 서버의 정보와 호스트 이름이 들어있는 임시 사용 파일
  • /etc/hosts; 호스트 이름과 FQDN이 들어있는 파일
  • /etc/network/interfaces
  • 사용자/그룹;
    • /etc/passwd; 사용자이름:암호:사용자ID:사용자소속그룹ID:추가정보:홈디렉토리:기본쉘
    • /etc/group; 그룹이름:비밀번호:그룹ID:보조그룹사용자
    • adduser; 새로운 사용자 추가 /etc/passwd, /etc/shadow, etc/group 파일에 사용자 추가
    • passwd; 비밀번호 변경
    • usermod; 사용자 속성 변경
    • userdel; 사용자 삭제
    • chage; 사용자의 암호를 주기적으로 변경하도록 설정(change age)
    • groups; 사용자 소속 그룹 출력
    • groupadd; 새로운 그룹 생성
    • groupmod; 그숩 속성 변경
    • groupdel; 그룹 삭제
    • gpasswd; 그룹 암호 설정, 그룹 관리
  • mount / unmount
  • 히스토리

$ history

  • 도움말
  • 로그 아웃 (사용자 계정)

$ logout
$ exit

  • 시스템 재부팅 (root 계정)

# reboot
# shutdown -r now
# init 6

런레벨
런레벨 영문 모드 설명 비고
0 Power Off 종료 모드
1 Rescue 시스템 복구 모드 단일 사용자 모드
2 Multi-User 사용하지 않음
3 Multi-User 텍스트 모드의 다중 사용자 모드
4 Multi-User 사용하지 않음
5 Graphical 그래픽 모드의 다중 사용자 모드
6 Reboot
  • 시스템 종료 (root 계정)

# poweroff
# shutdown -P now
# halt -p
# init 0
# shutdown -P +10  # 10분 후 종료 (P: poweroff)
# shutdown -r 22:00  # 오후 10시에 재부팅 (r: reboot)
# shutdown -c  # 예약된 shutdown 취소 (c: cancel)
# shutdown -k +15  # 현재 접속한 사용자에게 15분 후에 종료 메시지 브로드캐스팅, 실제 종료는 안됨

  • raid(Redundant of Inexpensive/Independent Disks)
    • 단순볼륨
    • linear raid
    • raid 0; stripping
    • raid 1; mirroring, fault-tolerance
    • raid 5; parity
    • raid 6;
    • raid 1+0, 1+6
  • quota; /etc/fstab → reboot → quota heck, quotaon/quotaoff → edquota
  • alias
  • history
  • 연산기능
  • job control 기능
  • 자동 이름 완성 기능
  • 프롬프트 제어 기능
  • 명령 편집 기능
  • shebang(hashbang)
환경변수
HOME 현재 사용자의 홈 디렉토리
PATH 실행 파일을 찾는 디렉토리 경로
LANG 기본 지원되는 언어
PWD 사용자의 현재 작업 디렉토리
TERM 로그인 터미널 타입
SHELL 로그인해서 사용하는 쉘
USER 현재 사용자의 이름
DISPLAY X 디스플레이 이름
COLUMNS 현재 터미널의 컬럼 수
LINES 현재 터미널 라인 수
PS1 1차 명령 프롬프트 변수
PS2 2차 명령 프롬프트 (대개는 '>')
BASH bash 쉘의 경로
BASH_VERSION bash 버전
HISTFILE 히스토리 파일의 경로
HISTSIZE 히스토리 파일에 저장되는 개수
HOSTNAME 호스트의 이름
USERNAME 현재 사용자 이름
LOGNAME 로그인 이름
LS_COLORS ls 명령의 확장자 색상 옵션
MAIL 메일을 보관하는 경로
OSTYPE 운영체제 타입
  • export 환경변수=값, printenv
  • .sh
  • echo
  • chmod +x
  • 변수
    • 변수=값; = 앞뒤로 공백 없음, 문자열
  • 숫자 계산; 역따옴표`, expr \(, \), \*,
  • 파라미터; $0, $1, $2, …
  • if ~ fi, else
  • case ~ esac, 비교할내용) 명령 끝에만;; *) 나머지 조건;;
  • and; -a, &&,
    • [ 식1 ] && [ 식2 ]; then
    • [ \(식1\) -a \(식2\) ]; then
  • or; -o, ||
  • for ~ in; ((i=1;i<=10;i++)) 괄호 두개, seq 1 10
  • while 참이면, until 참이 될 때 까지, break, continue, exit, return
  • 사용자 정의 함수
  • eval; 문자열을 명령문으로 인식하여 실행
  • printf;
  • set과 $(명령)
문자열 비교 연산자
문자열 비교 결과
“문자열1” = “문자열2” 두 문자열이 같은면 참
“문자열1” != “문자열2” 두 물자열이 같지 않으면 참
-n “문자열” 문자열이 NULL(빈 문자열)이 아니면 참
-z “문자열” 문자열이 NULL(빈 문자열)이면 참
산술 비교 연산자
산술 비교 결과
수식1 -eq 수식2 두 수식(또는 변수)이 같으면 참
수식1 -ne 수식2 두 수식(또는 변수)이 같지 않으면 참
수식1 -gt 수식2 수식1이 크다면 참
수식1 -ge 수식2 수식1이 크거나 같으면 참
수식1 -lt 수식2 수식1이 작으면 참
수식1 -le 수식2 수식1이 작거나 같으면 참
!수직 수식이 거짓이라면 참
파일 조건
파일 조건 결과
-d 파일이름 파일이 디렉토리라면 참
-e 파일이름 파일이 존재하면 참
-f 파일이름 파일이 일반 파일이면 참
-g 파일이름 파일에 set-group-id가 설정되면 참
-r 파일이름 파일이 읽기 가능이면 참
-s 파일이름 파일 크기가 0이 아니면 참
-u 파일이름 파일에 set-user-id가 설정되면 참
-w 파일이름 파일이 쓰기 가능 상태이면 참
-x 파일이름 파일이 실행 가능 상태이면 참
  • apt-get -y install openssh-server
  • port 22/tcp
  • systemctl restart/enable/status ssh
  • DNS(Domain Name System) Server
  • 캐싱
    • apt-get -y install bind9 bind9utils
    • /etc/bind/named.conf.options
      • recursion yes;
      • allow-query { any; };
    • systemctl restart/enable/status bind9
    • port 53
    • dig @네임서버IP 조회할URL
  • 마스터 네임서버
    • /etc/bind/named.conf
    • named-checkconf
  • SMTP(Simple Mail Transfer Protocol), POP(Post Office Protocol), IMAP(Internet Mail Access Protocol)
  • Sendmail
    • apt-get -y install sendmail
    • apt-get -y install dovecot-pop3d
    • /etc/mail/sendmail.cf
    • /etc/mail/access
    • /etc/dovecot/dovecot.conf
    • /etc/dovecot/conf.d/10-mail.conf
    • systemctl restart/enable sendmail
    • systemctl restart/enable dovecot
  • 라운드큐브 웹메일
    • apt-get -y install dovecot-imapd lamp-server^
    • apt-get -y install roundcube
    • /etc/apache2/conf-enabled/roundcube.conf
    • /etc/roundcube/config.inc.php
  • Postfix
  • 네임서버 세팅 먼저
  • MySQL, mariaDB
    • apt-get -y install mariadb-server mariadb-client
    • port 3306
    • 서버스크립트; /etc/systemd/system/mysql.service
    • 클라이언트 실행파일; /usr/bin/mysql
    • phpMyAdmin; apt-get -y install phpmyadmin
  • LAMP
    • apt-get -y install lamp-server^
  • Apache2
    • /etc/apache2/apache2.conf
  • nginx
  • nextCloud
  • public/computer/linux.txt
  • Last modified: 2021/08/23 23:19
  • by alex