페이스북에 접속 - 내 프로필로 이동~

F12 를 눌러서 내가 사용할 프로필을 클릭!

src = "http 쏼라쏼라"

href = "http 쏼라쏼라"


복사 해서


내 블로거 테마에서 넣을 곳에

src="http 쏼라쏼라" 

href="http 쏼라쏼라"


붙여 넣어주면 끝~!

Tomcat의 로그를 보다보니 날짜별로 로그 파일을 나누어 쌓고 있음과 동시에 catalina.out이라는 파일에도 중복하여 로그를 쌓는것을 알수 있다.

이 파일은 끝없이 커지는데 관리상 좋지 못한것은 자명한 일이다. 이 문제를 해결하기 위해 catalina.sh 파일을 수정한다.

start 부분을 찾아 다음과 같이 수정하자.

elif [ "$1" = "start" ] ; then
    shift
#  touch "$CATALINA_BASE"/logs/catalina.out
 
if [ "$1" = "-security" ] ; then
    echo
"Using Security Manager"
    shift
   
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
     
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
     
-Djava.security.manager \
     
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
     
-Dcatalina.base="$CATALINA_BASE" \
     
-Dcatalina.home="$CATALINA_HOME" \
     
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
      org
.apache.catalina.startup.Bootstrap "$@" start \
     
>> /dev/null 2>&1 &
#      >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

     
if [ ! -z "$CATALINA_PID" ]; then
        echo $
! > $CATALINA_PID
     
fi
 
else
   
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
     
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
     
-Dcatalina.base="$CATALINA_BASE" \
     
-Dcatalina.home="$CATALINA_HOME" \
     
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
      org
.apache.catalina.startup.Bootstrap "$@" start \
     
>> /dev/null 2>&1 &
#      >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &

     
if [ ! -z "$CATALINA_PID" ]; then
        echo $
! > $CATALINA_PID
     
fi
 
fi


catalina out 만들고 없애는 방법


* 추가 - 더 편한 방법
언제 부터인가 위의 설정이 >> "$CATALINA_OUT" 2>&1 &와 같이 바뀌었습니다.
/etc/profile에 다음을 추가하셔도 한방에 해결됩니다.

export CATALINA_OUT="/dev/null"


출처 -  http://theeye.pe.kr/entry/Tomcat-%EB%AC%B4%EB%B6%84%EB%B3%84%ED%95%98%EA%B2%8C-catalinaout-%ED%81%AC%EA%B8%B0-%EC%BB%A4%EC%A7%80%EB%8A%94%EA%B2%83-%EB%A7%89%EA%B8%B0 






Tomcat Catalina.out 로그로테이션


톰캣서버의 로그파일은 그대로 두면 사이즈가 엄청나게 커져 있음은 물론이고,

한 파일에 지금까지의 로그가 모두 기록되어 있기 때문에 필요한 정보 검색에도 불편함이 있다.
그래서 로그파일을 년/월/주/일 등의 간격으로 로테이션 시킬 필요가 있다.

지금 일하고 있는 회사에서도 상당히 많은 리눅스 서버에서 톰캐서버를 가동시키고 있는데
일주일에 한번 메인터넌스 작업중 톰캣을 정지시키고 수동으로 백업하는 작업을 해오고 있었다.

로그로테이션에 대해 알아보니 여러가지 방법이 있었는데 그 중에 추가 설치 없이 제일 편하게 사용할 수 있는 방법이
아파치 서버를 설치하면 기본 설치되는 "rotatelogs" 이다.

설정방법은 간단하다.

%CATALINA_HOME%bin/catalina.sh 수정 

1. touch "$CATALINA_BASE"/logs/catalina.out 를 삭제 또는 커멘트 처리

2. "$CATALINA_BASE"/logs/catalina.out2>&1 & 를 다음과 같이 수정
 | /usr/local/apache/bin/rotatelogs "$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d 86400 540 &

단, 수정할 부분이 두 줄이므로 주의할 것(두 줄다 수정)
86400은 일단위로 로테이션(초단위 설정)
540은 표준시와 한국시간과의 시간차

위의 설정을 완료한 뒤, 톰캣서버를 재기동하면 catalina.out.yyyy-mm-dd 형식의 파일이 생성되어 있음을 알 수 있다.

이상으로 로테이션 설정은 완료.

이전 파일을 삭제하거나 압축해서 보관하는 쉘을 Cron에 등록해서 정기적으로 관리하면 더 좋겠다.



출처 -  http://siho.tistory.com/52 






Apache Tomcat의 로그파일인 catalina.out은 기본적으로 순환되지 않고 한개의 파일로 계속해서 로그가 쌓이게 됩니다.

이게 나중에 가면 크기가 매우 커져서 문제가 발생할 소지가 있는데요..
이 파일을 순환시키기 위한 방법을 소개합니다.


이와같은 기능을 찾아보면 일반적으로 cronolog같은 툴을 사용하거나 log4j를 이용하도록 한 다른 글들을 찾아볼수 있는데 이는 상당히 번거롭고 추가적인 툴이 필요한 방법이기 때문에 리눅스의 기본 로그 순환 도구를 이용하여 사용하는 방법을 설명한다.


/etc/logrotate.d 디렉토리 안에 아래의 파일을 생성한다.

$ cd /etc/logrotate.d
$ cat > tomcat

/var/local/tomcat/logs/catalina.out {
 copytruncate
 daily
 rotate 30
 compress
 missingok
 notifempty
 delaycompress
}


여기서 중요한 부분은 copytruncate 부분입니다.

저옵션을 쓰지 않으면 기존의 맨처음 로그가 생성된 파일에 계속해서 로그가 쌓이게 됩니다.
이러한 원인은 톰캣의 로그가 System.err 객체나 System.out을 사용하기 때문에 시스템의 raw디바이스로 출력이 되어 파이프를 타지 않기 때문입니다.

따라서 원래 로그를 다른이름으로 저장하고 새로운 catalina.out을 생성한다해도 실제 로그 스트림은 다른이름으로 지정된 원래 로그쪽으로 계속해서 쌓이게 됩니다.

이걸 방지하기 위해 현재 로그내용을 복사하여 백업본으로 저장한후 원본 로그의 내용을 비우는 방식으로 저장해야 합니다.

그래서 옵션을 copytruncate를 사용해야 합니다.


이렇게 하면 톰캣의 catalina.out로그가 매일 하나씩 쌓이게 됩니다.


출처 - http://koov.net/blog/?/tag/rotate






Catalina로그를 한 파일에 누적되는 것을 피하기 위해서 보통은 cronolog,  log4j를 활용을 많이 하는데 기존 리눅스 시스템의 소프트웨어를 활용하는 방안을 하나 소개해 드립니다.

1. /etc/logrotate.d 디렉토리 안에 아래의 파일을 생성

$ cd /etc/logrotate.d
$ cat tomcat

${CATALINA_HOME}/logs/catalina.out {
 copytruncate
 daily
 rotate 30
 compress
 missingok
 notifempty
dateext
}
$logrotate -f /etc/logrotate.d/tomcat # 로그파일 순환 테스트
  • copytruncate : 기존 파일을 백업해서 다른 파일로 이동하고 기존 파일은 지워버리는 옵션
  • daily : 로그파일을 날짜별로 변환
  • compress : 지나간 로그파일들을 gzip으로 압축
  • dateext : 순환된 로그파일의 날짜확장자
  • missingok : 로그파일이 없더라도 오류를 발생시키지 않음
  • rotate 30 : 로그 파일은 30개만큼 저장된 다음 제거되거나 메일로 보내짐
  • notifempty : 파일의 내용이 없으면 새로운 로그 파일을 생성 안함


2. 그외 일자별로 저장 방법


출처 - http://www.mimul.com/pebble/default/2009/12/27/1261911840000.html


 





원문 : http://dev-world.springnote.com/pages/6460973?print=1



/etc/logrotate.d 을 이용한 catalina.out 나누기

 

Apache Tomcat의 로그파일인 catalina.out은 기본적으로 한개의 파일에 로그가 쌓이게 됩니다.

2009-11-13_130656.png



Tomcat을 재시작 하지 않는 이상 계속적으로 쌓이는 듯합니다. 벌써 용량이 후덜덜하네요.
이 파일을 다시는 볼일이 없다면 상관이 없지만...
열어 보려고 한다면... 시간 꽤 걸리듯합니다.
catalina.out의 만행을 그냥 두고 못 본척하신다면... 나중에 눈물 흘릴 수도 있습니다. :")

저도 모니터링 중에 문제가 생겨서 확인하려고 catalina.out 파일을 열어봤더니...
시간이 좀 걸리더군요...

그래서 catalina.out을 나누는 방법을 검색해봤습니다.

로그 파일을 rotate하는 방법에는 보통 4가지가 있습니다.

1. log4j
2. cronolog
3. logrotate
4. shell script


이번 포스트에서는 logrotate에 대하여 알아보겠습니다. 가장 사용하기 쉽고 제가 원하는 동작을 하더군요. :")

구분위치 및 실행 방법설명
데몬(위치)/usr/sbin/logrotate데몬의 위치 및 데몬프로그램
데몬 설정파일/etc/logrotate.conf설정파일
설정디렉토리/etc/logrotate.dlogrotate에 적용할 각종로그파일들 보관하는 디렉토리
상황파일/var/lib/logrotate.statuslogrotate한 작업내역을 보관한 파일
cron(일단위)/etc/cron.daily/logrotatelogrotate는 주기적으로 실행이되어야하므로 cron에 의해 일단위로 실행이 됨


Apache Tomcat 로그 순환 설정 : http://koov.net/blog/?/tag/rotate
위 블로그 가시면 간단히 catalina.out 로그 파일을 자동으로 나누게 설정하는

방법이 있습니다.

$ cd /etc/logrotate.d
$ cat > tomcat

/var/local/tomcat/logs/catalina.out {
copytruncate
daily
rotate 30
missingok
notifempty
}

$ logrotate -f /etc/logrotate.d/tomcat


실행 후 화면,

2009-11-13_133538.png



위 이미지와 같이 catalina.out.1 이라는 파일이 생성되는군요. 흠... 그럼 1, 2, 3 이런식으로 쌓일텐데 관리자의 입장에서는 좀 불편할 수도.... Buuuuuuuuuuut!!!!!

dateext 라는 옵션이 있군요!!!

$ cd /etc/logrotate.d
$ cat > tomcat

/var/local/tomcat/logs/catalina.out {
copytruncate
daily
rotate 30
missingok
notifempty
dateext
}

$ logrotate -f /etc/logrotate.d/tomcat
2009-11-13_135242.png






알아두셔야 할 점은 copytruncate 옵션은 반드시 써야 한다고 합니다.

copytruncate 옵션을 쓰지 않으면 기존의 맨처음 로그가 생성된 파일에 계속해서 로그가 쌓이게 됩니다. 이러한 원인은 톰캣의 로그가 System.err 객체나 System.out을 사용하기 때문에 시스템의 raw디바이스로 출력이 되어 파이프를 타지 않기 때문입니다.
따라서 원래 로그를 다른이름으로 저장하고 새로운 catalina.out을 생성한다해도 실제 로그 스트림은 다른이름으로 지정된 원래 로그쪽으로 계속해서 쌓이게 됩니다.
이걸 방지하기 위해 현재 로그내용을 복사하여 백업본으로 저장한후 원본 로그의 내용을 비우는 방식으로 저장해야 합니다.
그래서 옵션을 copytruncate를 사용해야 합니다.

