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
- 도움말
man <명령어>
$ man ls
- 로그 아웃 (사용자 계정)
$ 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
bash shell script
- 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 명령의 확장자 색상 옵션 |
메일을 보관하는 경로 | |
OSTYPE | 운영체제 타입 |
- export 환경변수=값, printenv
- .sh
- echo
- chmod +x
- 변수
- 변수=값; = 앞뒤로 공백 없음, 문자열
- 숫자 계산; 역따옴표`, expr \(, \), \*,
- 파라미터; $0, $1, $2, …
- if ~ fi, else
if [ 조건 ]
then
참일 경우 실행
else
거짓인 경우 실행
fi
- case ~ esac, 비교할내용) 명령 끝에만;; *) 나머지 조건;;
- and; -a, &&,
- [ 식1 ] && [ 식2 ]; then
- [ \(식1\) -a \(식2\) ]; then
- or; -o, ||
- for ~ in; ((i=1;i<=10;i++)) 괄호 두개, seq 1 10
for 변수 in 값1 값2 값3
do
반복할 문자
done
- while 참이면, until 참이 될 때 까지, break, continue, exit, return
while [ 참 ]
do
명령
done
- 사용자 정의 함수
함수이름 () {
$1, $2, 실행
}
함수이름
- 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 파일이름 | 파일이 실행 가능 상태이면 참 |
OpenSSH
- apt-get -y install openssh-server
- port 22/tcp
- systemctl restart/enable/status ssh
Name Server
- 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
Mail Server
- 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
- 네임서버 세팅 먼저
Database Server
- 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
Web Server
- LAMP
- apt-get -y install lamp-server^
- Apache2
- /etc/apache2/apache2.conf
- nginx
- nextCloud