버전 : CentOS 7


1. top 명령어로 리눅스 시스템 프로세스 실시간으로 확인


명령어 : $ top

 - 프로세스의 자원사용 현황을 실시간으로 확인(3초마다 refresh)


결과화면 : 

top - 05:37:07 up  3:25,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  7959276 total,  7011384 free,   540156 used,   407736 buff/cache
KiB Swap: 16777212 total, 16777212 free,        0 used.  7101344 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND              
    1 root      20   0  193628   6724   3960 S   0.0  0.1   0:04.39 systemd              
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd             
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/0          
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H         
    7 root      rt   0       0      0      0 S   0.0  0.0   0:00.04 migration/0          
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh               
    9 root      20   0       0      0      0 S   0.0  0.0   0:00.78 rcu_sched            
   10 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 watchdog/0           
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 watchdog/1           
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/1          
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.13 ksoftirqd/1          
   16 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 watchdog/2           
   17 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 migration/2          
   18 root      20   0       0      0      0 S   0.0  0.0   0:00.02 ksoftirqd/2          
   20 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/2:0H         
   21 root      rt   0       0      0      0 S   0.0  0.0   0:00.06 watchdog/3           
   22 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migration/3          
   23 root      20   0       0      0      0 S   0.0  0.0   0:00.01 ksoftirqd/3          
   25 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/3:0H

부가설명 : 

키보드의 스페이스바를 누르면 즉시 refresh 가능

키보드의 방향키로 프로세스 목록 확인 가능

q나 Ctrl+C를 눌러서 프로세스 감시창을 닫을수 있습니다.


Tasks: 238 total,   1 running, 237 sleeping,   0 stopped,   0 zombie

tasks : 실행된 전체 프로세스의 수

running : 실행중인 프로세스의 수

sleeping : 유휴상태의 프로세스 수

stopped : 종료된 프로세스의 수

zombie : 좀비 프로세스의 수


%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

%Cpu(s)(프로세스가 사용하는 CPU 사용률)

us : 사용자의 CPU 사용률

sy : 시스템의 CPU 사용률

ni : nice에 의한 CPU 사용률

id : 사용 되지않는 CPU 사용률

wa : 입출력 대기에 쓰인 시간

hi : 인터럽트(hard interrupt) 처리에 쓰인 시간

si : 인터럽트(soft interrupt) 처리에 쓰인 시간

st : 가상화 환경(하이퍼바이저)에서의 Steal Time


KiB Mem :  7959276 total,  7011384 free,   540156 used,   407736 buff/cache

KiB Mem(메모리 현황 확인)

total : 할당된 전체 메모리

free : 사용하지않는 여유 메모리

used : 사용중인 메모리

buff : 버퍼 메모리


KiB Swap: 16777212 total, 16777212 free,        0 used.  7101344 avail Mem

Swap 메모리 현황(스왑 메모리 - 주 메모리가 부족할때, 하드디스크와 같은 공간을 메모리로 사용하기 위한 가상 메모리를 칭합니다.)

total : 전체 스왑 메모리

free : 사용하지 않는 여유 스왑 메모리

used : 사용중인 스왑 메모리


PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

PID : 해당 프로세스의 ID

USER : 해당 프로세스를 실행시킨 사용자

PR : 해당 프로세스의 우선순위

NI : 해당 프로세스의 Nice Value

VIRT : 해당 프로세스가 사용한 가상 메모리

RES : 해당 프로세스의 사용한 물리 메모리

SHR : 해당 프로세스의 공유 메모리

S : 해당 프로세스의 상태

%CPU : 해당 프로세스의 CPU 사용률

%MEM : 해당 프로세스의 메모리 사용률

TIME+ : CPU 사용시간 값(100분의 1초 단위로 반영)

COMMAND : 프로세스 실행 명령



명령어 : $ top | grep "이름"

- 원하는 프로세스만 확인



2. ps 명령어로 리눅스 시스템 프로세스 실행상태 출력


명령어 : $ ps [옵션]

$ ps ax (간단하게 모든 실행 프로세스를 출력)

$ ps axu (간단하게 모든 실행 프로세스를 출력)

$ ps -e | grep "이름"(해당 이름으로 검색한 결과를 -e 옵션을 주고 모두 출력)