copytruncate
Truncate the original log file in place after creating a copy, instead of moving the old log file and optionally creating a new one, It can be used when some program can not be told to close its logfile and thus might continue writing (appending) to the previous log file forever. Note that there is a very small time slice between copying the file and truncating it, so some logging data might be lost. When this option is used, the create option will have no effect, as the old log file stays in place.




logrotate의 설정 옵션에 대하여 조금 더 알아보면은,

dailyLog files are rotated every day.
weeklyLog files are rotated if the current weekday is less than the weekday of the last rotation or if more than a week has passed since the last rotation. This is normally the same as rotating logs on the first day of the week, but if logrotate is not being run every night a log rotation will happen at the first valid opportunity.
monthlyLog files are rotated the first time logrotate is run in a month (this is normally on the first day of the month).
notifemptyDo not rotate the log if it is empty (this overrides the ifempty option).
nocompressOld versions of log files are not compressed.
delaycompressPostpone compression of the previous log file to the next rotation cycle. This only has effect when used in combination with compress. It can be used when some program cannot be told to close its logfile and thus might continue writing to the previous log file for some time.
compressOld versions of log files are compressed with gzip by default.
mail addressWhen a log is rotated out of existence, it is mailed to address. If no mail should be generated by a particular log, the nomail directive may be used.
missingokIf the log file is missing, go on to the next one without issuing an error message.


보다 더 많은 옵션과 설명을 보시려면, http://linuxcommand.org/man_pages/logrotate8.html를 참고하세요.

superuser 사이트입니다. 옵션에 대해서 한글로 자세히 설명되어 있습니다.
http://www.superuser.co.kr/linux/logrotate/page04.htm



출처 : http://linuxism.tistory.com/298

쉘 프로그래밍 문법들

쉘의 기능
- 명령어 해석기 기능
  사용자와 커널 사이에서 명령을 해석하여 전달
  사용자가 입력한 명령이나 파일에서 읽어들인 명령을 해석하고 적절한 프로그램을 실행

- 프로그래밍 기능
  쉘은 자체 내에 프로그래밍 기능이 있어 프로그램 작성가능
  쉘의 프로그래밍 기능을 이용하면 여러 명령을 사용해 반복적으로 수행하는 작업을 하나의 프로그램으로 제작 가능
  쉘 프로그램을 쉘 스크립트라고 부름

- 사용자 환경설정 기능
  초기화 파일 기능을 이용해 사용자 환경을 설정
  명령을 찾아오는 경로 설정, 새로운 파일의 기본 권한 설정, 다양한 환경변수 설정 등 사용자별로 사용 환경의 특성을 초기화 파일에 설정 가능
  로그인 할 때 이초기화 파일이 실행되어 사용자의 초기환경이 설정됨

쉘 스크립트 시작하기
1. 파일생성
- 파일을 만들기전 해당 디렉터리로 이동
- vi 에디터로 쉘 스크립트 파일 생성
- 일반적으로 쉘 프로그램의 파일 확장자는 .bash 또는 .sh를 사용함
- 이미 존재하는 다른 스크립트의 파일이름과 겹치지 않도록 함

2. 명령어작성
- vi 에디터가 실행되면 명령어 작성
- #!/bin/bash   -> #! 은 쉘에게 이 프로그램을 실행하기 위해서 #! 다음에 오는 아규먼트를 실행프로그램으로 사용한다는 것을 알려주기 위해서 사용된다
- # 는 주석처리로 사용

3. 실행권한 부여
- 쉘 스크립트를 실행하기 전에 실행 권한을 줘야한다.
- 파일이 생성되면 읽기/쓰기 권한은 있지만 실행권한은 없다

4. 쉘 스크립트를 실행
- ./filename.sh



조건문
if
쉘스크립트의 if 문을 사용하는 방식은 다음과 같다
if [ 조건 ];
then
   조건만족시 실행하고자 하는 문장
else
   조건 불만족시 실행하고자 하는 문장
fi
if문 다음의 조건을 검사하여 조건이 참이면 then 이하의 문장을 실행하고, 그렇지 않으면 else 다음의 문장을 실행한다.

elif
elif를 사용하면 여러 조건을 검사할 수 있다.
첫번째 if 명령이 참이 아닐 경우에 elif를 사용하여 변수를 테스트 한다.

if [ 조건1 ]; then
   조건 만족시 실행하고자 하는 문장
elif [ 조건2 ]; then
   조건2 만족시 실행 문장
else
   조건 불만족시 실행하고자 하는 문장
fi

case
case는 여러 패턴을 검사하고, 이에 적절한 구문을 실행시킬 수 있다. 사용자의 입력을 처리하는데 적절하다.

case variable in
  pattern [ | parrern] ....) 문장;;
  pattern [ | parrern] ....) 문장;;
  ...
esac



반복문
for
for 구문은 지정한 범위 안에서 루프를 돌리는데 사용된다. 범위에 사용되는 값은 어떠한 문자열의 집합이라도 가능하다.

for [변수] in [값]
do
         [수행문]
done

value 값은 보통 문자열. variable에는 values의 값이 차례대로 할당되면서 statement의 문장을 수행하게 된다.

for문은 2가지 방법이 있다
1. arg 변수에 1,2,3 데이터를 넣고 이 갯수만큼 돈다
    for arg in 1 2 3
    do
    echo $arg
    done
2. 기존 다른 언어 방식과 유사하다
    for((i-0;i<10;i++))

while
while 조건문
do
   문장
done

for문을 사용해 어떤 명령을 30회 수행한다면 1 2 3 .....27 28 29 30 을 일일이 적어줘야한다


builtins
break
제어문이나 조건문의 루프를 빠져 나갈 때 사용한다

continue
제어문이나 조건문의 처음으로 돌아가서 다시 수행한다

exit n
 현재 쉘을 종료한다. 종료시 n 값을 리턴한다

return
쉘 함수에서 값을 반환 할 때 쓰인다. 0은 성공을 1~125까지는 쉘 에러코드를 나타낸다

shift
쉘의 인자를 한자리씩 왼쪽으로(n -> 1로) 이동 시킨다
shift는 $1 인자를 없애고 각 인자번호를 1씩 줄인다. 즉 $2는 $1, $3은 $2와 같은 식으로 된다. 

조건문 결합 관련 연산자
조건문 A -a 조건문 B : 조건문 A와 조건문 B가 모두 참인지 체크, -a는 AND와 동일
조건문 A -o 조건문 B : 조건문 A와 조건문 B중 참이 하나라도 있는지 체크, -o는 OR과 동일


변수
- 데이터 타입이 없다
- 대소문자 구분
- 값을 대입시에는 변수명 = 값
- 변수를 사용할 때는 $변수면 또는 ${변수명}

ex)
- i=10;        #변수에 값 할당
- z="test";    #변수에 값 할당
- echo $i;    #i 변수를 화면에 출력

매개변수
$0~$9 : 옵션의 각 위치에 따른 매개 변수 값($0는 스크립트 이름)
$@ : 매개변수의 모든 값이며 공백문자로 분리
$? : 마지막 명령의 반환 값
$! : 마지막 백그라운드 명령의 프로세스 ID
$_ : 내장명령어 SET에 의해 할당된 현재 쉘 옵션
$* : 매개변수 모든 값(개별적 인용 없으며 IFS에 의하여 분리)
$$ : 현재 쉘의 프로세스 식별번호



문자열비교
[ string ] : string이 빈 문자열이 아니라면 참
[ string1 = string2 ] : 두 문자열이 같다면 참
[ string1 != string2 ] : 두 문자열이 다르면 참
[ -n string ] : 문자열이 null(빈 문자열) 이 아니라면 참
[ -z string ] : 문자열이 null(빈 문자열) 이라면 참

산술비교
[ expr1 -eq expr2 ] : 두 표현식 값이 같다면 참 ( EQual )
[ expr1 -ne expr2 ] : 두 표현식 갑이 같지 않다면 참 ( Not Equal )
[ expr1 -gt expr2 ] : expr1 > expr2 이면 참 ( Greater Then )
[ expr1 -ge expr2 ] : expr1 >= expr2 이면 참 ( Greater Equal )
[ expr1 -lt expr2 ] : expr1 < expr2 이면 참 ( Less Then )
[ expr1 -le expr2 ] : expr1 <= expr2 이면 참 ( Less Equal )
[ ! expr ] : expr 이 참이면 거짓, 거짓이면 참
[ expr1 -a expr2 ] : expr1 AND expr2 의 결과 ( 둘다 참이면 참 )
[ expr1 -o expr2 ] : expr1 OR expr2 의 결과 ( 둘중 하나만 참이면 참 )

파일조건

[ -b FILE ] : FILE 이 블럭 디바이스 이면 참
[ -c FILE ] : FILE 이 문자 디바이스 이면 참.
[ -d FILE ] : FILE 이 디렉토리이면 참
[ -e FILE ] : FILE 이 존재하면 참
[ -f FILE ] : FILE 이 존재하고 정규파일이면 참
[ -g FILE ] : FILE 이 set-group-id 파일이면 참
[ -h FILE ] : FILE 이 심볼릭 링크이면 참
[ -L FILE ] : FILE 이 심볼릭 링크이면 참
[ -k FILE ] : FILE 이 Sticky bit 가 셋팅되어 있으면 참
[ -p FILE ] : True if file is a named pipe.
[ -r FILE ] : 현재 사용자가 읽을 수 있는 파일이면 참
[ -s FILE ] : 파일이 비어있지 않으면 참
[ -S FILE ] : 소켓 디바이스이면 참
[ -t FD ] : FD 가 열려진 터미널이면 참
[ -u FILE ] : FILE 이 set-user-id 파일이면 참
[ -w FILE ] : 현재 사용자가 쓸 수 있는 파일(writable file) 이면 참
[ -x FILE ] : 현재사용자가 실행할 수 있는 파일(Executable file) 이면 참
[ -O FILE ] : FILE 의 소유자가 현재 사용자이면 참
[ -G FILE ] : FILE 의 그룹이 현재 사용자의 그룹과 같으면 참
[ FILE1 -nt FILE2 ] : FILE1이 FILE2 보다 새로운 파일이면 ( 최근파일이면 ) 참
[ FILE1 -ot FILE2 ] : FILE1이 FILE2 보다 오래된 파일이면 참
[ FILE1 -ef FILE2 ] : FILE1 이 FILE2의 하드링크 파일이면 참

정수 비교 
-eq 같다면 참($a -eq $b) 
-ne 다르다면 참($a -ne $b) 
-gt 더 크다면 참($a -gt $b) 
-ge 더 크거나 같다면 참($a -ge $b) 
-lt 더 작다면 참($a -lt $b) 
-le 더 작거나 같다면 참($a -le $b) 
 

문자열 비교
= 같다면 참($a = $b) 
!= 다르다면 참($a != $b)

출저  : http://lkrox.blogspot.kr/2013/01/blog-post_14.html


프리픽

http://www.freepik.com/

한국인 질문 사이트

asq.co.kr



안드로이드 사이드

www.androidside.com/


안드로이드 펍

