출처 :
http://qiita.com/0xfffffff7/items/028ff8c920a6a8c67dc5?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=123e24f9d4-Qiita_newsletter_165_07_15_2015&utm_medium=email&utm_term=0_e44feaa081-123e24f9d4-32972029
내가 정리하는건 못하겠고 남이 정리해 놓은거 카피하였음.(구글 번역기로 돌렸음)
생각 나는 대로 쓴 것입니다.
MacOS는 Linux 대신 BSD 계열이지만, 패키지 명령으로 조금 소개하고 있습니다.
MacOS는 Linux 대신 BSD 계열이지만, 패키지 명령으로 조금 소개하고 있습니다.
개인
설정 파일
홈
디렉터리에 설정 파일이 있습니다.
|
위치
|
의미
|
|
.bash_profile
|
로그인시에만 로드
|
|
.bashrc
|
쉘을 시작할 때마다 로드
|
바이너리와
라이브러리의 위치
|
위치
|
의미
|
|
/bin
|
기본적인 시스템 명령 바이너리를 둔다
|
|
/sbin
|
기본적인 시스템 관리 명령 바이너리를 둔다
|
|
/lib
|
시스템이 제공하는 라이브러리
|
|
/usr/bin
|
기본이지 않은 시스템이 제공하는 바이너리
|
|
/usr/sbin
|
기본이 없는 시스템 관리 명령을 둔다
|
|
/usr/lib
|
/lib와 거의 같다
|
|
/usr/include
|
C언어 인쿨루드 헤더
|
|
/usr/libexec
|
내부적으로 불리는 보조 명령
|
|
/usr/local
|
직접 컴파일 한 것이 배치되는 장소 (이하
동일)
|
|
/usr/local/bin
| |
|
/usr/local/lib
| |
|
/usr/local/include
| |
|
/usr/local/opt
| |
|
/usr/src/
|
커널 소스코드와 헤더파일
|
|
/opt/local/bin
|
패키지 소프트웨어의 설치에 이용되는 경우가 많다.
|
|
/opt/local/lib
|
패키지 소프트웨어의 설치에 이용되는 경우가 많다.
|
|
/etc
|
각종 응용 프로그램의 설정 파일
|
|
/var/log
|
응용 프로그램의 로그가 출력
|
|
/var/www/html
|
웹 서버의 문서 루트로 사용되는 경우가 많다.
|
패키지
관리 명령
|
배포판
|
명령
|
|
RedHat계열
|
yum
|
|
Mac
|
brew
|
|
Debian계열
|
apt-get
|
모든 패키지 업데이트
apt-get upgrade
yum update
brew upgrade
패키지가
설치된 장소
패키지에
따라 다르다
|
배포판
|
조사 방법
|
|
ubuntu
|
dpkg -L 패키지 이름
|
|
redhat(yum도 동일)
|
rpm -ql 패키지 이름
|
|
MacOSX
|
「/usr/local/Cellar」에
설치된「/usr/bin」에 연결된
|
직접
소스를 빌드
인터넷에서
검색하여 압축을 풀고 컴파일 하는 경우.
wget http://소스이름.tar.gz
tar -xvf 소스이름.tar.gz
cd 소스이름
./configure
make
sudo make install
설치 위치를 스스로 결정할
경우
./configure --prefix 위치
gcc에서
직접 컴파일
test.cc를
컴파일 하는 경우.
gcc -L 라이브러리 경로 -I 포함 파일 경로 -l 라이브러리 이름 -o 출력 바이너리 명 test.cc
공유 라이브러리는「lib~.a」라고 하는 이름이므로 –l로
지정할 때 “~” 부분만 좋다.
패키지를
넣는 경우
기본이라고 "/usr/bin"가 먼저 검색되므로 $ {PATH}에서 "/usr/local/bin"을
먼저 검색하도록 구성 해 둔다.
깨끗하게 유지하려면 직접 컴파일 소스를 "./configure --prefix 장소"에서
정한 위치에 설치하여 그때마다 경로를 통한 것이 좋다.
공유 라이브러리의 의존성을 조사
공유 라이브러리는 확장자가 ".so"파일.
ldd 명령으로 프로그램의 의존 라이브러리를 점검한다.
ldd 명령으로 프로그램의 의존 라이브러리를 점검한다.
ldd /bin/cp
libc.so.6 =>
/lib/libc.so.6
/lib/ld-linux.so.2 => /lib/ld-linux.so.2
MacOSX의 경우
otool -L
환경 변수 목록 확인
printenv
경로 지정
|
변수 이름
|
의미
|
|
$PATH
|
이진 검색 경로
|
|
$LD_LIBRARY_PATH
|
라이브러리
검색 경로
|
|
$C_INCLUDE_PATH
|
C
언어 인클루드 패스
|
적혀있는 순서로 우선하여 찾아 실행된다.
“:” 로 구분하여;에서 끝내기.
「=/usr/local/lib」을 우선하여 검색하도록 설정하고 반영하는 예.
$ LD_LIBRARY_PATH=/usr/local/lib:/usr/lib;
“:” 로 구분하여;에서 끝내기.
「=/usr/local/lib」을 우선하여 검색하도록 설정하고 반영하는 예.
$ LD_LIBRARY_PATH=/usr/local/lib:/usr/lib;
export LD_LIBRARY_PATH
위는 일시적으로 반영하는 경우
영구적으로 반영하는 경우「.bash_profile」또는「.bashrc」에 쓰고 나서 source 명령으로 반영한다.
영구적으로 반영하는 경우「.bash_profile」또는「.bashrc」에 쓰고 나서 source 명령으로 반영한다.
vi ~ / .bashrc
기록
source ~ / .bashrc
파일
압축
.tar.gz
tar zxvf filename.tar.gz
.bz2
tar xvfj filename.bz2
vi명령
|
명령
|
의미
|
|
i
|
삽입 모드
|
|
a
|
다음 문자 입력 상태
|
|
x
|
문자 지우기
|
|
D
|
행 끝까지 삭제
|
|
q
|
종료
|
|
q!
|
종료
|
|
w
|
저장
|
|
wq
|
저장하고 종료
|
|
gg
|
파일의 위로 이동
|
|
: 숫자
|
지정된 행으로 이동
|
|
G
|
파일의 끝으로 이동
|
|
Ctrl + f
|
다음 화면으로 이동
|
|
Ctrl + b
|
이전 화면으로 이동
|
|
0
|
줄의 처음으로 이동
|
|
$
|
행의 끝으로 이동
|
|
w
|
다음 단어로 이동
|
|
b
|
이전 단어로 이동
|
|
W
|
다음 빈으로 이동
|
|
B
|
이전 공백으로 이동
|
|
yy
|
복사 (전 수치로 복사 행수 지정)
|
|
p
|
페이스트 (현재 행)
|
|
P
|
페이스트 (커서 아래)
|
|
dd
|
삭제 (전에 수치로 삭제 행수 지정)
|
|
u
|
작업 취소
|
|
/ [문자열]
|
앞으로 검색
|
|
? [문자열]
|
후방 검색
|
|
n
|
다음 후보
|
|
N
|
이전 후보
|
|
:%s/바꾸기 전에 문자열/치환
어 문자열/g
|
대체
|
|
: set number
|
행 번호 표시
|
|
: syntax off
|
색상을 끈다
|
git으로 clone 커밋
git clone URL
git add index.html
git COMMIT -m "코멘트"
git push
다시 시도
작업 트리와 인덱스를 직전의 위탁 상태로
복원
git reset --hard
직전의 위탁 취소
git reset --hard HEAD ^
원격 변경 사항을 캡처
git pull
서비스 시작 및 종료
/etc/init.d/서비스 이름 start
/etc/init.d/서비스 이름 stop
또는
service 서비스 명 start
다시 시작
/etc/init.d/ 서비스 이름 restart
항상 시작하기
chkconfig 서비스 명 on
원격 컴퓨터에 파일 복사
scp [옵션] 원본 대상
현재의
testfile를 192.168.1.10에 user1로
로그인하고 홈 디렉터리로 전송하는 경우.
scp ./testfile user1@192.168.1.10~/
경로의 순서를 바꾸면 원격으로 취득도 가능.
파일 검색
$ find / -name doc.txt
자체 서명 된 인증서 만들기
CommonName에 호스트 이름을 입력한다.
# openssl genrsa 2048 > server.key
# openssl req -new -key server.key > server.csr
# openssl x509 -days 3650 -req -signkey server.key
<server.csr> server.crt
호스트 이름 변경
#vi /etc/hosts
127.0.0.1 xxxx localhost 여기에 추가
#vi etc/sysconfig/network
NETWORKING=yes
HOSTNAME=여기에 쓰기
GATEWAY=192.168.0.1
반영
# /etc/rc.d/init.d/network restart
사용중인 포트 확인
sudo netstat -anp
공간 확인
각
파티션
df -h
현재 디렉터리에서 재귀적으로
조사
du -h
다양한
도구
|
분야
|
이름
|
|
가상 환경
|
Vagrant
Docker |
|
전체
텍스트 검색 엔진
|
Apache Solr
groonga Hyper Estraier Senna |
|
KVS
|
Redis
memcached mongoDB |
|
직렬화
|
messagepack
|
|
배포 도구
|
ChefとAnsibleが有名
Puppet Capistrano Fabric Ansible |
|
서버
테스트
|
serverspec
|
|
서버 모니터링
|
Nagios
|
|
성능
측정
|
New Relic
|
|
로그 수집
|
fluentd
|
|
응용
프로그램 테스트
|
Jenkins
|
|
기계 학습 라이브러리
|
Jubatus(http://jubat.us/ja/)
Apache Mahout SHOGUN NLTK |
|
형태소
띄어쓰기
|
mecub
chasen tinysegmenter |
서버 부하 상황을 조사한다
CPU부하
top
메모리
vmstat
다른 방법
# uptime
13:35 up 30 mins,
2 users, load averages: 0.07 0.16 0.19
load
averages에 이어 1 분, 5 분, 15 분 단위로 숫자가 표시된다.
이 수치는 처리 대기 시간을 보여주고 있다.
처리 지연은 "CPU 사용" 또는 "I/O 처리 대기"어느 쪽이든 이다.
이 수치는 처리 대기 시간을 보여주고 있다.
처리 지연은 "CPU 사용" 또는 "I/O 처리 대기"어느 쪽이든 이다.
평균 부하가 낮은데 성능이 오르지 않는
경우 네트워크에 요인이 있을 가능성이 높기 때문에 'netstat'등으로 조사한다.
CPU 사용률과 I/O 대기 시간을 조사
# sar -u 3 10
13:40:16 %usr %nice
%sys %idle
13:40:19 1 0
2 98
13:40:22 1 0
1 98
13:40:25 0 0
1 98
13:40:28 0 0
1 99
13:40:31 1 0
1 98
13:40:34 0 0
1 99
13:40:37 0 0
1 99
13:40:40 0 0
1 99
13:40:43 0 0
1 99
13:40:46 0 0
1 99
Average:
0 0 1
98
%user는
사용자 공간에서의 CPU 사용률
%nine는 우선 순위를 변경 한 프로세스를 통해 사용자 공간에서 CPU 사용률
%system 은 커널 공간에서 CPU 사용률
%iowiat 가 나타날 경우 CPU가 I/O 처리를 기다리고 있던 시간의 비율.
%idel 디스크 I/O 대기에서 CPU가 기다리던 시간의 비율.
%nine는 우선 순위를 변경 한 프로세스를 통해 사용자 공간에서 CPU 사용률
%system 은 커널 공간에서 CPU 사용률
%iowiat 가 나타날 경우 CPU가 I/O 처리를 기다리고 있던 시간의 비율.
%idel 디스크 I/O 대기에서 CPU가 기다리던 시간의 비율.
서버 구축시에 실시하는 보안 설정
LPIC 표준 교과서의 목차보다
1 소프트웨어의 업데이트 정보를 확인할
2 사용하고있는 패키지를 정기적으로 업데이트하는
3 불필요한 소프트웨어를 설치하지
4 불필요한 사용자는 로그인 할 수 없게하거나 삭제하는
5 필요 에 따라 사용자의 암호가 만료을 낸다
6 root가 될 수 또는 sudo를 사용할 사용자를 제한하는
7 파일 및 디렉토리 권한을 적절하게 설정
8 런레벨을 적절하게 설정하고 불필요한 데몬을 시작 못하게
9 불필요한 SUID, SGID를 제거하는
10 로그를 정확하게 남겨
11 패킷 필터링 (iptables 등)를 사용하고 불필요한 패킷을 수신하지 않도록하는
12 불필요한 포트 닫기
1 소프트웨어의 업데이트 정보를 확인할
2 사용하고있는 패키지를 정기적으로 업데이트하는
3 불필요한 소프트웨어를 설치하지
4 불필요한 사용자는 로그인 할 수 없게하거나 삭제하는
5 필요 에 따라 사용자의 암호가 만료을 낸다
6 root가 될 수 또는 sudo를 사용할 사용자를 제한하는
7 파일 및 디렉토리 권한을 적절하게 설정
8 런레벨을 적절하게 설정하고 불필요한 데몬을 시작 못하게
9 불필요한 SUID, SGID를 제거하는
10 로그를 정확하게 남겨
11 패킷 필터링 (iptables 등)를 사용하고 불필요한 패킷을 수신하지 않도록하는
12 불필요한 포트 닫기
댓글
댓글 쓰기