! 리눅스는 옵션 조합이 자유롭기에 얼마든지 원하는 형태로 출력할 수 있습니다.



3. kill 명령어로 해당 프로세스 죽이기 


명령어 : $ kill [옵션]

$ kill -9 pid(해당 프로세스를 -9옵션을 주어 강제종료)

$ kill -15 pid(해당 프로세스를 -15옵션을 주어 작업종료, -9 옵션보다 안정적임)



Git 설치하기

-- Git 설치


# yum install git



-- 설치 화면

Loaded plugins: fastestmirror, langpacks
base                                                               | 3.6 kB  00:00:00     
extras                                                             | 3.4 kB  00:00:00     
mariadb                                                            | 2.9 kB  00:00:00     
updates                                                            | 3.4 kB  00:00:00     
(1/2): extras/7/x86_64/primary_db                                  |  98 kB  00:00:00     
(2/2): mariadb/primary_db                                          |  21 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * extras: centos.mirror.cdnetworks.com
 * updates: centos.mirror.cdnetworks.com
Package git-1.8.3.1-6.el7_2.1.x86_64 already installed and latest version
Nothing to do


-- git hub 사용시


Git 사용자추가

# git config --global user.name "test"

# git config --global user.email "test@abcdefg.net"


Git 환경 설정

# git config --global color.ui auto 

//Git 명령어 실행시 출력될 화면을 좀더 컬러풀하게 설정한다.

# git config --global alias.st status 


Git 설정 확인

# git config -l


user.name=test

user.email=test@daum.net

color.ui=auto

alias.st=status


-- git server설정


1. 서버 git 설치 및 계정 생성


# adduser git // git 계정 생성

# passwd git // git 암호 설정

# su git // 생성한 계정으로 전환

# cd // 홈 디렉토리(/home/사용자명(git))로 이동


# ssh-keygen -t rsa //rsa 암호화 방식으로 key 생성

Generating public/private rsa key pair.

Enter file in which to save the key (/home/git/.ssh/id_rsa): // 그냥 Enter

Enter passphrase (empty for no passphrase): // 그냥 Enter

Enter same passphrase again: // 그냥 Enter

# ls -al ~/.ssh // /home/git/.ssh에 id_rsa, id_rsa.pub이 생성되었는지 확인

# exit // git 계정 로그아웃

# exit // 서버 원격 계정 로그아웃


2. 내 PC git 설치 및 기본 설정


설치 url : https://git-for-windows.github.io/


설치가 완료되면 git bash 창을 띄우고 

# git --version // git 버전확인

# git config --global user.name "사용자이름" // 사용자 이름 입력

# git config --global user.email "사용자이메일" // 사용자 이메일 입력

# git config --global color.ui "auto" // 색상 자동 설정

# git config --global --list // 설정 확인


3. 내 PC SSH Key 생성


# ssh-keygen -t rsa //rsa 암호화 방식으로 key 생성

Enter file in which to save the key (/c/Users/사용자이름/.ssh/id_rsa): // 그냥 Enter

Enter passphrase (empty for no passphrase): // 그냥 Enter

Enter same passphrase again: // 그냥 Enter

#ls -al ~/.ssh // 해당 명령어를 입력하거나 윈도우 폴더 경로로 들어가서 id_rsa, id_rsa.pub 파일이 생성되었는지 확인

4. Public Key를 서버에 전송

# cd .ssh // /home/사용자명/.ssh 디렉토리로 이동
# $ scp id_rsa.pub git@서버도메인: // 서버의 git 계정 home 디렉토리에 공개키를 복사(암호를 묻는다면 git 계정 암호 입력)

5. 전송받은 Public key 등록

# ssh git@서버도메인 // ssh로 서버 원격 접속 및 git 계정 암호 입력
# cd // 홈디렉토리로 이동
# ls -al // 전송한 id_rsa.pub 파일이 존재하는지 확인
# cat id_rsa.pub >> .ssh/authorized_keys //authorized_keys 파일을 생성하고 다음 내용을 추가
# rm -f id_rsa.pub // id_rsa.pub 
# chmod 700 .ssh  //.ssh 디렉토리 권한 설정 (매우 중요)
# chmod 600 .ssh/authorized_keys //authorized_keys 파일 권한 설정 (매우 중요)
# exit // 원격 접속 해제