androidpub.com


stackoverflow

stackoverflow.com


구글 웹마스터 도구는 구글 검색엔진에 등록된 사이트를 관리할 때 사용되는 프로그램입니다. 구글 웹마스터 도구를 이용하면 크롤링 오류와 같은 것들을 해결할 수 있으며, 수정된 페이지를 구글 검색엔진에 즉시 제출할 수 있기 때문에 특히 블로거들에게 매우 유용합니다. 우리나라에서는 티스토리 블로그를 운영하는 대부분의 블로거들이 구글 웹마스터 도구를 이용하여 본인의 블로그를 구글 검색에 최적화시키고 있습니다. 이 글에서는 티스토리 블로그에서 구글 웹마스터 도구를 이용하는 방법에 관하여 설명하겠습니다.



구글 웹마스터 도구란?


대부분의 티스토리 블로그는 구글 검색 엔진에 등록되어 있습니다. 네이버에 등록하는 것이 매우 어려운 관계로 두 번째로 많이 사용되고 있는 구글에 블로그를 등록하는 것이지요. 우리나라에서 구글 검색을 이용하는 사람이 적다 생각할 수 있겠지만, 사실은 생각보다 많은 사람들이 구글 검색을 이용하고 있습니다. 따라서 구글 검색 결과의 상위권에 본인의 블로그가 출력된다면 꾸준한 높은 수준의 방문자 유입을 기대할 수 있습니다.

블로거들이 네이버보다 구글을 더 많이 이용하는 이유는 위 문제뿐만이 아닙니다. 구글 검색은 어느정도 개방되어 있어, 블로거가 직접 본인의 블로그를 관리할 수 있기 때문에, 많은 블로거들이 구글을 이용하고 있는 것입니다. 예를 들어, 네이버에서는 절대로 불가능한 수정된 페이지의 갱신, 사이트맵의 제출, 크롤링 오류 분석 등 구글에서는 블로거 본인이 직접 검색 엔진에 등록된 본인의 블로그를 매우 다양한 방법으로 관리할 수 있습니다. 이러한 이유 때문에 블로거는 네이버보다 구글을 선호할 수 밖에 없습니다.
※ 최근 새롭게 생긴 네이버 웹마스터 도구를 이용하면 네이버에서도 어느정도 수정된 글을 보정하는 작업이 가능합니다. 하지만 구글만큼 세세한 기능까지 지원하지는 않습니다. 베타버전이므로 좀 더 지켜본 후 네이버 웹마스터 도구에 대해서도 나중에 글을 작성하도록 하겠습니다.

구글 웹마스터 도구를 이용하면 구글 검색 엔진에 본인의 블로그를 매우 쉽게 등록시킬 수 있습니다. 구글 웹마스터 도구에 가입만 하면, 구글 검색 엔진에 본인의 블로그가 자동으로 등록되기 때문입니다. 네이버 검색 엔진에 블로그를 등록할 때 얼마나 큰 노력이 필요한지와 비교한다면 정말로 구글이 얼마나 편리한 서비스를 제공하고 있는가를 알 수 있습니다. 네이버에서 블로그를 등록하기 위해서는 고객센터에 문의를 하고 거절 답변이 돌아온다면 또 다시 신청을 해야 하는데, 이러한 과정이 반복된다면 블로거는 지치기 마련입니다.


구글 웹마스터 도구에서 할 수 있는 것들


구글 웹마스터 도구에서는 매우 많은 것들을 할 수 있습니다.

구글 웹마스터 도구에는 구글 검색 엔진이 더 쉽게 페이지를 파악할 수 있도록, 사이트 관리자가 구조화된 데이터 HTML을 쉽게 사용할 수 있도록 안내해주는 기능이 있으며, 검색어에 관한 통계, 연결된 페이지에 관한 통계 등을 확인할 수 있는 기능, 현재 구글 검색 엔진에 등록된 사이트의 페이지 갯수가 어느 정도인지 확인할 수 있는 기능, 마지막으로 구글 크롤러에 수정된 페이지를 등록하여 구글 검색 결과에 수정된 페이지를 반영시킬 수 있게 해주는 기능 등이 있습니다.

이렇게 구글 웹마스터 도구를 이용하면 구글 검색 결과에 항상 최신의 정보가 출력되게 할 수 있고, 구글 검색 엔진 크롤러가 사이트에 좀 더 쉽게 접근할 수 있도록 할 수 있습니다.


구글 웹마스터 도구 가입 방법


구글 웹마스터 도구
http://www.google.com/webmasters


위 링크를 통하여 구글 웹마스터 도구를 이용할 수 있습니다. 다른 구글 웹프로그램과 마찬가지로 구글 웹마스터 도구를 이용하기 위해서는 구글의 회원이어야 합니다.

만약 구글 회원이 아니라면 이 글을 읽기 전 먼저 구글에 회원가입을 해야 합니다. 구글에 로그인한 후 구글 웹마스터 도구 사이트에 처음 접속하면 다음과 같은 화면이 나타납니다. 여기에서 하단의 웹마스터 도구에 로그인 버튼을 누르면 됩니다.

구글 웹마스터에 처음 접속하면 나타나는 화면

구글 웹마스터에 처음 접속하면 나타나는 화면



위 화면에서 웹마스터 도구에 로그인 버튼을 클릭한 후 구글 웹마스터 도구에 접속하면 본인이 등록한 사이트의 목록을 확인할 수 있습니다. 처음 접속한 경우에는 사이트를 등록해주어야 합니다. 우측 상단의 사이트 추가 버튼을 누릅니다.

사이트 URL을 입력하는 양식이 나타나면 이곳에 본인의 블로그 URL을 적습니다. http:// 를 제외한 부분만 적으면 됩니다. 반드시 전용 도메인 또는 서브 도메인으로 구성된 것이어야 합니다. 또한 블로거가 직접 HTML을 수정할 수 있어야 합니다. 따라서 네이버블로그, 다음블로그와 같은 블로그 서비스를 이용하는 블로거는 구글 웹마스터 도구를 이용할 수 없습니다.

블로그 주소를 입력하고 계속 버튼을 누르면 다음과 같은 화면이 나타납니다. 등록하고자 하는 사이트가 본인의 사이트임을 증명해야 구글 웹마스터 도구를 이용할 수 있습니다. 이러한 절차가 필요한 이유는 이러한 절차가 없는 경우 관리자가 아닌 타인이 마구잡이로 아무 사이트나 등록할 수 있기 때문입니다.

본인이 관리하는 사이트임을 증명해야 구글 웹마스터 도구를 이용할 수 있습니다

본인이 관리하는 사이트임을 증명해야 구글 웹마스터 도구를 이용할 수 있습니다



그런데 위 방법으로는 티스토리 블로거가 인증을 진행할 수가 없습니다. 왜냐하면 티스토리 블로거는 이미지 파일만 업로드할 수 있지, html 파일을 업로드할 수는 없기 때문입니다. 따라서 티스토리 블로거는 다음 방법을 사용하여 인증을 진행해야 합니다.

상단의 탭에서 대체 방법 탭을 클릭하면 여러가지 다른 인증 방법이 나타나는데 여기에서 HTML 태그를 이용한 인증 방법을 사용해야 합니다. HTML 태그 인증 방법은 매우 간단하게 블로그 스킨 헤더에 <META> 태그 하나만 추가하면 됩니다.

티스토리 블로그에서는 HTML 태그를 통한 인증 방법을 사용해야 합니다

티스토리 블로그에서는 HTML 태그를 통한 인증 방법을 사용해야 합니다



위 화면에서 볼 수 있는 메타태그를 복사한 후 현재 본인이 사용하고 있는 블로그 스킨 헤더에 붙여넣기 합니다. 메타태그는 각 사용자마다 다르므로 본인의 메타태그를 잘 확인하는 것이 중요합니다. 블로그 스킨에 메타태그를 넣은 후 사이트 승인 절차를 계속하면 웹마스터 도구에 사이트가 추가됩니다.

만약 사이트 승인 단계에서 오류가 발생하는 경우 메타태그를 제대로 넣지 않은 것입니다. 제대로 하였는데 계속하여 문제가 발생하는 경우 댓글로 말씀해주시면 해당 문제에 관하여 자세히 알려드리도록 하겠습니다.


구글 웹마스터 도구를 이용하는 방법


이 글에서는 구글 웹마스터 도구에서 할 수 있는 가장 대표적인 작업인 사이트맵 등록 작업과 수정된 페이지 등록 작업에 대하여 알아보도록 하겠습니다. 먼저 구글 웹마스터 도구에 사이트를 추가한 후 사이트 관리자 페이지에 접속하면 다음과 같은 화면이 나타납니다. 아직 사이트가 등록된지 오래되지 않았기 때문에 아무런 정보도 확인할 수 없습니다.

구글 웹마스터 도구에 사이트를 등록하면 구글 검색 엔진 크롤러가 해당 사이트를 분석하기 시작하며, 며칠이 지나면 검색 결과에서 본인의 블로그가 나타나는 것을 확인할 수 있습니다. 그리고 구글 웹마스터 도구에서 각종 데이터를 확인할 수도 있습니다.

사이트 등록 후 구글 웹마스터 도구에 접속한 첫 화면

사이트 등록 후 구글 웹마스터 도구에 접속한 첫 화면



구글 웹마스터 도구에 사이트맵을 등록하는 방법


사이트맵은 구글 크롤러가 해당 사이트를 분석할 때 도움이 될 수 있는 RSS 또는 ATOM을 말합니다. 우리나라에서는 그냥 블로그 RSS 등록이라는 명칭으로 사용됩니다. 네이버에서도 이와 동일한 서비스를 제공하고 있지만, 구글만큼 쉽거나 공정한 서비스가 아니기 때문에 많은 블로거가 사용하지는 않습니다. 구글 웹마스터 도구의 사이트맵은 구글의 승인 없이 블로그 관리자가 블로그 RSS를 임의대로 추가하거나 삭제할 수 있습니다.

구글 웹마스터 도구에 사이트맵을 등록하기 위해서는 다음과 같이 하면 됩니다. 좌측 메뉴에서 크롤링 - Sitemaps 를 클릭한 후 나타나는 화면에서 우측 상단의 SITEMAP 추가/테스트 버튼을 누르면 됩니다. 이곳에 본인의 블로그에서 사용하고 있는 RSS 주소를 입력한 후 Sitemap 제출 버튼을 누릅니다. 만약 티스토리 블로거라면 본인의 블로그 도메인에 rss 만 추가하면 됩니다.

구글 웹마스터 도구에 사이트맵을 추가하는 방법

구글 웹마스터 도구에 사이트맵을 추가하는 방법



구글 웹마스터 도구에 사이트맵을 추가하면 몇 시간 이내에 등록된 RSS의 내용이 구글 검색 엔진에 반영됩니다.

RSS를 등록하면 글의 목록을 직접 크롤러에 전달할 수 있기 때문에, 크롤러는 더 빠르게 블로그를 분석할 수 있으며, 이에 따라 검색 결과에 블로그가 반영되는 시간이 짧아집니다. 만약 크롤러가 직접 블로그 모든 부분을 분석한다면, 검색 결과에 블로그가 반영되기까지 오랜 시간이 걸릴 것입니다.


