https://www.inflearn.com/course-status-2/
### 명령어
* man <찾을 명령어>
/검색
n : 다음 검색
* mkdir -p dir1/dir2/dir3
필요하면 부모디렉토리 생성
* ls -l > result.txt
명령어 결과 저장하기 redirection
rm rename2.txt 1> result.txt 2> error.log
1 실행한 결과 std out
2 error 결과 저장하기
slideplayer.com/slide/5126304
* ls -la >> result.txt
append 하기
mail asdf@gmail.clm << eot hello eot
라고 하면 "<< eot" eot 부터 다음 eot 까지 input 으로 보내라
### package manager
apt yum
apt-get update
apt-cache search 패키지
apt-get upgrade
apt-get remove
-- 맥사용자 homebrew
brew.sh 접속해서 설치하기
brew --help
/dev/null : 휴지통
### SHELL VS kernel
echo $0 : 내가 쓰고 있는 쉘
Shell Script 작성
-------
#!/bin/bash //아래 작성되는 코드들이 bash 폴더에 의해서 실행되야 한다.
if ! [ -d bak ]; then // bak 폴더가 존재 하지 않는다면
mkdir bak
fi
cp *.log bak
-------
chmod +x backup.sh
### linux direcory
http://dev-random.net/linux-directory-structure-explained/
/ – Root
/bin – User Binaries
바이너리 파일, 실행가능한 파일 모음
/sbin – System Binaries
시스템에서 사용하는 명령어
/etc – Configuration Files
설정 파일 모음
/dev – Device Files
하드디스크 장치 파일 /dev/sda, /dev/cdrom 장치파일들이 존재
/proc – Process Information
가상파일시스템 현재 메모리에 조재하는 모든 작업들이 파일형태로 존재하는 곳 (디스크상에 실제 존재하는 것이 아니라 메모리상에 존재) 실행중인 커널 옵션 값을 즉시 변경 할 수 있는 파라미터들
/var – Variable Files
용량이 바뀔 수 있는 파일
/tmp – Temporary Files
임시 파일
/usr – User Programs (Unix System Resources)
일반사용자들이 주로 사용
/home – Home Directories
사용자 디렉토리
/boot Boot Loader Files
리눅스의 부트로더(Boot loader)가 있는 디렉토리임
/lib – System Libraries
커널이 필요로 하는 각종 라이브러리 파일, 커널 모듈파일 등이 존재하는 디렉토리
/opt – Optional add-on Applications
응용프로그램 패키지 설치 장소
패키지 매니저가 자체적으로 설치/삭제를 수행함
/mnt – Mount Directory
탈부착 가능한 장치들에 대한 마운트 포인트로 사용하는 디렉토리
/media – Removable Media Devices
이동식 디스크가 마운트 되는 곳
/srv – Service Data
시스템이 제공하는 서비스를 위한 파일들
### 파일
파일 찾는 방법
locate 파일명
디렉토리를 뒤지지 않고 데이터베이스를 뒤짐
mlocate database
sudo updatedb 로 database 가 업데이트됨
find 파일명
실제 파일들을 뒤져서 찾음
find --help | head
find / -name 찾을파일명
find . -type f -name asdf.jsp
찾을 파일의 형태 고정
find . -type f -name asdf.jsp -exec rm -f {} \;
exec rm -f {} \; 파일을 찾아서 삭제 해라 {} 에 파일명이 들어가게됨
### 실행 파일 찾기
whereis 명령어
$PATH, $MANPATH
echo $PATH
path 정보 출력
### 프로레스 모니터링
* 프로세스 보기
ps aux : 모든 프로세스 보기
ps aus | grep apache : 아파치 프로세스만 보기
top : 프로세스 리스트 (htop)
Ctrl + z : 실행중인 프로그램을 백그라운드로 보내는 단축키.
jobs : 현재 백그라운드 작업 목록 '+' 는 fg 를 했을때 제일 먼저 뜨는것 그 다음은 '-'
fg : 백그라운드 작업이 다시 켜짐
fg %2 : 두번쨰 백그라운드 켜기 (jobs 에서 -)
kill %4 : 4번쨰 백그라우드 프로세스 죽이기
ls -R / : 모든 디렉토리 보기
ls -R / > result.txt 2 > error.log : 결과 저장
ls -R / > result.txt 2 > error.log & : 백그라운드로 실행
### 데몬
정의 : 항상 실행되고 있음, server 같은것
cd /etc/init.d : 데몬 프로그램들이 있는 곳
sudo service apache2 start : 데몬 켜기
ps aux | grep apache2
cd /etc/rc3.d 운영체제가 콘솔구동시 시작과 동시에 켜지는 프로그램들 (rc5.d GUI 구동)
### Cron
정기적인 작업 설정
crontab -e : 작업 설정
# m h dom mon dow command
*/1 : 1분
dom : day of month (24 : 매달 24일)
mon : 월
dow :
command : 명령어
date : 현재 시간 표시
date >> date.log : append 해서 작성하기
tail -f date.log : date.log 파일 새로 고침 보기
*/1 * * * * date >> data.log 2>&1 : 에러는 표준 출력 에러도 log에 기록이 됨
### 쉘
www.cyberciti.biz : 재미있는 별명 모음
alias l='ls -al' : 별명 붙이기
echo $SHELL : 어떤 쉘을 쓰는지 보기
cd ~
vim .bashrc : 쉘 실행할때 같이 실행할 것들 추가해줌 alias
bash : bash 실행
### 다중 사용자
id : 내가 누군지 봄
who : 시스템에 누가 접속해 있는지
ssh -p 3022 jiny localhost
super user
su : 사용자 변경
su - root 또는 su -
root 사용자 잠김 풀기
sudo passwd -u root : lock 풀기
sudo passwd -l root : lock
root 사용자 홈
/root
unix add user
sudo useradd -m jiny : 홈디렉토리 만들어줌
sudo passwd jiny : password 설정
sudo - jiny : 사용자 변경
sudo usermod -a -G sudo jiny : sudo 명령 사용하게 해줌 (sudo 그룹에 추가)
권한 Permission
User File & Directory
Read & Write & Exccute
drwxr-xr-x 2 jiny jiny 4096 11월 23 21:50 Templates/
type|access-mode 링크수 소유자 소유룹 파일크기 최종수정일
l | rwx(owner) rwx(group) rwx(other)
권한 변경
chmod o+r test.txt : other read 권한 주기
chmod o-r test.txt : other read 권한 뺏기
chmod u+x hi.sh : 실행권한주기
chmod -R o+w directory : 모든 디렉토리 권한 변경
chmod a=rwx text.txt : 모든 사용자에 대해서 권한 추가
그룹 관리
cd /var : 변화가 잦은 파일들 저장
useradd -G group-name user-name
sudo groupadd group-name
sudo !! : 이전에 사용했던 명령어
vim etc/group : 그룹 관리
usermod -a -G group-name user-name
권한 변경 후엔 쉘에 재접속 해야함
chown 소유자:그룹
chown jiny:developer . : 현재 디렉토리에 그룹을 root 에서 developer 로 변경
### 인터넷
ip addr : 실제 ip 주소 확인 private 주소
curl ipinfo.io/ip : 자신의 ip 를 알려줌 접속한 최종 ip public 주소
curl 서버와 통신할 수 있는 커맨드 명령어 툴
두 값이 같다는 것은 실제 ip 와 접속 ip 가 같다는 것
public 과 private 가 다른경우 (router 로 분기된경우)
같은 wifi 는 통신할 수 있음
router 를 세팅해서 공인 ip 로 특정 서버에 접속 할수 있도록 설정함
### Web Server
sudo apt-cache search apache : 아파치 찾기
sudo apt-get install apache2
sudo service apache2 start
sudo service apache2 stop
sudo service apache2 restart
쉘에서 웹서버에 접속하기
elinks
sudo apt-get install elinks
elinks
주소 쓰기
쉘에서 웹브라우징 사용
ip addr
elinks http://10.0.0.1 (자신의 ip)
localhost, 127.0.0.1 로컬의 경우 사용 가능
/etc : 어떤 프로그램들이 어떻게 동작할 것인가 설정이 저장되어 있는 곳
apache2.conf 파일
cd sites-enabled 서버가 시작하는 위치 링크 저장 index.html
0000-default.conf 의 documentroot 위치
errorLog 아파치가 에러났을때 쌓이는 로그 위치
{apache_log_dir} /var/log/apache2
### ssh 원격제어
sudo apt-get purge openssh-server openssh-client : 환경 설정 편수까지 전부 삭제
22 번 포트로 접속됨 (default)
/etc/ssh/sshd_config
### port
22~1024 wellknow 포트 잘알려진 포트들 주로 사용하는
포트포워딩 : 특정 포트로 들어온걸 내부 특정 ip 로 접속할 수 있게 해줌
공유기 포트포워딩 설정
default gateway : 공유기가 가지고 있는 내부 ip
ip route
환경설정의 고급 tcp/ip 의 route
브라우져에 default gateway 주소로 접속
서버의 내부 ip 주소 작성
규직이름 나중에 수정을 하기위해 지정해줌
사용자가 외부에서 접속할 포트 9000 적어줌
내부 서버 포트 80 적어줌
jiny@jiny-ubuntu-16:~$ curl http://ipinfo.io/ip
121.140.57.188
내 아이피 확인
http://121.140.57.188:9000
### Domain
hosts : 어떤 도메인이 어떤 ip 인지 지정 해줌
vim /etc/hosts
cat /etc/resolve.conf : 도메인 네임서버가 나옴
freenom 도메인 구입 12개월까지는 공짜로 할 수 있음
도메인과 나의 외부 ip 적용
host google.com : 구글도메인이 사용하고 있는 ip 확인
서브 도메인 : 하나의 도메인으로 여러 서버 접속 가능하게 함
www.naver.com, blog.naver.com
dig +trace egoing.ga : DNS 에게 물어볼떄 어디를 거쳐서 가는지 확인
egoing.ga. : 에서 마지막 . 이 root
root dns server (여러대) 의 주소를 우리의 DNS 는 반듯이 알아야함
.ga 를 담당하는 서버를 root dns server 에 물어 봄
name server -> 실제 address 를 알때까지 물어물어 감
### rsync
sync : 특정컴퓨터의 변경 내용을 다른 컴퓨터에 반영함 (ssh 를 이용함)
r : 원격
touch test{1..10} : 10 개의 파일을 만듬
rsync -a src/ dest : src 디렉토리 안의 파일들을 dest 로 넣음
증분 백업 함 (변경됨 내용만 반영함)
rsync -av : a 아카이브 모드 (디렉토리 전부, 변경사항만..), r 자세히 알려줌
원격 백업
rsync -azP src/ jiny@182.168.0.65:~/dest : 압축해서 프로그래스 보여줌
### ssh public private key
공개키, 비공개키
ssh-keygen : 키 생성 (접속요청 하는 곳에서 실행)
private, public 파일이 생성 .pub 퍼블릭 파일 (접속하려는 곳에 주는 파일)
~/.ssh/authorized_keys : 인증된 키들 (접속하려는 곳)
이 안에 id_rsa.pub 의 키를 붙여넣어줌
ssh-copy-id jiny@192.168.0.67 : 키가 카피됨 (접속요청 하는 곳에서 실행)
rsync 백업
로그인 없이 백업하기
rsync -avz src/ jiny@192.168.0.67:~/dest : 전송
cron 으로 이용해서 백업해 둘 수 있다.
RSA
암호화 기법 (encrypt/decrypt)
key 가진 사람이 암호/복호 가능하게 함
private (암호화 id_rsa 가 있는 것만 가능) <-> public (복호화 id_rsa.pub 이 있는 것만 가능) 비대칭적
ssh client -> ssh server 에 접속하면 random key 를 줌 -> client (id_rsa 가 있는) 는 random key 를 암호화 해서 server 에 다시 전달하면 -> server 는 (id_rsa.pub 이 있는) 는 암호화 된것을 다시 받아서 복호화 시킴
'Software Science' 카테고리의 다른 글
[Linux] path 확인 별칭 (0) | 2018.04.01 |
---|---|
[Linux] 리눅스 명령어 모음 (0) | 2018.04.01 |
[Linux] vi&vim 편집기 설정하기 (0) | 2018.04.01 |
실무로 배우는 빅데이터 기술 (0) | 2018.03.28 |
[Python] 2018.03.25 점프투파이썬 (0) | 2018.03.25 |