6. 접속 테스트

# ssh git@서버도메인(암호를 물어보지않는다면 성공)
! 암호를 물어본다면 설정에 문제가 있는 것(-v, -vv, -vvv 옵션 등을 추가하여 디버깅합니다.)
# exit // 로그아웃

7. Git Repository 생성

# ssh root@서버도메인 // ssh로 서버 원격 접속(root 계정으로 접속)
# mkdir -p /git_repository/project.git // /git_repository/project.git 디렉토리 생성
# chown git:git /git_repository // 소유권 변경
# chown -R git /git_repository/project.git // 소유권 변경
# su git // git 계정으로 전환

# cd /git_repository/project.git // 해당 디렉토리로 이동
# git --bare init // 디렉토리 초기화
! Initialized empty Git repository in /git_repository/project.git/ 메세지 출력 확인
# cd 홈디렉토리(home/사용자명)로 이동
# ln -s /git_repository/project.git // /home/사용자명/poject.git 심볼릭 링크 생성(project.git -> /git_repository/project.git)
# exit // git 계정 로그아웃
# exit // root 계정 로그아웃

8. 내 PC에서 최초의 clone&commit

# cd c: // c드라이브로 이동
# mkdir project // project 폴더 생성 및 이동
# git clone git@서버도메인:project.git
Cloning into 'project'... 메세지 출력 확인


warning: You appear to have cloned an empty repository.
# cd project // C:\project로 이동
# echo “Hello!!” > readme.txt // readme.txt 생성
# git add readme.txt // add
# git commit -m ‘commit test’ // commit
# git push origin master // push
# git status // status 확인
# git log // log 확인
# git pull // 최신 내용으로 업데이트

9. git 동기화 (client)

작업 완료 후, 이동
# git pull
# git add -–all
# git commit -m ‘.’ 
# git push

10.보안을 위해서 쉘기능 제한 (optional) (client->server)

Git 계정으로 접속한 유저들이 서버를 휘젓고 다니는 것을
막기 위해 쉘기능을 제한한다.

# vi /etc/passwd
위에서 등록한 Git 계정을 찾아 /bin/bash 부분을 /usr/bin/git-shell로 변경한다.
git:x:1001:1001::/home/git:/bin/bash
git:x:1001:1001::/home/git:/usr/bin/git-shell

exit // root 계정에서 탈출 (원격 서버 접속 해제)

다시 Git 계정으로 접속해보면 아래와 같은 메시지를 출력하면서 접속이 제한된다.

fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access.













안녕하세요, 오늘은 CentOS를 설치해보겠습니다. 

먼저, 다운받은 CentOS 7(Minimal/Everything) iso 파일로 부팅 USB를 만들어서 빠르고

간편하게 설치해보도록 하겠습니다. 


일단 프로그램은 2가지를 소개해드릴까하는데 첫번째 프로그램은 일부 파일들을 옮기지 못하는 등,

불안정하여 오류가 발생한다고하니 두번째 프로그램으로 설치하시는 것을 추천드립니다. :)


iso 파일은 공식 홈페이지에서 다운이 가능하니 참고하시기 바랍니다. : CentOS 공식홈페이지



  1) UUI로 설치하기

 

방법은 해당 링크의 페이지로 가셔서 : universal-usb-installer 설치

universal-usb-installer(UUI)를 다운 및 설치 하도록 합니다.




선택항목에서는 CentOS를 선택, Browse를 클릭하여 iso 파일의 경로를 지정해줍니다.

USB경로도 잘 지정되어있는지 확인해준 다음 Create 버튼을 클릭합니다.




몇 분 기다리다보면 완료가 되고 USB에 CentOS 설치파일들이 이동한 것을 확인할 수 있습니다.

다음으로는 해당 USB로 CentOS 설치 작업만 해주시면 됩니다.





  2) Win32DiskImager로 설치하기


해당 프로그램으로 부팅USB를 만들게되면 안정적인 설치를 할 수 있습니다.

먼저 프로그램을 설치해보도록하겠습니다. : Win32DiskImager 설치



설치가 완료되면 Image File로 iso 파일을 선택하고 Device 항목에서 인식된 USB를 선택해줍니다.