블로그의 수정된 글을 검색 결과에 반영시키는 방법


블로그를 운영하다보면 글을 수정해야 하는 경우가 종종 발생합니다. 그런데 글을 수정할 때의 가장 큰 걱정은 검색 엔진에 제대로 반영이 될 수 있을까? 입니다. 네이버 검색이라면 잘 모르겠지만, 구글 검색이라면 수정된 페이지를 검색 결과에 반영시키는 것이 그렇게 어렵지 않기 때문에 큰 걱정은 하지 않아도 됩니다.

구글 웹마스터 도구를 이용하면 수정된 페이지를 구글 크롤러에 전달하여, 크롤러가 다시 해당 페이지를 분석할 수 있도록 할 수 있습니다. 그 방법은 매우 간단하고, 구글의 승인을 받지 않아도 되는 것이기 때문에, 블로거에게 매우 유용한 기능입니다. 좌측 메뉴에서크롤링 - Fetch As Google 메뉴를 클릭합니다. 이 메뉴를 이용하여 구글 크롤러에 수정된 페이지 정보를 전달할 수 있습니다.

수정된 페이지의 URL을 입력한 후 우측 상단의 가져오기 버튼을 누르면 됩니다. 수정된 페이지의 URL을 입력할 때에는 본인의 블로그 도메인과 슬러쉬(/) 다음의 내용부터 입력해야 합니다. 만약 http://www.erzsamatory.net/100 의 내용이 변경되었을 경우에는 100만 입력하고 가져오기 버튼을 누르면 됩니다.

수정된 페이지가 있다면 구글 웹마스터 도구를 이용하여 검색결과에 쉽게 반영시킬 수 있습니다

수정된 페이지가 있다면 구글 웹마스터 도구를 이용하여 검색결과에 쉽게 반영시킬 수 있습니다



가져오기 버튼을 누르면 제출된 페이지 목록에 새로운 아이템이 생성됩니다. 처음에는 보류중 메시지가 나타나지만 몇 초만 기다리면색인에 제출 버튼이 나타납니다. 이 버튼을 누르면 구글 크롤러에 수정된 페이지의 정보를 전달할 수 있습니다. 제출 방식은 이 URL만 크롤링을 선택합니다. 이 옵션은 해당 페이지 한 개만 수정되었을 때 선택하는 옵션입니다.

만약 해당 페이지뿐만 아니라 블로그의 전체적인 내용이 변경되었을 경우에는 두 번째 옵션인 이 URL 및 직접 연결되는 링크 크롤링을 선택하면 됩니다.


출저 : http://www.erzsamatory.net/114

◈◈◈◈◈◈◈◈◈◈◈◈ ftp관련 ◈◈◈◈◈◈◈◈◈◈◈◈
ftp접속 - ftp IPAddress입력
       user anonymous(익명사용자 접속시)
       password E-mail사용
ftp종료 - bye
get 파일명                         파일다운로드
put 파일명                         파일업로드
--------------------------------------
※ 여러개파일 업/다운로드시 mget, mput
--------------------------------------

◈◈◈◈◈◈◈◈◈◈◈◈ 기본명령어 ◈◈◈◈◈◈◈◈◈◈◈◈
ls                               현 드렉토리 파일목록보기
ls -a                               파일목록보기(숨김파일포함)
ls -l                               자세히보기
ls -al                               숨김파일포험 자세히보기
----------------------------------------------------------------------------------------
파일유형:파일허가권:링크수:파일소유자:파일소유그룹:파일크기:마지막변경날짜,시간:파일이름
※ 파일명 앞 . 숨김파일                                                  
※ 파일유형 d(디렉토리) -(파일)        
※ rwx rwx rwx / user group other / r읽기 w쓰기 x실행        
r=4 w=2 x=1 예 : --- 0 / --x 1 / -w- 2 / -wx 3 / r-- 4 / r-w 5 / rw- 6 / rwx 7       
----------------------------------------------------------------------------------------
chmod 허가권 파일명                  파일에 허가권변경(루트사용자 또는 허가권을 가진사용자만 가능)

cd                               현 사용자 홈드렉토리로 이동
cd root                               루트사용자 홈디렉토리 이동
cd ..                               상위디렉토리 이동
cd 경로지정                         지정경로 디렉토리 이동

pwd                               현 디렉토리 경로 보기

rm 파일명                         파일삭제
rm -r 디렉토리명                   디렉토리삭제
rm -f                               삭제시 물음없이 강제삭제
rmdir 디렉토리명                    디렉토리삭제(디렉토리안 비워있어야가능)
rm -rf 디렉토리명                    디렉토리삭제(안 내용까지 삭제)

cp 파일명 파일명             파일복사
cp -r 디렉토리명 디렉토리명             디렉토리복사
--------------------------------------------------------------------
※ 파일을 특정디렉토리에 복사할때 cp 파일명 디렉토리명(경로)       
다른 디렉토리안 파일을 복사할땐 cp 디렉토리경로/파일명 디렉토리명
--------------------------------------------------------------------

touch 파일명                         빈파일생성/있는파일일경우 수정시간변경

mv 파일명 디렉토리명                   파일을 지정디렉토리로 이동
mv 파일명 파일명                   이름변경
--------------------------------------------------------------------
※ 여러파일을 보내려할땐 mv 파일명 파일명 파일명 디렉토리명       
특정 디렉토리에 파일을 보내려할땐 mv 디렉토리명 파일명 디렉토리명
--------------------------------------------------------------------

mkdir 디렉토리명                    디렉토리생성
mkdir -p 디렉토리명/디렉토리명       디렉토리생성하고 그안에 디렉토리생성
------------------------------------------------------------------------------------------------
※ 디렉토리명 앞에 . 사용하면 숨김디렉토리                                     
디렉토리 생성시 처음 / 를 쓰고 디렉토리명을 입력하면 상위 드렉토리인 루트디렉토리에 생성된다.
cd로 특정디렉토리로 이동하거나, 디렉토리를 생성하거나 기타 등에 처음 / 를 입력하면        
상위디렉토리인 루트디렉토리를 지정하는 것으로 보면된다.                               
디렉토리명/디렉토리명 시엔 경로지정하는 것이라 보면 되지만, /디렉토리명 은 루트디렉토리부터 
경로지정하는 것이다.                                                       
------------------------------------------------------------------------------------------------

cat 파일명 & 디렉토리/파일              텍스트파일 화면출력

more 파일명 & 디렉토리/파일              덱스트파일 페이지단위출력(스페이스바 다음페이지, b앞페이지)

----------------------------------------------------------------------------------------------------
파이프, 필터, 리다이렉션                                                       
| (\와 shift키 같이 사용)두 명령어를 연결하여 같이 사용                               
            예-ls -l /etc | more      ls -l /etc는 /etc디렉토리안 파일을 자세히보기             
             more 페이지단위로 화면에 출력 즉 ls -l /etc | more /etc디렉토리안 파일을 자세히보고
             페이지단위로 화면에 한페이지씩 출력하여 자세히 본다는 의미                   
                                                                         
grep, tail, wc, sort, awk, sed 등                                                 
주로 | 와 같이 사용하고 필요한것만 걸러주는 명령어                                     
예-교제 376, 378페이지 VNC서버 설치할때 설치된 RPM확인할때 사용                         
                                                                         
표준입출력 방향을 바꿈                                                       
예-ls -l > aa,lst      ls -l결과를 aa.lst파일로 쓰도록한다. aa.lst파일이 존재할땐 덮어씀       
ls -l >> aa.lst      위와 같고 파일이 존재할때 덮어쓰지 않고 이어씀                         
등등                                                                    
(세가지다 그냥 넘어가려다 가끔 쓸일이 있을거 같아서 대충정리)                               
----------------------------------------------------------------------------------------------------

rdate -s time.bora.net                  정확한 현재시간을 가져와 시스템에 설정
                              (VMware에서 스냅샷을 하면 시간도 멈추기때문에 문제가 발생하기도 함)

◈◈◈◈◈◈◈◈◈◈◈◈ 기본명령어(사용자관련) ◈◈◈◈◈◈◈◈◈◈◈◈
adduser 사용자명                   사용자생성
adduser -d 디렉토리명 사용자명            지정한디렉토리에 사용자디렉토리생성
adduser -g 그룹명 사용자명            그룹지정하고 사용자생성        

----------------------------------------------------------------------------------------------
/etc/passwd (사용자정보파일)                                                      
사용자명:비밀번호:사용자 ID:사용자 소속 그룹 ID:전체이름:홈디렉토리:기본셸                  
/etc/shadow (사용자비밀번호파일)                                                
사용자명:비밀번호:최종수정일:변경최소일:변경최대일:만료경고기간:파기기간:계정만료기간:예약필드
/etc/group (그룹파일)                                                            
그룹명:비밀번호:그룸 ID:그룹에 속한 사용자                                          
/etc/skel (사용자생성시 유저 홈디렉토리에 복사되는 파일)                              
/bin/bash (사용자기본셸파일)                                                      
                                                                        
※ 사용자를 생성시 /etc/passwd, shadow 파일에 사용자를 추가                              
그룹을 지정하지 않고 생성시 /etc/group 파일에 그룹을 추가                              
디렉토리 지정하지 않고 생성시 홈디렉토리 /home/사용자명 생성                        
/etc/skel 파일을 사용자 홈 디렉토리에 복사                                          
(새로 생성할 사용자에게 배포할 파일이 있을결우 /etc/skel 파일안에 배포할 파일을 저장)      
----------------------------------------------------------------------------------------------
passwd 사용자명                    사용자비밀번호등록
-------------------------------------------------
passwd만 할경우 자신의 비밀번호변경               
passwd후 비밀번호 입력 / 비밀번호 확인 두번입력 
-------------------------------------------------
whoami                              현재 접속중인 사용자보기
userdel      사용자명                  사용자삭제(홈디렉토리는 삭제안됨)
userdel -r 사용자명                   사용자의 홈디렉토리까지 삭제            
groupdel 그룹명                        그룹삭제
usermod -s /bin/false 사용자명            사용자로그인을 못하도록 설정
usermod -s /bin/bash 사용자명            사용자로그인을 다시할수 있도록 설정

su -                                root사용자 권한얻기

groupadd 그룹명                        그룹생성

◈◈◈◈◈◈◈◈◈◈◈◈ 기본명령어(시스템종료, 리부팅관련) ◈◈◈◈◈◈◈◈◈◈◈◈
shutdown -h now
halt
init 0                               시스템종료
----------------------------------------------------------------
shutdown -h 10m      10분후종료                         
shutdown -r 22:00      오후 10시 재가동                   
shutdown -c            shutdown 취소                         
shutdown -k now      접속된 사용자에게 종료메시지보내기       
----------------------------------------------------------------
----------------------------------
init                          
0      종료모드             
1      단일사용자모드(시스템복구시)
3      다중사용자모드(텍스트)       
5      다중사용자모드(X윈도우) 
6      리부팅                   
----------------------------------
shutdown -r now
reboot
init 6                                시스템리부팅

logout
exit                               로그아웃(접속종료가 아닌 끝낸다는 의미)

