Serach

레이블이 Linux인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Linux인 게시물을 표시합니다. 모든 게시물 표시

2014년 4월 6일 일요일

CentOS apache 세팅

CentOS에선 apache가 네트워크를 사용하는걸 막아 놨습니다.



간단한 옵션 설정으로 네트워크를 사용하게 할 수 있습니다.


getsebool -a | grep 'httpd'


우선 옵션 확인.

[root@localhost /]# getsebool -a | grep 'httpd'

allow_httpd_anon_write --> off
allow_httpd_mod_auth_ntlm_winbind --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_network_connect --> off
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off
httpd_dbus_avahi --> on
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> off
httpd_execmem --> off
httpd_manage_ipa --> off
httpd_read_user_content --> off
httpd_run_stickshift --> off
httpd_setrlimit --> off
httpd_ssi_exec --> off
httpd_tmp_exec --> off
httpd_tty_comm --> on
httpd_unified --> on
httpd_use_cifs --> off
httpd_use_gpg --> off
httpd_use_nfs --> off
httpd_use_openstack --> off
httpd_verify_dns --> off

httpd_can_network_connect 옵션을  on으로 설정

setsebool -P httpd_can_network_connect on






http://gshan85.tistory.com/66



2013년 11월 8일 금요일

포트를 열고 있는 프로그램 찾기




Linux


$ lsof -i TCP:<portNumber>
netstat의 -p 옵션을 사용해도 되지만 -p 옵션을 지원하지 않는 경우도 많다








Windows


windows XP 이상에서 특정 포트 사용 프로세스 확인
 
사용 포트 PID 확인
C:\>netstat -ano | find "1234"

 TCP 0.0.0:1234 0.0.0.0:0 LISTENING 567
 
PID 프로세스명 확인
C:\>tasklist /FI "PID eq 567"
이미지 이름 PID 세션 이름 세션# 메모리 사용
process.exe 567 Console  0 4,700 K


2013년 10월 11일 금요일

git prompt 설정

ubuntu

다음의 내용을 ~/.bashrc 파일의 끝에 붙여넣는다.

# Configure colors, if available.
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
    c_reset='\[\e[0m\]'
    c_user='\[\e[0;32m\]'
    c_path='\[\e[1;34m\]'
    c_git_clean='\[\e[0;37m\]'
    c_git_staged='\[\e[0;32m\]'
    c_git_unstaged='\[\e[0;31m\]'
else
    c_reset=
    c_user=
    c_path=
    c_git_clean=
    c_git_staged=
    c_git_unstaged=
fi

# Add the titlebar information when it is supported.
case $TERM in
xterm*|rxvt*)
    TITLEBAR='\[\e]0;\u@\h: \w\a\]';
    ;;
*)
    TITLEBAR="";
    ;;
esac