차 한잔 우려낼 정도의 시간이 지나면 CentOS 부팅 USB가 완성됩니다.


※ 해당 프로그램 이용시 파일 포맷이 변경 됨, 부팅 USB를 다시 Windows에서 사용하려고 할때에는 일련의 작업을

거치지 않고는 사용할 수 없게되므로 주의 할 것







안녕하세요, 오늘은 티스토리에 최근에 알게된 텐핑 소문박스를 달아보려고 합니다. 제일기획 사내 TF로 시작해 지난해 7월 별도 법인으로 독립한 텐핑은 누구나 쉽게 광고를 소문내고, 소문을 낸 공유자는 그 효과에 따라 일정 수익을 배분 받는데요.


애드센스보다 수익률은 떨어지지만 텐핑은 기본적으로는 CPC 더나아가 CPS, CPA, CPI등 다양한 광고 형식을 지원하고, 간편하게 광고를 삽입할 수가 있어서 요즘 블로거들이 많이 선호하는 서비스인 것 같습니다.


- 여기서 CPC란?

CPC(Cost Per Click) : 광고 클릭수에 따라 광고비를 지불하거나 수익을 얻는다.

CPA (Cost Per Action) : 소비자가 특정 액션을 취할때 마다 광고비를 지불하거나 수익을 얻는다.(ex 회원가입/이벤트참여/설문조사 등)

CPS (Cost Per Sale) : 실질적인 매출이 발생했을때 발생건수에 따라 광고비를 지불하거나 수익을 얻는다.

CPI (Cost Per Install) : 스마트폰 어플 등 프로그램의 설치할때 설치된 기기 수에 따라  광고비를 지불하거나 수익을 얻는다.

CPM (Cost Per Mille) : 1000회 노출당 광고단가로, 노출수에 따라 광고비를 지불하거나 수익을 얻는다.


특히 저같은 경우는 구글 애스센스 검토가 3일이 지나고, 한달이 지나도 소식이 없어서 임시로 텐핑을 달아보았는데요, 수익은 아직 미미하지만, 추후 수익이 발생한다면 그 내용은 따로 포스팅하도록 하겠습니다. 




 블로그에 텐핑(모바일/PC) 광고(소문박스) 달기 



1. 텐핑 가입하기


- 텐핑 홈페이지로 접속 후 회원가입을 합니다.

- 회원가입 절차는 간단하며 인증번호를 받고, 약관에 동의하면 회원가입에 성공하게 됩니다.

- 참고로 회원 가입하시고 선후배 맺기에서 loveydovey4500@gmail.com을 입력해주시면 선후배가 함께 추가 인센티브를 받는다고하니 등록해주시면 더 좋을 것 같네요^^



2. 텐핑 모바일 광고 삽입하기



- 회원가입 후, 홈페이지에 접속하면 왼쪽 메뉴에서 소문박스를 클릭합니다.

- 그러면 위 화면처럼 광고코드(일부가림)가 보이는데 그대로 복사합니다.



- 그런다음 티스토리 관리자메뉴에서 플러그인 설정 -> 텐핑 (모바일용)을 클릭하신다음 복사한 광고코드를 그대로 삽입하면 모바일기기에서 해당 광고가 노출되게 됩니다.



3. 텐핑 PC 광고 상단에 삽입하기



- 티스토리에 PC에서 보이는 광고를 삽입하고 싶으시면 관리자 메뉴 > HTML/CSS 편집화면으로 들어갑니다.

- 그러면 HTML/CSS 소스코드가 보이는데 여기서 소스코드 아무데나 클릭하시고 Ctrl+F를 누른다음  을 검색합니다. 그러면 위에서 보이는 화면처럼 해당영역으로 이동하게되는데 거기다가 소문내기에서 복사해온 소스코드를 삽입해주시면 광고가 노출되게 됩니다. 


[소스코드 삽입 예시]

<div class="article">

// 텐핑 소문내기 소스코드 삽입 위치(광고는 되도록 작은형태로)

<div>


이상으로 텐핑 광고 삽입에 대한 블로깅을 마칩니다.


참고 사이트 : https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletRequest.html


클라이언트의 요청 정보를 확인하기 위해서  Interface HttpServletRequest 객체를 사용합니다.