◈◈◈◈◈◈◈◈◈◈◈◈ 링크관련(하트링크, 소프트링크) ◈◈◈◈◈◈◈◈◈◈◈◈
ln 링크할파일명 링크파일명            하드링크
ln -s 링크할파일명 링크파일명             소프트링크(심볼릭링크)
-------------------------------------------------------------------------------
하드링크=위치가 바뀌어도 원본파일과 연결가능(링크파일만 생성하고 같은 파일사용)
심볼릭링크=위치가 바뀌면 연결불가(원본파일과 연결만하는 파일생성)             
-------------------------------------------------------------------------------

◈◈◈◈◈◈◈◈◈◈◈◈ 파일압축관련 ◈◈◈◈◈◈◈◈◈◈◈◈
gzip 파일명                        확장자 *.gz로 압축
gzip -d 파일명                        확장자 *.gz파일에 압축을 풀어줌
gunzip 파일명                         확장자 *.gz파일에 압축을 풀어줌

bzip2 파일명                         확장자 *.bz2로 압축
bzip2 -d 파일명                   확장자 *.bz2파일에 압출을 풀어줌
bunzip2 파일명                        확장자 *.bz2파일에 압출을 풀어줌

tar 옵션(cvf) 지정파일명 파일명            옵션에 따라 파일 묶음
tar 옵션(xvf) 지정파일명            옵션에 따라 묶은 파일 풀어줌
-------------------------------------
c      파일을 새로 묶음       
x      묶은 파일을 풀어줌       
t      묶은 파일 풀기전 묶인경로보여줌
f      필수사항 파일명지정       
v      묶거나 풀리는 과정을 보여줌 
z      *.tar.gz 파일을 품       
j      *.rar.bz2 파일을 품       
-------------------------------------

◈◈◈◈◈◈◈◈◈◈◈◈ X윈도우 설정명령어 & yum관련 ◈◈◈◈◈◈◈◈◈◈◈◈
system-config-display            디스플레이설정
system-config-date            날짜, 시간설정
system-config-keyboad            키보드설정
system-config-bind            네임서버설정
system-config-httpd            웹서버설정
system-config-language            언어설정
system-config-lvm            lvm설정
system-config-mouse            마우스설정
system-config-network            네트워크설정
system-config-nfs            nfs설정
system-config-packages            패키지추카설치
system-config-printer            프린터설정
system-config-rootpassword      root비밀번호관리
system-config-samba            samba서버설정
system-config-securiylevel      보안설정
system-config-soundcard            사운드설정
system-config-users            사용자관리

위 명령어가 실행되지 않을때
yum -y install system-config-XXX 명령어로 설치

yum install 패키지이름                  패키지설치 이미 있다면 업데이트 -y를 해주면 설치여부묻지않고 바로설치
yum check-update                  설치되어 있는 패키지중에 업데이트 가능한 패키지보여줌
yum update 패키지이름                  패키지업데이트(yum install으로 가능, yum update만 입력이 전부업데이트)
yum remove 패키지이름                  패키지삭제
yum info 패키지이름                  정보확인
--------------------------------------------------------------
yum은                                                
RPM의 의존성을 해결해주는 RPM툴이라고 보면된다.            
인터넷을 통하여 의존성을 가진 파일까지 전부 다운로드하여 설치.
/etc/yum.repos.d/ 디렉토리 안에 파일에 URL정보가 저장되어있다.
RPM(레드햇 패키지 매니져)                              
--------------------------------------------------------------
rpm -qa 패키지이름                  패키지가 설치되어있는지 확인

◈◈◈◈◈◈◈◈◈◈◈◈ cron & at ◈◈◈◈◈◈◈◈◈◈◈◈
cron                  반복된 작업을 하도록 설정하여 넣는 것
at                  일회용 한번만 하도록 설정
--------------------------------------------------------------
/etc/crontab      crond관련 파일                              
파일내용을 보면 각디렉토리별 시간별, 일별, 주별, 월별 디렉토리
01 * * * * root run-parts /etc/cron.hourly (시간별)            
02 4 * * * root run-parts /etc/cron.daily (일별)            
03 4 * * 0 root run-parts /etc/cron.weekly (주별)            
42 4 1 * * root run-parts /etc/cron.monthly (월별)            
분-시-일-월-요일-권한-실행명령                        
요일은 일요일~토요일 0~6 으로 지정                        
각디렉토리에 실행가능한 파일을 넣어놓으면 실행            
--------------------------------------------------------------
service crond status                  가동되어 있는지 확인

at 시간
at>실행명령어                        at실행 at>실행명령어입력이 끝나면 Ctrl+D키로 완료
at -l                              at실행 확인
atrm 작업번호                        at실행 취소
---------------------------------------------------------------
작업번호는 Ctrl+D키로 완료후 나오는 확인에 앞 job 번호       
또는 at -l 로 확인후 나오는 제일 앞에 나오는 번호를 입력하면 됨
---------------------------------------------------------------

◈◈◈◈◈◈◈◈◈◈◈◈ 네트워크설정관련 ◈◈◈◈◈◈◈◈◈◈◈◈
system-config-network                  X윈도우 네트워크설정
system-config-network-tui            텍스트기반
service network restart                  네트워크재시작
firefox                              웹브라이저 실행
ifconfig                        IP주소 확인
nslookup                        DNS서버의 작동을 테스트
ping                              네트워크 응답텍스트

네트워크 설정관련 파일
/etc/sysconfig/network (네트워크 기본정보)
/etc/sysconfig/network-scuipts/ifcfg-eth0 (eth0장치에 설정된 정보)
/etc/resolv.conf (DNS서버정보, 호스트이름)

vi /etc/sysconfig/network-scripts/ifcfg-eth0 실행하여
BOOTPROTO=dhcp       BOOTPROTO=에 dhcp로 바꾸면 dhcp로 설정

페도라서버B설치후(텍스트) 
vi /etc/sysconfig/network-scripts/ifcfg-eth0 실행하면
BOOTPROTO=dhcp 부분이 나오지 않음. 아래부분삭제후
NETMASK = *** . *** . *** . *** 
IPADDR = *** . *** . *** . *** 
GATEWAY = *** . *** . *** . *** 
BOOTPROTO=dhcp 를 추가해도 가능(직접해보니 되더만)

vi /etc/resolv.conf 실행후
nameserver 192.168.8.128 변경가능
텍스트모드실행후 DNS설정 위 방법으로가능

◈◈◈◈◈◈◈◈◈◈◈◈ vi에디터 기본사용법 ◈◈◈◈◈◈◈◈◈◈◈◈
a 또는 i                         입력모드(글을 입력하거나 수정할때..)
esc키                              명령모드
----------------------------------------------------------
명령모드 주요명령                               
yy                  현재 커서 줄 복사                   
dd                  현재 커서 줄 삭제             
숫자+yy            입력한 숫자만큼 줄복사             
숫자+dd            입력한 숫자만큼 줄삭제             
p                  복사한 내용 커서다음줄 붙여넣기       
P                  복사한 내용 커서위줄 붙여넣기       
/텍스트             현재 문서 내 입력한 텍스트 찾기 
n                  찾은 텍스트와 같은 다음텍스트로 이동
:set number             현재 문서에 줄번호 표시             
----------------------------------------------------------

◈◈◈◈◈◈◈◈◈◈◈◈ 프로세스, 데몬, 서비스 ◈◈◈◈◈◈◈◈◈◈◈◈
--------------------------------------------------------------------------------------------
프로세스      -      하드에 저장되어있는 파일을 프로그램이라고 하면 그 파일을 실행한 상태를
                   프로세스라고 한다. (예-웹브라우저, 바이러스백신)             
포그라운드프로세스 - 실행하여 화면에 나타나는 프로그램(예-웹브라우저)             
백그라운드프로세스 - 실행하여도 화면에 나타나는 것이 아니라 뒤에서 실행하고 있는       
             프로그램(예-바이러스백신)                               
프로세스번호       -      실행하여 메모리에 로딩된 프로세스를 구분하기 위한 번호             
작업번호      -      실행되고 있는 백그라운드프로세스의 순차번호                    
                  부모, 자식 프로세스=프로세스안에 프로세스                   
                  (예-윈도우에서 웹브라우저을 실행하면 윈도우는 부모, 웹브라우저는 자식)
--------------------------------------------------------------------------------------------
ps -ef | grep 프로세스이름            프로세스번호 및 상태확인(ps 많은 옵션이 있지만 교제에서 주로사용할명령어)
kill -9 프로세스번호                  프로세스 강제종료
ctrl키+c                        프로세스 종료
ctrl키+z                        프로세스 일시정지
pstree                              부모프로세스와 자식프로세스의 관계를 트리형태로 보여줌
명령어 &                        포그라운드 프로세스를 백그라운드로 실행

----------------------------------------------------------------------------------------------
데몬-서버프로세스 백그라운드 프로세스의 일종.                                          
서버데몬은 standalone 타입과 xinetd 타입 데몬으로 나뉜다.                              
                                                                        
standalone 타입데몬은 독자적으로 구동되어 서비스하는 데몬을 말한다.                        
standalone 타입데몬이 실행스크립트파일은 "/etc/init.d/" 에 들어있다.                        
/etc/init.d/ 또는 system-config-services 명령으로 부팅시 자동실행여부를 지정할수 있다.            
예 - 웹서버(httpd), DB서버                                                      
실행명령 - service 서비스명 실행옵션                                                
실행옵션 - start, stop, restart                                                
                                                                        
xinetd 데몬은 standalone타입의 데몬으로 항상구동되어있지만 자신이 직접서비스를 하지않고      
자신에게 종속된 xinetd타임데몬을 불러 구동시킨다.                                     
xinetd 데몬이 서비스하는 포트는 "/etc/service" 파일에 설정되어있다.                        
                                                                        
xinetd 타입데몬은 가끔 사용되는 데몬을 말한다.                                    
항상구동시키는 것이 아닌 필요할때만 서비스를 불러 구동시키는 방식을 말한다.                  
xinetd 타입데몬의 설정파일은 "/etc/xinetd.d/" 에 들어있다.                              
예 - ftp서버(ftp서버를 항상구동시키려면 standalone타입데몬으로 설정)                        
실행명령 - service xinetd start                                                
----------------------------------------------------------------------------------------------

◈◈◈◈◈◈◈◈◈◈◈◈ 부트로더 ◈◈◈◈◈◈◈◈◈◈◈◈
GRUB 특징 - 부트정보를 수정, 변경하여 부팅할수 있다. 멀티부팅이 가능하다.
GRUB 설정파일 "/boot/grub/grub.conf" 링크파일 "/etc/grub.conf"
default=0
timeout=5      
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
      root (hd0,0)
      kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
      initrd /boot/initrd-2.6.1-1369_FC4.img

default=0
엔트리번호 부트엔트리는 title 로 시작 엔트리가 1개뿐이라 0번
멀티부팅으로 설치한 페도라에선 default=1로 되어있고, 윈도우 title 부팅엔트리도 Fedora 부팅엔트리 밑에 나와있다.
default=1 가만히 나두면 두번째 엔트리 즉 멀티부팅한 윈도우 엔트리로 부팅

timeout=5
초기부팅시 여유시간 5초를 의미 수정하여 여유시간을 늘리거나 줄일수도 있다.