# Function to assemble the Git parsingart of our prompt.
git_prompt ()
{
    GIT_DIR=`git rev-parse --git-dir 2>/dev/null`
    if [ -z "$GIT_DIR" ]; then
        return 0
    fi
    GIT_HEAD=`cat $GIT_DIR/HEAD`
    GIT_BRANCH=${GIT_HEAD##*/}
    if [ ${#GIT_BRANCH} -eq 40 ]; then
        GIT_BRANCH="(no branch)"
    fi
    STATUS=`git status --porcelain`
    if [ -z "$STATUS" ]; then
        git_color="${c_git_clean}"
    else
        echo -e "$STATUS" | grep -q '^ [A-Z\?]'
        if [ $? -eq 0 ]; then
            git_color="${c_git_unstaged}"
        else
            git_color="${c_git_staged}"
        fi
    fi
    echo "[$git_color$GIT_BRANCH$c_reset]"
}

# Thy holy prompt.
PROMPT_COMMAND="$PROMPT_COMMAND PS1=\"${TITLEBAR}${c_user}\u${c_reset}@${c_user}\h${c_reset}:${c_path}\w${c_reset}\$(git_prompt)\$ \" ;"





mac

~/.bash_profile 에 다음 내용을 복사한다.


# Custom git prompt
function __git_status() {
    local git_status="`git status -unormal 2>&1`"
    if ! [[ "$git_status" =~ Not\ a\ git\ repo ]]; then
        if [[ "$git_status" =~ nothing\ to\ commit ]]; then
            local ansi=32
        elif [[ "$git_status" =~ nothing\ added\ to\ commit\ but\ untracked\ files\ present ]]; then
            local ansi=33
        else
            local ansi=35
        fi
        if [[ "$git_status" =~ On\ branch\ ([^[:space:]]+) ]]; then
            branch=${BASH_REMATCH[1]}
        else
            # Detached HEAD.  (branch=HEAD is a faster alternative.)
            branch="(`git describe --all --contains --abbrev=4 HEAD 2> /dev/null ||
                echo HEAD`)"
        fi
        echo -n '\[\e[0;'"$ansi"'m\]'"($branch)"
    fi
}
function __git_prompt() {
    ps1pc_start="$1"
ps1pc_end="$2"
ps1git=`__git_status`
    PS1="$ps1pc_start$ps1git$ps1pc_end"
}

#PS1="\[\e[0;32m\]\u@\h:\[\e[0;34m\]\w\$ \[\e[0m\]"

PROMPT_COMMAND='update_terminal_cwd;__git_prompt "\[\e[0;32m\]\u@\h:\[\e[0;34m\]\w " "\[\e[0;34m\]\$ \[\e[0m\]"'

export PATH=$PATH:~/bin
export CLICOLOR=yes
export TERM=xterm-color
#export LESS=X
#if [ -z $DISPLAY ]; then export DISPLAY=":0.0"; fi    # Enable X11 tunneling through ssh
#alias ssh='ssh -Y'                                    # force X11 tunneling through ssh

# Set variable for GTest
export GTEST_COLOR=yes

# Git auto-completion
source ~/.git-completion.bash

# Resize open files
ulimit -n 8192



2013년 10월 10일 목요일

리눅스 모니터링 Nmon

nmon 성능: AIX와 리눅스 성능 분석을 위한 무료 툴

nmon은 하나의 스크린에 많은 정보를 나타냅니다. IBM은 공식적으로 이 툴을 지원하지 않고 여러분 스스로 위험 부담을 안고 이 툴을 사용해야 하지만, 풍부한 성능 관련 통계를 얻을 수 있습니다.

사용자 노트: nmon 툴은 공식적으로 지원이 되지 않습니다. 보증도 되지 않으며 IBM의 지원도 받을 수 없습니다.  다음은 nmon 툴이 실행되는 플랫폼이다.
  • AIX® 4.1.5, 4.2.0 , 4.3.2, 4.3.3 (nmon Version 9a: 본 버전은 기능적으로 안정화 되었고, 추가 개발 계획은 없다.)
  • AIX 5.1, 5.2, 5.3 (nmon Version 10: 본 버전은 SMT와 공유 CPU 마이크로 파티션을 갖춘 AIX 5.3과 POWER5™ 프로세서 기반 머신을 지원한다.)
  • Linux® SUSE SLES 9, Red Hat EL 3 and 4, Debian on pSeries® p5, OpenPower™
  • Linux SUSE, Red Hat, x86 기반 최신 배포판들 (32-bit 모드의 Intel과 AMD)
  • zSeries® 또는 메인프레임 기반 Linux SUSE와 Red Hat


nmon 툴은 AIX와 리눅스 성능 전문가들이 다음과 같은 성능 데이터의 모니터링과 분석에 사용할 수 있도록 고안된 툴이다.

  • CPU 사용
  • 메모리 사용
  • 커널 통계와 실행 큐 정보
  • 디스크 I/O 비율, 트랜스퍼, 읽기/쓰기 비율
  • 파일 시스템의 여유 공간
  • 디스크 어댑터
  • 네트워크 I/O 비율, 트랜스퍼, 읽기/쓰기 비율
  • 페이징 공간과 페이징 비율
  • CPU와 AIX 스팩
  • 탑 프로세서
  • IBM HTTP 웹 캐시(cache)
  • 사용자 정의 디스크 그룹
  • 머신 상세와 리소스
  • 비동기식 I/O -- AIX 전용
  • 워크로드 매니저(WLM) -- AIX 전용
  • IBM TotalStorage® Enterprise Storage Server® (ESS) 디스크 -- AIX 전용
  • 네트워크 파일 시스템(NFS)
  • Dynamic LPAR (DLPAR) 변경 -- AIX 또는 리눅스용 pSeries p5와 OpenPower 전용

nmon 아웃풋에서 그래프를 만들어내고, 웹 사이트에 디스플레이 될 수 있는 .gif 파일을 생성하는 새로운 툴이 포함된다.

nmon 툴은 모든 중요한 성능 튜닝 정보를 하나의 스크린에 나타내고 이를 동적으로 업데이트 한다. 이 툴은 모든 Dumb Screen, 텔넷 세션, Dial-up Line에서 작동한다. 게다가, 많은 CPU 사이클을 소비하지 않으며, 일반적으로 2% 미만이다. 새로운 머신에서는 CPU 사용도는 1% 미만이다.
데이터가 스크린에 디스플레이 되고 2초 마다 한 번씩 업데이트 된다. 하지만, 이 시간 간격을 더 길거나 짧게 쉽게 변경할 수 있다. 창을 늘리고 X Windows, VNC, PuTTY 등에 데이터를 디스플레이 하면, nmon 툴은 많은 양의 정보를 한 공간에 출력할 수 있다.
nmon 툴은 향후 분석을 위해 같은 데이터를 텍스트 파일로 캡쳐하고 그래프로 만들 수 있다.

본 툴은 독립형 바이너리 파일로서(AIX나 리눅스 버전 마다 다른 파일임),  설치는 간단하다.
  • nmonXXX.tar.Z 파일을 머신에 복사한다. FTP를 사용하고 있다면 바이너리 모드를 사용하라. 
    주: XXX는 버전을 나타낸다.
  • uncompress nmonXX.tar.Z를 실행하여 파일 압축을 푼다.
  • tar xvf nmonXX.tar를 실행하여 파일을 추출한다.
  • README 파일을 읽는다.
  • nmon 툴을 시작하려면 nmon을 타이핑 한다.
  • 루트(root) 사용자라면 ./nmon으로 타이핑 해야 한다.

  1. 여러분이 루트 사용자이거나, 또는 (루트로서) 다음 명령어를 타이핑 하여 일반 사용자가 /dev/kmem 파일을 읽을 수 있도록 해야 한다.
    chmod ugo+r /dev/kmem
  2. 디스크 통계가 필요하다면 (루트로서) 다음을 실행한다.
툴을 대화식으로 실행하려면, 파일의 앞부분을 읽어보라. 그런 다음, 툴을 시작하고 one-key 명령어를 사용하여 원하는 데이터를 본다. 예를 들어, CPU, Memory, Disk 통계를 보려면 nmon을 시작하고 다음을 타이핑 한다.
cmd


h 키를 누른다.
추가 도움말 정보가 필요하다면 다음과 같이 한다.
  • nmon -? 명령어는 간략한 상세를 보여준다.
  • nmon -h 명령어는 전체적인 상세 내용을 보여준다.
  • README 파일을 읽는다.

-f 플래그와 함께 nmon을 실행한다. nmon -h를 사용하여 상세를 볼 수 있다. 예를 들어, 30초 마다 데이터 스냅샷을 찍으면서 한 시간 동안 nmon을 실행하려면,
nmon -f -s 30 -c 120
nmon -fT -s 30 -c 120


두 번째 행은 탑 프로세스들도 캡쳐한다. 이 두 가지 모두 다음과 같은 현재 디렉토리에 아웃풋 파일을 만든다.
<hostname>_date_time.nmon

이 파일은 comma-separated values (CVS) 포맷으로 되어있으며, 스프레드시트로 직접 반입될 수 있다. Lotus® 1-2-3를 사용하고 있다면, 이 파일은 정렬되어야 한다. (Excel 버전의 nmon 애널라이저의 경우는 이렇게 할 필요가 없다.) AIX에서는 다음과 같은 예를 따른다.
sort -A mymachine_311201_1030.nmon > xxx.csv


시간을 절약할 수 있는 방법:
  • nmon 데이터 캡쳐 파일을 스프레드시트로 로딩하려면, CVS 데이터 파일(.csv)용 스프레드시트 문서를 확인한다. 많은 스프레드시트는 이를 수행하는 반입 함수를 로딩 또는 제공하는 파일들 중 하나로서 이 데이터를 허용한다. 많은 스프레드시트들은 고정된 수의 칼럼과 행을 갖고 있다. 이러한 문제를 해결하려면 최대 300 스냅샷을 수집할 것을 권한다.
  • 데이터를 파일로 캡쳐할 때, nmon은 쉘에서 연결을 해제하여, 여러분이 로그아웃을 하더라도 계속 실행되는지를 확인한다. 다시 말해서, 백그라운드에서 여전히 실행되더라도 nmon이 충돌하는 것처럼 보일 수 있다는 의미이다. 프로세스가 여전히 실행되는지를 확인하려면, 다음을 타이핑 한다.
    ps ?ef | grep nmon
  • 특정 OS에서 어떤 버전의 nmon이 실행되는지를 알고 싶다면 README 파일을 읽어보라.
  • AIX 5용 nmon Version 10은 더 이상 /dev/kmem을 사용하지 않고, 오직 공용 API만 사용한다. 따라서, /dev/kmem에 대한 권한을 변경할 필요가 없고 32-비트와 64-비트 버전의 nmon을 가질 필요가 없다.
  • AIX 5.1, 5.2, 5.3의 경우, nmon 10을 사용하라.
  • AIX의 경우, ML03에 대해서 AIX 5.1에 lslpp -Lcq bos.?p 코어 덤프를 리포트 하지 말라. WLM 통계는 AIX 5.2 ML5로 업그레이드 된 후에 소실된다. AIX 버그이기 때문이다. 이러한 문제는 nmon Version 10을 사용하여 해결한다.
  • Microsoft® Windows® Telnet을 사용하지 말고 80 x 25 캐릭터 보다 큰 윈도우를 사용하라. 많은 개발자들은 VNC와 PuTTY를 사용하여 Windows 머신에서 nmon을 디스플레이 한다.


새로운 기능설명
Starting up올바른 nmon 버전을 시작하는 "nmon"이라고 하는 작은 쉘 스크립트가 있다. 이 스크립트와nmon 바이너리를 $PATH에 놓고 nmon을 타이핑 한다. 이 버전은 32-비트 모드에서만 컴파일 된다. 32-비트와 64-비트 하드웨어에서 실행된다. 설치와 실행이 더욱 쉬워졌다.
N = NFSNFS는 nmon 10의 새로운 기능이다.
p = Partitions공유 CPU 파티션 정보에 관한 것이다. p5/AIX5.3을 위한 기능이다.
C = CPU32-PLUS CPU에서 최대 128 logical CPU를 갖춘 머신용이다.
c = CPUPOWER5기반 AIX 5.3을 사용하고 있고 공유 CPU 환경일 경우, 물리적 CPU 사용량에 대한 상세를 보여준다.
S = SubclassWLM 하위 클래스에 대한 것이다.
a = Disk adapters디스크 어댑터에 대한 상세를 제공한다.
r = ResourcesCPU 속도를 MHz로 나타낸다.
k = Kernel새로운 필드를 제공한다.
L = Large pages큰 페이지 통계를 제공한다.
D = Disk디스크, 디스크 유형 크기, 여유 공간, 볼륨 그룹, 어댑터에 관한 정보를 제공한다.
n = Network네트워크 어댑터 상세, MTU, 에러에 대한 정보를 제공한다.
m = Memory메모리가 어디로 가는지, 시스템(커널)과 프로세스, 활성 가상 메모리에 대한 상세를 제공한다.
-B박스를 제거하는 시작 옵션이다.







nmon analyzer 로 리포트 만들기.


 > sudo apt-get install python-numpy python-matplotlib

> git clone git://github.com/madmaze/pyNmonAnalyzer.git


 $> ./pyNmonAnalyzer.py -h
usage: pyNmonAnalyzer.py [-h] [-x] [-d] [-o OUTDIR] [-c] [-b] [-r CONFFNAME]
                         input_file

nmonParser converts Nmon monitor files into time-sorted CSV/Spreadsheets for
easier analysis, without the use of the MS Excel Macro. Also included is an
option to build an HTML report with graphs, which is configured through
report.config.

positional arguments:
  input_file            Input NMON file

optional arguments:
  -h, --help            show this help message and exit
  -x, --overwrite       overwrite existing results (Default: False)
  -d, --debug           debug? (Default: False)
  -o OUTDIR, --output OUTDIR
                        Output dir for CSV (Default: ./data/)
  -c, --csv             CSV output? (Default: False)
  -b, --buildReport     report output? (Default: False)
  -r CONFFNAME, --reportConfig CONFFNAME
                        Report config file, if none exists: we will write the
                        default config file out (Default: ./report.config)
There are 2 main options of using this tool
1. Turn the nmon file into a set of separate CSV file
2. Generate an HTML report with matplotlib graphs
The following command does both:
$> ./pyNmonAnalyzer.py -c -b test.nmon
This will create a directory called ./data in which you will find a folder of CSV files("./data/csv/"), a folder of PNG graphs("./data/img/") and an HTML report ("./data/report.html").
By default the HTML report will include graphs for CPU, Disk Busy, Memory utilization and Network transfers. This is all defined in a self explanitory configuration file, "report.config". At the moment this is not yet very flexible as CPU and MEM are not configurable besides on or off, but one of the next steps will be to refine the plotting approach and to expose more flexibility with which graphs plot which data points.

bash에 ll 명령어 사용하기

bashrc에 추가한다.

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

vimrc 설정

홈 디렉토리의

.vimrc 파일을 열고 다음 내용을 추가한다.



"파일 형식에 따른 신택스 하이라이팅 켜기
syntax on
colo ron

" 줄번호 표시
set nu

" 자동 들여쓰기 
set ai


" c 스타일 들여쓰기 
set cindent

" 줄 번호 표시 너비 설정
set nuw=5

" 탭 크기 설정
set ts=4


" 이동 동작시 줄의 시작으로 자동 이동
"set sol

" Vim 전용 기능 사용
"set nocp

" 완성중인 명령을 표시
set sc

bash 컬러 설정하기

.bashrc 를 열고

적당한 곳에


export TERM=xterm-color   을 추가한다..

리눅스 프로세스당 열 수 있는 파일 수 설정하기

리눅스에서 프로세스당 파일 수가 기본적으로 1024개로 한정되어 있습니다.
저는 대략 4096개를 열려고 했으나 안되더군여.
프로그램에서 setrlimit 라는 함수로 동시파일수를 설정할 수 있으나
그 프로세스의 권한이 root인 경우에만 가능하므로 프로그램으로는
큰 의미가 없구여.
/etc/security/limits.conf 파일을 변경하면 바로 해결됩니다.
다음 부분을 삽입하면 되는데
#<domain> <type> <item> <value>
#
[userid] soft nofile 65536<------
[userid] hard nofile 65536<-------
#* soft core 0
처럼 화살표 부분을 삽입하면 프로세스당 4096개를 열 수 있게 됩니다.
[userid]는 리눅스 로긴 ID입니다.

Core Dump 설정

segment fault가 발생하면 자동으로 corefile이 생성


1. 덤프 상태 조회

ulimit -a 로 조회
core file size가  0이면 덤프가 남지 않는 상태.

2. 덤프 사이즈 변경

ulimit -c unlimited 로 덤프 사이즈를 변경한다. 사이즈는 마음대로

3. /etc/profile 파일을 수정한다

파일 안에 

ulimit -S -c 0 > /dev/null 2>&1            이 있으면

ulimit -c unlimited > /dev/null 2>&1      로 변경 없으면 추가 입력

4. /etc/sysctl.conf 파일을 수정

파일 안에 다음 내용을 추가한다.

kernel.core_uses_pid = 1 kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t fs.suid_dumpable = 2


참조

  1. kernel.core_uses_pid = 1 - Appends the coring processes PID to the core file name.
  2. fs.suid_dumpable = 2 - Make sure you get core dumps for setuid programs.
  3. kernel.core_pattern = /tmp/core-%e-%s-%u-%g-%p-%t - When the application terminates abnormally, a core file should appear in the /tmp. The kernel.core_pattern sysctl controls exact location of core file. You can define the core file name with the following template whih can contain % specifiers which are substituted by the following values when a core file is created:
    • %% - A single % character
    • %p - PID of dumped process
    • %u - real UID of dumped process
    • %g - real GID of dumped process
    • %s - number of signal causing dump
    • %t - time of dump (seconds since 0:00h, 1 Jan 1970)
    • %h - hostname (same as ’nodename’ returned by uname(2))
    • %e - executable filename



5.  sysctl 을 새로운 설정으로 재시작

sysctl -p  을 치면 재시작 되면서 추가된 옵션이 에코된다.



6. /etc/security/limits.conf 파일에

*  soft  core  unlimited    추가





추가로 테스트할때는 cmake를 디버그용으로 빌드하자 .

cmake -DCMAKE_BUILD_TYPE=Debug [파일경로]