기본 콘텐츠로 건너뛰기

Linux 기초



출처 :
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 계열이지만, 패키지 명령으로 조금 소개하고 있습니다.


개인 설정 파일

홈 디렉터리에 설정 파일이 있습니다.



위치

의미

.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 /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;

export LD_LIBRARY_PATH

위는 일시적으로 반영하는 경우
영구적으로 반영하는 경우.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

배포 도구

ChefAnsibleが有名
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 처리 대기"어느 쪽이든 이다.

평균 부하가 낮은데 성능이 오르지 않는 경우 네트워크에 요인이 있을 가능성이 높기 때문에 '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
가 나타날 경우 CPUI/O 처리를 기다리고 있던 시간의 비율.
%idel
디스크 I/O 대기에서 CPU가 기다리던 시간의 비율.


서버 구축시에 실시하는 보안 설정


LPIC 표준 교과서의 목차보다 
1
소프트웨어의 업데이트 정보를 확인할 
2
사용하고있는 패키지를 정기적으로 업데이트하는 
3
불필요한 소프트웨어를 설치하지 
4
불필요한 사용자는 로그인 할 수 없게하거나 삭제하는 
5
필요 에 따라 사용자의 암호가 만료을 낸다 
6 root
가 될 수 또는 sudo를 사용할 사용자를 제한하는 
7
파일 및 디렉토리 권한을 적절하게 설정 
8
런레벨을 적절하게 설정하고 불필요한 데몬을 시작 못하게 
9
불필요한 SUID, SGID를 제거하는 
10
로그를 정확하게 남겨 
11
패킷 필터링 (iptables )를 사용하고 불필요한 패킷을 수신하지 않도록하는 
12
불필요한 포트 닫기

댓글

이 블로그의 인기 게시물

mac os + perl catalyst

맥 엘... 머를 사용하고 있다. 펄은 최신버전이 설치 되어 있다. cpan 모듈부터 설치한다. $ cpan App::cpanminus 바로 스마트시디 설치한다. $ https://github.com/cxreg/smartcd 그런데 zsh 쓰고 있어서 source 하면 터미널이 튕겨 버린다. 이렇게 하면 됨. $ source $HOME/.smartcd/lib/core/smartcd ( https://github.com/cxreg/smartcd/issues/25) 깃에 연동해야 하니까 ssh 키도 만든다. $ ssh-keygen 그런데 문제가 생기기는 한다... ivalid version format (version required) at /perl5/lib/perl5/Module/Runtime.pm line 386. BEGIN failed--compilation aborted at /perl5/lib/perl5/Catalyst/ScriptRunner.pm line 2. Compilation failed in require at Web/script/web_server.pl line 7. BEGIN failed--compilation aborted at Web/script/web_server.pl line 7. 뭐 대충 이런건데..... Moose 업데이트 하면 된다. cpanm Moose 이 때 PATH 경로안에  Moose 가 포함 되어 있어야 한다. 그냥 cpan 설치 할 때 moose도 포함 시켜서 한번에 인스톨하면 편함. 이제 맥에 포스트그래스만 설치하면 되는데...

전자정부 이클립스 스프링 부트

  1. 전자정부 이클립스 IDE 다운로드 2. 압축 해제후 실행.  Template Project 만들기. (아직은 Single 뿐이다.)

중 상급자가되기위한 JavaScript 【지식 편]

qiita : http://qiita.com/KENJU/items/c7fad62a12cc2809b507?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=a25a5e9683-Qiita_newsletter_166_07_22_2015&utm_medium=email&utm_term=0_e44feaa081-a25a5e9683-32972029 그대로 복붙 해도 상관 없지만 나도 좀 보면서 정리 해야 되니까 조금씩 정리. 1. Basic Tips Index 1-1. 글로벌 변수를 남용하지 않는다. 1-2. for 루프 1-3. 암시 적 변환을 피하기 1-1. 글로벌 변수를 남용하지 않는다. , 타사 플러그인을 읽을 때 변수의 충돌 팀 구성원이 작성한 코드와 이름 충돌 옛날 쓴 자신의 코드에서 사용한 변수와 충돌 대책 : var JavaScript 는 var  없이 정의된 변수는 전역 변수로 스켄된다. function speakOut () { // global variable global = "Hello from global" ; // local variable var local = "Hello from local" ; console . log ( global ); console . log ( local ); } speakOut (); console . log ( global ); console . log ( local ); 대책 : 네임 스페이스를 사용 // Object for name space var myApp = {}; myApp . name = "My First JavaScript App" ; 대책 : 클로저를 이용. ( function (){ maybe_global = "...