splashimage=(hd0,0)/boot/grub/splash.xpm.gz
부팅이미지파일 지정한부분
(hd0,0) hd0 하드디스크를 의미(/dev/hda), 0 은 파티션을 의미(/dev/hda1)
역시 멀티부팅으로 설치한 페도라에선 (hd0.1) 로 나와있다. 한개 하드에 두번째 파티션을 의미


◈◈◈◈◈◈◈◈◈◈◈◈ RAID ◈◈◈◈◈◈◈◈◈◈◈◈
RAID0      여러개의 하드디스크에 동시에 저장하는 방식을 "스트라이핑(Stripping)"
      저장속도가 빠름, 데이타안정성이 떨어짐, 공간효율좋음
RAID1      같은 데이타를 두하드에 똑같이 저장하는 방식을 "미러링(Mirroring)"
      저장속도는 변화없고, 데이타안정성이 좋음, 공가효율떨어짐
RAID5      하드디스크에 요류발생시 "패리티(Parity)"를 이용해서 데이터를 복구
      하드디스크가 두개 고장시 복구안됨
RAID6      RAID5방식에서 "패리티"를 두개 이용하는 방식 하드디스크 두개고장시에도 복구가능
RAID0+1      RAID0(스트라이핑)과 RAID1(미러링)를 묶어서 사용하는 방식
      스트라이핑한 데이터를 미러링한다.
RAID10      RAID0+1과 반대로 미러링한 데이터를 스트라이핑하는 방식

◈◈◈◈◈◈◈◈◈◈◈◈ RAID0, RAID1, RAID5, RAID6 설치 ◈◈◈◈◈◈◈◈◈◈◈◈
RAID를 구성하기 위해선 "mdadm" 패키지를 설치해야한다.
설치또는 업그레이드 "yum -y install mdadm" 으로 설치

RAID0, RAID1, RAID5, RAID6 설치
fdisk 장치 파티션을 나눌때 파일시스템유형을 
Command : t
Hex Code : fd 로 한다.

"mknod /dev/md0 d 9 0"
/dev/md0 에 이름을 따로지정하여 사용 d(Block Device) 9(장치주번호) 0(0번째 장치를 의미)

mdadm 을 사용하여 mknod에서 생성한 장치(/dev/md0) /dev/sda1, /dev/sdb1 을 장치(/dev/md0)안에 생성한다.
"mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1"
--level=0 RAID0 을 만든다는 의미이다. 1번 으로 하면 RAID1 5번으로 하면 RAID5 를 만든다는 의미이다.
--raid-devices=2 하드디스크(드라이브) 2개를 /dev/md0 에 생성한다는 의미이다. 

mkfs.ext3 /dev/md0 → mkdir 디렉토리명 → mount /dev/md0 생성한디렉토리 → /etc/fstab등록
/dev/md0      마운트한디렉토리      ext3      defaults      1 1

RAID0, RAID1, RAID5, RAID6 위와 같은 방식에서
"mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1" 를 설정하면 된다.

◈◈◈◈◈◈◈◈◈◈◈◈ RAID0+1, RAID10 설치 ◈◈◈◈◈◈◈◈◈◈◈◈
RAID0+1 설치
"mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1"
"mdadm --create /dev/md1 --level=0 --raid-devices=2 /dev/sdc1 /dev/sdd1"
전부분을 생략 하고 위처럼까지만 /dev/md0, /dev/md1 를 level=0으로 두장치를 RAID0으로 생성한다.

"mknod /dev/md2 b 9 2" /dev/md2장치를 생성한다. 마찬가지로 /dev/지정하여 생성
생성한 RAID0(/dev/md0), RAID1(/dev/md1) 를 /dev/md2 안에생성한다.
"mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/md0 /dev/md1"

mkfs.ext3 /dev/md2 → mkdir 디렉토리명 → mount /dev/md2 생성한디렉토리 → /etc/fstab등록


RAID10 설치
RAID10 mdadm의 버전이 1.7 이상이여야 한다.
하드(/dev/sda, /dev/sdb, /dev/sdc, /dev/sdd)를 fdisk 한다.
/dev/sda1, /dev/sdb1, /dev/sdc1, /dev/sdd1

"mknod /dev/md10 b 9 10" /dev/md10장치를 생성한다.
"mdadm --create /dev/md10 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1"
4장치를 /dev/md10 장치안에 생성한다.

mkfs.ext3 /dev/md10 → mkdir 디렉토리명 → mount /dev/md2 생성한디렉토리 → /etc/fstab등록

◈◈◈◈◈◈◈◈◈◈◈◈ RAID 하드고장시 교체 ◈◈◈◈◈◈◈◈◈◈◈◈
고장난 하드를 제거 새로운 하드로 장착한다.
fdisk한다.
"mdadm /dev/장치 --add /dev/sd??" 명령어로 새 하드를 교체
---------------------------------------------------------
mdadm --stop /dev/md0            RAID 장치인 /dev/md0를 중지
mdadm --detail --scan            현재 RAID 장치 목록을 본다.
---------------------------------------------------------

◈◈◈◈◈◈◈◈◈◈◈◈ 쿼터(Quota) ◈◈◈◈◈◈◈◈◈◈◈◈
쿼터 -      파일시스템마다 사용자나 그룹이 생성할수 있는 파일의 용량 및 개수를 제한
      별도의 파일시스템을 지정하여 / 파일시스템을 사용하지 못하게 하여,
      시스템문제 발생이 없도록 한다.
      여러 사용자가 동시에 / 파일시스템을 사용하여 성능이 저하되는 일을 없도록한다.

/etc/fstab 를 열어 생성한 RAID 또는 LVM 둘다 없으면 사용자 홈디렉토리 /home/사용자명
마운트하고 defaults 뒤에 defaults,usrquota 를 추가한다.
예 -      /dev/hda1      /home/pain      ext3      defaults,usrquota 1 1
      /dev/md10      /raid10data      ext3      defaults,usrquota 1 1
/home/pain 예로 pain 라는 사용자 홈디렉토리
/dev/md10      /raid10data 예로 RAID10 장치(/dev/md10) /raid10data마운한 디렉토리

"mount -o remount /home/pain"             다시 마운트하고나 또는 재부팅
"mount"                              쿼터용으로 마운트되었는지 확인한다.
확인하면 아래와 같이 쿼터용으로 마운트된것이 확인된다.
/dev/hda1 on /home/pain type ext3 (rw,usrquota)

쿼터 DB생성
cd /home/pain                        쿼터용 파일시스템이 마운트된 디렉토리로 이동
touch quota.user                  quota.user이라는 빈파일 생성 
chmod 600 quota.user                  보안을 위해 소유자(root) 외 접근못하도록 설정
quotacheck -a -m 
convertquota /home/pain      

edquota -u pain                        사용자 할당량을 편집 그룹으로 할경우 edquota -g 그룹명 으로 하면된다.
-------------------------------------------------------------------------------------------------------
Filesystem      blocks      soft      hard      inodes      soft      hard                                     
/dev/hda1       24       0       0       6       0       0                                     
                                                                               
Filesystem - 쿼터를 활당한 파일시스템                                                       
blocks, soft, hard - blocks용량을 의미사용자가 사용하는 블록 소프트한도 하드한도를 의미             
             blocks 24 사용자가 현재 24KB를 사용 soft, hard 0 사용한도를 제한하지 않아 0을 의미 
inodes, soft, hard - inodes 파일의 개수를 의미 현재 6개를 사용하고 있고 제한은 없다.                   
                                                                               
편집하는 법은 vi 사용법과 같다.                                                       
soft한도를 초과하면 사용자에게 경고 메시지보냄                                           
hard는 최대한도 초과할수 없다.                                                       
-------------------------------------------------------------------------------------------------------
repquota /home/pain                  사용자별로 현재사용량 확인
edquota -t                        soft한도를 초과한 사용량에 대한 유예기간 변경
edpuota -p 기준사용자 적용할사용자      기준사용자와 같은 할당량 적용



출저 : http://painone7.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-%EB%AA%A8%EC%9D%8C-%EB%93%B1%EB%93%B1

소유권자 변경
chown -R me:me ./
   [하위] [uid?][uid?] [path]


하위 디렉토리 권한 변경
chmod -Rf 777 바꿀 디렉토리
   [하위] [모든권한] [ 디렉토리 ]


※ 이거 잘못 쓰면 진짜 클난다 ... 맨뒤에 / 만 붙이지 말아줘 모든게 바껴버리니깐 ㅠ

아래 방법은 초기 설치된 기본 패키지만 변경하는것 보안에 대한 부분까지 다시 원복시켜준다. 하지만 이후 사람이 추가한 부분은 그대로 남아 있기 때문에 일일이 수작업으로 수정해 주어야 한다.

만일 아래의 명령을 실수로 내렸을 때에 복구 방법은?

chmod 777 * -R

오늘 작업중 유난히 특별 케이스를 보았습니다.
상당히 맨붕이 왔지만… yum 혹은 RPM에서 설치 하셨다면 다음과 같이 패키지에 들어있는 패키지의 퍼미션들을 뽑아서 복구 할 수 있습니다.

기본적인 퍼미션 복구 방법은 다음과 같습니다.

rpm --setperms packagename

위의 명령은 setperms로 packagename에 관련된 파일에 대하여 최초 설치시 퍼미션으로 되돌리는 것입니다.

전체의 퍼미션을 복구 하고 싶을 경우는 다음과 같이 하시면 됩니다.

rpm --setperms -a

이와 관련하여 소유권까지 변경되었다면…
다음 명령어로도 수행이 가능하니 참조하실 수 있겠죠?

rpm --setugids packagename

위의 퍼미션 처럼 동일하게 패키지 최초 설치시 소유권으로 되돌려줍니다.
퍼미션과 소유권을 전체 설정하고 싶으시다면 다음과 같이 하실 수 있습니다.

rpm --setugids --setperms -a

위와 같이 하면 시스템에 설치되었던 패키지 RPM 리스트수대로 chown및 chgrp 그리고 chmod 명령을 수행하여
해당 시스템에 퍼미션들을 수정하게 될 것입니다.



출저 : http://root.so/archives/272




쓴 명령어


ls -tlr


cat /etc/passwd

cat /etc/group

기본 권한들을 보기 위해


touch aaa

생성된 폴더의 기본 권한을 보기위해


rm aaa


아래는 설명 해주신거


맨앞에 l , l 링크로 사용될때도 (lock ???) root만 사용 ?? 할튼

맨앞에 . 이 붙었을때는 숨김 파일 , 숨긴 폴더 접근 권한은 있음

맨앞에 d 디렉토리 , - 는 파일


소유권과 퍼미션에 대해 더욱 찾아보도록 하자


r - 읽기 , w- 쓰기 , x-실행


VI 편집기