보통 Spring MVC 구조에서는 컨트롤러나 인터셉터에서 parameter를 추가하여 사용하는 편인데 그 내용은 아래 코드에서

확인하도록 하겠습니다.


  예제코드


sampleContorller.java

@RequestMapping(value = "/getDomainInfo/example/test", method = RequestMethod.GET) public ModelAndView getDomainInfo(HttpServletRequest request) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("RequestURL", request.getRequestURL()); modelAndView.addObject("RequestURI", request.getRequestURI()); modelAndView.addObject("ContextPath", request.getContextPath()); modelAndView.addObject("ServletPath", request.getServletPath()); modelAndView.addObject("QueryString", request.getQueryString()); modelAndView.addObject("ServerName", request.getServerName()); modelAndView.addObject("ServerPort", request.getServerPort()); modelAndView.addObject("Method", request.getMethod()); modelAndView.addObject("Referer", request.getHeader("referer")); modelAndView.setViewName("test"); return modelAndView; }

test.jsp

<div> <h3>RequestURL</h3> <ul> <li> 요청정보 : ${RequestURL } </li> <li> 리턴정보 : ${RequestURL } </li> </ul> <h3>RequestURI</h3> <ul> <li> 요청정보 : ${RequestURI } </li> <li> 리턴정보 : ${RequestURI } </li> </ul> <h3>ContextPath</h3> <ul> <li> 요청정보 : ${ContextPath } </li> <li> 리턴정보 : ${ContextPath } </li> </ul> <h3>ServletPath</h3> <ul> <li> 요청정보 : ${ServletPath } </li> <li> 리턴정보 : ${ServletPath } </li> </ul> <h3>QueryString</h3> <ul> <li> 요청정보 : ${QueryString } </li> <li> 리턴정보 : ${QueryString } </li> </ul> <h3>ServerName</h3> <ul> <li> 요청정보 : ${ServerName } </li> <li> 리턴정보 : ${ServerName } </li> </ul> <h3>ServerPort</h3> <ul> <li> 요청정보 : ${ServerPort } </li> <li> 리턴정보 : ${ServerPort } </li> </ul> <h3>Method</h3> <ul> <li> 요청정보 : ${Method } </li> <li> 리턴정보 : ${Method } </li> </ul> <h3>Referer</h3> <ul> <li> 요청정보 : ${Referer } </li> <li> 리턴정보 : ${Referer } </li> </ul> </div>


  결과화면


http://localhost:8080/getDomainInfo/example/test?ver=2017&test_id=test 로 요청하여 jsp페이지에 출력된 결과화면입니다.


RequestURL :

 쿼리스트링을 제외한 Protocol(http)+ServerName(도메인)+Port(8080)+ContextPath+ServletPath를 반환합니다.

- 요청정보 : http://localhost:8080/getDomainInfo/example/test

- 리턴정보 : http://localhost:8080/getDomainInfo/example/test


RequestURI: 

 프로젝트의 Context Path + Servlet Path, 즉 전체 경로를 반환합니다.

- 요청정보 : /getDomainInfo/example/test

- 리턴정보 : /getDomainInfo/example/test


ContextPath :

 프로젝트의 Context path를 반환합니다.

- 요청정보 : /getDomainInfo

- 리턴정보 : /getDomainInfo


ServletPath :

 프로젝트의 Servlet path를 반환합니다.

- 요청정보 : /example/test

- 리턴정보 : /example/test


QueryString :

 쿼리 스트링(Query String)의 문자열을 반환합니다.

- 요청정보 : ver=2017&test_id=test

- 리턴정보 : ver=2017&test_id=test


ServerName :

 ServerName(도메인)을 반환합니다.

- 요청정보 : localhost

- 리턴정보 : localhost


ServerPort :

 ServerPort 정보를 반환합니다.

- 요청정보 : 8080

- 리턴정보 : 8080


Method: 

 get / post 정보를 반환합니다.

- 요청정보 : GET

- 리턴정보 : GET


Referer :

링크를 이동할 경우 이동하기 전에 링크를 포함하고 있던 페이지의 URL을 반환합니다.(링크를 클릭한 경우에만 출력)

- 요청정보 : (공백)

- 리턴정보 : (공백)