[1] 시작
vi의 실행은 한글 환경에서 vi를 입력하면 되고, 콘솔모드에서 한글을 다루려면, han을 먼저 입력한 뒤, 
vi를 입력하면 됩니다. 
예) >vi
읽기 전용 열기 
예) >vi R file 
>view file
[2] vi의 세가지 모드
vi명령어는 다음과 같이 입력 모드, 명령 모드, 콜론 모드(ex 모드) 크게 세가지로 분리됩니다.
① 입력 모드 i, a, o, I, A, O를 누른 후 텍스트를 입력할 수 있는 상태 
② 명령 모드(Esc모드) ESC키를 누른 상태 
③ 콜론 모드(Ex모드) ESC키를 누르고, :(콜론)을 입력한 상태
① 입력 모드 다른 편집기에서 타이핑을 하여 파일의 내용을 입력하는 과정 
② 명령 모드 다른 편집기의 편집(Edit) 메뉴에서 제공하는 복사(Copy), 
붙이기(Paste),삭제(Delete) 등의 편집 기능의 활용 
③ 콜론 모드(ex 모드) 다른 편집기의 파일(File) 메뉴에서 수행하는 
열기(Open), 저장 (Save), 다른 이름으로 저장(Save as) 등의 명령 수행
vi는 실행될 때 명령 모드에서 시작하고, 실행을 종료할 때에는 콜론 모드에서 종료 명령을 수행합니다. 
또한 vi는 대문자와 소문자 구분을 확실히 해두어야 한다는 것을 유념합시다.
(1) 입력 모드
i : Insert, 현재 커서의 위치에 글자를 삽입
I : Insert, 커서가 있는 줄(line)의 맨 앞에 글자를 삽입
a : Append, 현재 커서 위치의 다음 칸에 글자를 추가
A : Append, 커서가 있는 줄(line)의 맨 뒤에 글자를 추가
o : Open line, 현재의 줄 다음에 새로운 줄을 삽입
O: Open line, 현재의 줄 앞에 새로운 줄을 삽입
영/한 변환 Shift+Spacebar
(2) 명령 모드
입력 모드에서 명령 모드로 다시 전환하려면 Esc 키를 누르기만 하면 됩니다 
명령모드는 편집모드라고도 하는데, 글을 입력시키는 방법이 아닌 수정과 편집을 
할 수 있는 상태임을 기억해 두어야 합니다
(3) 콜론 모드 
명령모드에서 콜론 모드로 전환하려면 :명령을 실행시키면 됩니다
편집한 데이터를 저장하고 종료하려면 
:wq
저장하지 않고, 강제로 종료하려면 
:q!
vi를 끝내지 않고, 현재 작업 중인 내용을 저장만 하려면 
:w

[4] vi명령어의 간단한 문법
(반복횟수)(편집명령)(반복횟수)(커서이동명령) 
현재의 위치에서, 커서이동명령의 내용순서대로, 문서의 임의위치로 이동하는 순간, 
편집명령어의 내용이 수행됩니다.
[5] 정규표현식의 특수 기호들
. : 한글자를 대표하는 기호 (dos 의 ? 와 동일)
* : 여러개의 문자를 동시에 대표하는 기호
^ : 줄의 처음시작
$ : 줄의 맨끝
% : 처음줄부터 끝줄까지
: 특수한 기호들이 가지는 뜻을 없앨때 사용
< : 단어의 시작과 대응합니다
> : 단어의 끝과 대응합니다
[^] : 묶여진 문자를 제외한 아무것이나 대응합니다
: 이어지는 기호를 문자 그대로 해석합니다
[ ] : 일정한 제한을 두어 글자를 대표하고자 하는 기호
[az] : a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z 를 대표
[AZ] : A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 를 대표
[AB] : A 또는 B
p[aeiou]t : pat, pet, pit, pot, put 를 대표
[09] : 0,1,2,3,4,5,6,7,8,9 를 대표
6] 명령 모드(ESC 모드)에서 사용되는 몇가지 기호
다음과 같은 기호는 기본적인 것으로 필수적으로 알아두시기 바랍니다.
G : 화일의 맨끝으로
^ : 현재줄의 맨앞 (빈칸무시)으로
0 : 현재줄의 맨앞으로
$ : 현재줄의 맨 뒤로
% : 짝을 이루는 기호 확인
w : 다음 단어로
b : 이전 단어로
e : 현재 단어의 끝 글자

[7] 커서 움직이기
명령모드 상태에서 커서를 마음대로 움직일 수 있습니다.
① 글자 단위 이동
h : 커서를 한칸 왼쪽으로 이동하는 명령
j : 커서를 한줄 아래로 이동하는 명령
k : 커서를 한줄 위로 이동하는 명령
l : 커서를 한칸 오른쪽으로 이동하는 명령
Backspace : 커서를 한칸 왼쪽으로 이동하는 명령
Space : 커서를 한칸 오른쪽으로 이동하는 명령

② 줄 단위 이동 
^ : 빈칸을 무시하고, 커서를 현재 줄의 첫글자로 이동하는 명령
0 : 커서를 현재줄의 처음으로 이동하는 명령
$ : 커서를 현재줄의 맨끝으로 이동하는 명령
% : 짝을 이루는 기호 확인하기
+ : 커서를 다음줄의 처음으로 이동하는 명령
: 커서를 이전 줄의 처음으로 이동하는 명령
Return : 커서를 다음줄의 처음으로 이동하는 명령
n| : 현재줄의 n 번째 열로 (n은 임의의 숫자)
H(Home) : 커서를 화면상에 처음줄로 이동하는 명령
M(Middle) : 커서를 화면상에 중간줄로 이동하는 명령
L(Last) : 커서를 화면상의 마지막줄로 이동하는 명령
nH : 화면상의 처음줄로부터 n 줄 밑으로 이동(n은 임의의 숫자)
nL : 화면상의 마지막줄로부터 n 줄 위로(n은 임의의 숫자)
g(Go) : 파일의 마지막 줄로 이동하는 명령
nG : n번째 줄로 건너뛰는 명령
gg : 맨 첫줄로
ngg : n 번째줄로
n : n 번째줄로

③ 단어 단위 이동 
w(word) : 커서를 다음단어의 첫글자로 이동하는 명령
b(back) : 커서를 이전단어의 첫글자로 이동하는 명령
e(end) : 커서를 다음단어의 끝 글자로 이동하는 명령
E : ?, ! 등 구두점을 무시하고, 현재 단어의 끝으로 이동
) : 다음 문장의 시작으로 이동하는 명령
( : 이전 문장의 시작으로 이동하는 명령
} : 다음 문단의 시작으로 이동하는 명령
{ : 이전 문단의 시작으로 이동하는 명령
]] : 다음 섹션의 시작으로 이동하는 명령
[[ : 이전 섹션의 시작으로 이동하는 명령

④ 화면단위 이동
vi에는 스크롤 기능이 없는 대신 화면 단위로 이동하는 명령어들이 있습니다.
Control + F (Forward) : 한화면 밑으로 이동
Control + B (Backward) : 한화면 위로 이동
Control + D (Down) : 반쪽화면 밑으로 이동
Control + U (Upon) : 반쪽화면 위로 이동
Control + E : 커서는 현재위치 그대로 화면만 한줄씩 위로 이동
Control + Y : 커서는 현재위치 그대로 화면만 한줄씩 아래로 이동
z : 커서의 위치와 함께, 화면상의 맨위로
nz : n번 라인을 화면상의 맨위로
z. : 커서의 위치와 함께, 화면상의 중간으로
z : 커서의 위치와 함께, 화면상의 맨아래로

※ 
Control + G : 현재 편집하고 있는 문서의 상태를 알 수있다
Control + L : 화면 재표시 (글자가 깨졌을 경우; 윈도의 F5와 비슷)
Control + R(edraw) : 화면 재표시 (글자가 깨졌을경우)

[8] 편집하기
① 복사, 붙이기, 합치기
y (Yank) : 복사하기
yy : 한 줄 전체의 내용을 복사한다
2yy : 두줄복사
nyy : 현재 줄 이하로 n개의 줄을 복사한다 (n은 임의의 숫자, 2yy는 2줄 복사)
ynw : n개의 단어를 복사한다(y2w는 두 개의 단어를 복사)
yw : 한단어 복사
y2w : 두단어 복사
y$ : 현재 위치에서 그 줄의 끝까지 복사한다
y0(y^) : 현재 위치에서 그 줄의 처음까지 복사한다
yG : 현재 위치에서 파일의 끝까지 복사한다(G는 파일의 마지막 줄)
Y : 한 줄 전체의 내용을 복사한다 (yy 와 동일)
※ 마지막 명령어의 반복 
. : 마지막에 수행한 명령어를 반복한다.
2. : 명령어를 2번 반복한다.
p (Put or Paste) : 붙이기
p : 버퍼에 저장된 내용을 커서의 오른쪽으로 붙여 넣는다.
2p : 아래로(오른쪽으로) 두번 붙이기
np : n번만큼 p 명령을 반복. 2p라면 버퍼의 내용을 두 번 붙여넣는다
P : 위로(왼쪽으로) 붙이기
2P : 위로(왼쪽으로) 두번 붙이기
nP : 버퍼에 저장된 내용을 커서의 왼쪽으로 붙여넣는다. 사용법은 p와 같다
xp : 두 문자를 바꾸는 명령
deep : 두 단어를 바꾸는 명령
ddp : 두 줄을 바꾸는 명령
J(Join) : 여러 줄의 내용을 한 줄로 합친다
J : 현재줄을 윗줄에 붙인다. (두줄 합치기)
nJ : n개의 줄을 합쳐 한 줄로 만든다. 커서는 원본 문서의 마지막 줄의 첫번째 위치 
(합쳐진 줄에서는 중간)에 놓인다. 5J는 5줄로 이루어진 내용을 한 줄로 만든다
② 지우기, 복구하기, 바꾸기 dnw : n개의 단어를 지운다
d$ : 커서가 있는 위치에서 그 줄의 끝까지 지우기
D : 커서부터 줄의 끝까지 삭제합니다. (d$ 와 동일)
d (Delete) : 지우기
dd : 현재커서가 위치한 줄의 전체를 삭제합니다.
2dd : 두줄지우기
ndd : n줄지우기 (n 은 임의의숫자)
dw : 한단어 지우기
d2w : 두단어 지우기
d0(d^) : 그줄 처음까지 지우기
dG : 커서가위치한 곳으로 부터 문서 끝까지 지우기
d move : 커서가 위치한 곳부터 move까지 삭제
dlG : 커서가 위치한 곳으로부터 편집버퍼의 맨앞까지 삭제.
:lined : 지정한 줄을 삭제
:line, lined : 지정한 범위를 삭제
u (Undo) : 되살리기 명령으로 버퍼에 저장되어 있는 원래의 내용을 복구
u : 한번복구하기
'nu' : (n은 임의의 숫자) 형식으로 사용하며, n 단계까지의 명령을 복구할 수 있다
2u : 두번복구하기
c (Change) : 바꾸기
cc : 한줄 바꾸기
2cc : 두줄 바꾸기
ncc : n개의 줄 바꾸기(n은 임의의 숫자)
cw : 한단어 바꾸기
ce : 공백을 제외하고 한단어를 바꾸기
c2w : 두단어 바꾸기
c$ : 그 줄 끝까지 바꾸기
c0(c^) : 현재 위치에서 파일의 끝까지 바꾼다
c : 그 줄 끝까지 바꾸기 (c$)와 동일
cmove : 커서부터 move까지 변경
r (Replace) : 한글자 바꾸기
2r : 두글자 바꾸기

※ r 명령어는 insert 모드로 바뀌지 않는다.
R : 바꾸면서 삽입이 아닌 수정(modify) 모드로 들어간다. 윈도에서 Insert 키를 누르고 
수정 상태로 들어가는 것과 같다
s : 한글자 지우고 insert 모드로 cl 와 동일
S : 한줄지우고 insert 모드로 cc 와 동일
~ : 대문자 < > 소문자 바꾸기 영문자에만 해당
※ 지우기와 바꾸기의 차이점은 바꾸기는 명령어 후에 vi 편집모드로 바뀐다.
[9] 찾기
/요 : 현재 위치에서 아래쪽 방향으로 '요'라는 단어를 찾는다
?요 : 현재 위치에서 위쪽 방향으로 '요'라는 단어를 찾는다
/ : 단어 찾기를 반복한다(웨에서 아래쪽 방향으로)
n : 단어 찾기를 반복한다(아래쪽 방향으로)
? : 단어 찾기를 반복한다 (아래족에서 위쪽 방향으로)
N : 단어 찾기를 반복한다 (위쪽 방향으로)
fx : 현재줄에서 x문자 찾기 x 는 한개의 글자
Fx : 현재줄에서 반대방향으로 x문자 찾기 x 는 한개의 글자
tx : 현재줄에서 x문자를 찾아서 바로전에 커서놓기
Tx : 현재줄에서 반대방향으로 x문자를 찾아서 바로후에 커서놓기
; : 현재 줄에서 글자 찾기를 반복한다(뒤로)
' : 현재 줄에서 글자 찾기를 반복한다(앞으로)
※ 찾기와 편집명령의 응용
d/simple : simple 이라는 단어가 나올때까지 지우기
d/^scully : 줄의 맨앞에 scully 라는 단어가 나올때까지 지우기
y/yahoo : yahoo 라는 단어가 나올때까지 복사하기

[10] 편집모드 지정하기
i : insert 현재커서위치
I : 현재커서가 위치한 줄의 맨처음에
a : append 현재커서위치 바로 다음에
A : 현재커서가 위치한 줄의 맨끝에
o : open 현재커서위치 바로 아래줄에
O : Open 현재커서위치 바로 윗줄에

[11] 표시하기(Marking)
mx : mark 현재의 커서위치를 x 라는 문자로 기억 보이지 않는 북마크
`x : 기억된 x 위치로 이동
`` : 이동하기 전의 위치로 (제자리)
' ^_ x : 기억된 x 위치의 맨 앞으로 이동
'' : 이동하기 전 위치의 맨앞으로 이동
[12] 버퍼 이용하기
"xyy : x 라는 이름의 버퍼에 한줄 복사 하기
"xp : x 라는 이름의 버퍼에 저장된 내용을 붙이기
:= : 현재 줄번호 보여주기
:/pattern/ = pattern 이 위치한 줄번호 보여주기

[13] ex 명령어 익히기
① ex 명령어의 기본형식
(범위지정) (명령어) (명령이 수행될 위치) 
:k,l command m
예) 
:1,10 co 50 : 1 줄 부터 10 줄 까지를 50 줄 이후로 복사
:34,50 d : 34 줄 부터 50 줄 까지 삭제
:100,150 m 10 : 100 줄 부터 150 줄까지를 10 줄 이후로 옮김
:.,$ d : 현재줄부터 끝까지 지우기
:.,+20 co 4 : 현재줄부터 20줄을, 4줄 위에 복사하기
:,+ t 0 : 위, 아래로 한줄(총 3줄)씩을, 문서 맨위에 복사하기
:/pattern/ d : pattern 이 들어있는 줄 지우기
:/pattern/ nd : pattern 이 들어있는 줄로부터 n 번째 윗줄 지우기
:/pattern/ +nd : pattern 이 들어있는 줄로부터 n 번째 아랫줄 지우기
:/pattern1/,/pattern2/d : pattern1 이 들어있는 줄부터, pattern2 가 들어있 는 줄까지 지우기
:.,/pattern/ m 23 : 현재줄부터 pattern 이 들어있는 줄까지, 23번줄 이 후로 옮기기
② g 옵션 붙여 문서전체에 적용하기
:g/리눅스 : 파일 전체에서 '리눅스'가 있는 마지막 줄로 이동한다
:g/리눅스/ p : 파일 전체에서 '리눅스'가 있는 줄을 보여준다
:g/리눅스/ nu : 파일 전체에서 '리눅스'가 있는 줄을 번호와 함께 보여준다
:60,100 g/리눅스/ p : 60∼100줄 사이에서 '리눅스'가 있는 줄을 보여준다
:g/리눅스/d : 문서 전체에서 '리눅스'가 있는 줄을 제거한다

③ 저장 및 종료하기
:w : 저장하기 (write)
:q : 종료하기 (quit)
:wq : 저장하고 종료하기
:xv저장하고 종료하기 (:wq 와 동일)
:w! : 강제로 저장하기 (readonly 로 열었을경우)
:q! : 편집한 내용을 저장하지 않고 종료하기
:w new_file_name : 새로운 파일이름으로 저장하기
:w %.new : 현재화일 이름에 .new 를 붙여서 새로운 화일로 저장
:230,$ w file_name : 230 줄부터 끝줄까지 file_name 으로 저장하기
:.,600 w file_name : 현재줄부터 600줄까지 file_name 으로 저장하기
:1,10 w new_file : 1줄부터 10줄까지 new_file 로 저장하기
:340,$ w >> new_file : 340줄부터 끝줄까지 new_file 에 추가하기

④ 읽기
:r[ead] filename : 현재위치에 filename 읽어들이기
:r /usr/local/data : 현재위치에 /usr/local/data 읽어들이기
:185 r /usr/local/data : 185줄 이후에 /usr/local/data 읽어들이기
:$r /usr/local/data : 맨끝줄 이후에 /usr/local/data 읽어들이기
:0 r /usr/local/data : 맨윗줄에 /usr/local/data 읽어들이기
:/pattern/ r /usr/local/data : pattern 이 존재하는 줄에 /usr/local/data 읽어들이기
⑤ 다중편집하기
vi file1 file2 :file1과 file2라는 두 개의 문서를 읽어들인다. 먼저 읽는 문서는 file1이다
:args :현재 편집중인 화일목록을 보여준다
v :n :두 번째 문서(file2)를 편집할 수 있다
:e # :이후부터는 ':e #' 명령을 사용하여 문서를 번갈아 열며 편집할 수 있다
:prev[ious] :이전화일로 돌아간다
주의 편집중인 화일이 저장되지 않으면 다음 화일로 넘어갈수 없다
* * 새로운 파일 편집하기
:e file1:새로운 파일(file1)을 읽어들여 편집한다
e[dit] file_name :새로운 file_name 편집하기
:e! :현재의 편집중인 내용을 무시하고 가장 최근에 편집한 내용을 다시편집하기
⑥ g 옵션과 바꾸기
:m,n s/old/new/g :g/pattern/ s/old/new/g
예 ) 
: 1,5 s/리눅스/linuk/gc :1줄부터 5 줄까지 리눅스를 linuk 로 확인해가면서 바꾼다.
:g/문자 /s/파일/file/g : '문자'가 있는줄만을 찾아서 '파일'을 'file'로 바꾼다.
:% s/버퍼/buffer/g :처음줄부터 마지막줄까지, 버퍼 를 buffer 로 바꾼다
[14] 예기치 않은 시스템 다운후 되살리기
vi r :되살릴수 있는 모든 파일의 이름을 보여준다.
vi r file :vi에디터를 실행하여 지정한 파일을 되살리는 옵션이다
[15] 디스플레이 제어
^L : 현재의 화면을 다시 불러온다
:set number : 내부의 줄번호로 내용을 불러온다
:set nonumber : 내부의 줄번호로 내용을 되 불러 오지 않게 하는 옵션이다
/rexp : 지정된 정규표현식에 대해 앞으로 이동한다.
/ : 이전의 패턴에 대해 앞으로 검색을 반복하는 명령
?rexp : 지정된 정규 표현식에 대해 뒤로 이동하는 명령
? : 이전의 패턴에 대해 뒤로 검색을 반복하는 명령
n : : /나 ? 명령에 대해 같은 방향으로 반복하는 명령
N : : /나 ? 명령에 대해 반대방향으로 반복하는 명령

[16] 줄의 길이조정
r :Return : 문자를 새로운 라인으로 변경하는 명령
J :줄을 결합하는 명령
:set wm=n : 오른쪽으로 n문자 위치에서 자동적으로 줄을 나누는 명령

[17] 편집버퍼를 통한 이동
^F : 한 화면 아래로 이동
^B : 한화면 위로 이동
n^F : n 화면 아래로 이동
n^B : n화면 위로 이동
^D : 반화면 아래로 이동
^U : 반화면 위로 이동
n^D : n 줄만큼 아래로 이동
n^U : n 줄만큼 위로 이동

[18] 쉘 명령실행
중단하고 지정한 셸 명령을 실행
:!! : vi를 중단하고 이전의 셸 명령을 실행
:sh : vi를 중단하고 셸을 실행
:!csh : vi를 중단하고 새로운 C쉘을 실행

[19] 패턴에 의한 치환
:s/pattern/replace/ : 현재 줄을 치환한다
:lines/pattern/replace/ : 지정한 줄을 치환한다
:line,lines/pattern/replace/ : 지정한 범위를 모두 치환한다
:%s/pattern/replace/ : 모든 줄을 치환한다

[20]데이터 읽기
:liner file : 파일의 내용을 지정한 줄 다음에 삽입한다
:r file : 파일의 내용을 현재줄 다음에 삽입한다
:liner !command : 명령의 결과를 지정한 줄 다음에 삽입한다
:r !command : 명령의 결과를 현재줄 다음에 삽입한다
:r !look pattern : 지정한 패턴으로 시작되는 단어를 삽입한다

[21] 편집 중 파일 바꾸기
:e file : 지정한 파일을 편집한다
:e! file : 지정한 파일을 편집하며 자동점검을 생략한다

[22] 수정의 취소, 반복
u : 수정했던 마지막 명령을 취소한다
U : 현재 줄을 저장한다
. : 수정했던 마지막 명령을 반복한다

[23] 문자 삭제
xv : 커서가 있는 문자를 삭제한다
X : 커서의 왼쪽 문자를 삭제한다

[24]여러줄의 복사및 이동
: linecotarget : 지정한 줄을 복사하여 대상줄 밑에 삽입한다
:line,linecotarget : 지정한 범위를 복사하여 대상줄 밑에 삽입한다
:linemtarget : 지정한 줄로 이동하여 대상줄 밑에 삽입한다
:line,linemtarget : 지정한 범위로 이동하여 대상줄 밑에 삽입한다

[25] 데이터 처리를 위한 셸 명령
n!!command : n번 줄에서 명령을 실행한다
!move command : 커서의 위치로 부터 이동한 곳까지 명령을 실행한다
!move fmt : 커서의 위치로 부터 이동한곳까지 줄들을 형식에 맞춘다




원인

: size 부족


해결 방안



1. MYSQL 재실행

service mysqld restart


2. /etc 에서 my.cnf 파일 수정

vi my.cnf

max_allow_packet 사이즈 변경 16M / 32M


(3) 콜론 모드 
명령모드에서 콜론 모드로 전환하려면 :명령을 실행시키면 됩니다
편집한 데이터를 저장하고 종료하려면 
:wq
저장하지 않고, 강제로 종료하려면 
:q!
vi를 끝내지 않고, 현재 작업 중인 내용을 저장만 하려면 
:w


+ Recent posts