pid로 프로세스를 종료하는 방법을 정리합니다. 사용하는 명령은 다음과 같습니다.

  • ps
  • grep
  • awk
  • kill

pid를 조회하여 프로세스 종료하는 명령은 다음과 같은 절차로 작성됩니다.

  1. 원하는 프로세스 목록만 가져오기 - ps, grep, pgrep(ps+grep)
  2. 프로세스 목록에서 pid만 가져오기 - awk
  3. kill 명령어로 한번에 프로세스 종료 - (backtick)

backtick은 다음 그림과 같은 위치의 문자를 의미합니다.


프로세스 목록 조회

ps 및 grep 명령을 대상 프로세스를 조회합니다.

 

ps -ef | grep hugo

501 6582 479 0 12:39AM ttys000 0:01.15 hugo server

501 6919 479 0 12:44AM ttys000 0:00.21 hugo server

501 7011 479 0 12:44AM ttys000 0:01.16 hugo server

501 7104 479 0 12:44AM ttys000 0:01.16 hugo server

501 7276 479 0 12:44AM ttys000 0:01.15 hugo server

501 7371 479 0 12:44AM ttys000 0:01.16 hugo server

501 7463 479 0 12:44AM ttys000 0:01.14 hugo server

501 7637 479 0 12:45AM ttys000 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn hugo

프로세스 목록에서 pid 출력

awk로 프로세의 정보를 출력합니다. 컬럼 지정은 작은 따움표로 설정합니다.

 

> ps -ef | grep hugo | awk '{print $1,$2,$3,$8}'

501 6582 479 hugo 501 6919 479 hugo

501 7011 479 hugo 501 7104 479 hugo

501 7276 479 hugo 501 7371 479 hugo

501 7463 479 hugo 501 7903 479 grep

>

 

두 번째 컬럼($2)으로 pid를 지정하여 출력합니다.

 

> ps -ef|grep hugo|awk '{print $2}'

6582

6919

7011

7104

7276

7371

7463

7952

>

프로세스 종료

쉡 스크립트에서 backtick(`) 사이의 명령은 실행되고 그 결과가 앞에 명령에 입력됨니다.

다음과 같이 pid는 kill 명령에 전달되어 종료됩니다.

 

>kill -9 `ps -ef | grep hugo|awk '{print $2}'`

kill: kill 8385 failed: no such process

[7] + 7463 killed hugo server

[6] + 7371 killed hugo server

[5] + 7276 killed hugo server

[4] + 7104 killed hugo server

[3] + 7011 killed hugo server

[2] + 6919 killed hugo server

[1] + 6582 killed hugo server

>

 

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

 

리눅스에서 파일 내용을 확인하는 명령어들을 살펴 봅니다.

대표적으로  cat , tail , less, head  등의 명령어를 활용하실 수 있습니다.

각종 로그 파일을 살펴보거나 문서들을 살펴볼때 유용합니다.

 

cat

cat 명령어는 텍스트로 된 파일일 경우 그 내용을 정상적으로 출력하지만 바이너리 파일일 경우에는 출력은 하지만 알아볼 수 없다. 그리고 2개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다.

 

사용법 : cat [옵션] 파일명

 

ex >> test 파일을 열어봄

cat test

 

ex >> 각 행에 번호를 붙여서 출력

cat -b test

 

ex >> 빈 행에도 번호를 붙임

cat -n test

 

ex >> 연속되는 2개이상의 빈 행을 한행으로 출력

cat -s test

more

more 명령어는 특정파일의 내용을 확인하는 그 페이지에서 바로 vi 로 파일을 열어서 편집을 할 수도 있으며 텍스트 파일의 내용을 한 페이지씩 차례대로 확인할 수 있다.

 

사용법 : more 파일명

 

ex >> 파일의 내용을 출력

more test

 

ex >> 많은 양의 파일리스트를 확인할때 파이프를 이용해 연결

 

ls -l /etc | more

 

특정 파일의 내용을 확인하고 있는 상태에서 사용할 수 있는 키

  • h : more 명령어상태에서 사용할 수 있는 키 도움말 확인
  • Space Bar : 한 화면씩 뒤로 이동하기 (f와 동일)
  • Enter : 현재행에서 한 행씩 뒤로 이동하기
  • q : more 명령어 종료하기
  • f : 한 페이지씩 뒤로 이동하기(Space Bar 와 동일)
  • b : 한 페이지씩 앞으로 이동하기
  • = : 현재 위치의 행번호 표시하기
  • /문자열 : 지정한 문자열을 검색하기
  • n : /문자열로 검색한 문자열을 차례대로 계속해서 찾기
  • !쉘명령어 : more 명령어상태에서 쉘명령어를 실행하기
  • v : more 명령어로 열려있는 파일의 현재위치에서 vi를 실행하기

less

less는 more와 매우 유사하다.

 

사용법 : less 파일명

 

ex >> 내역 확인

less test ls -l | less

 

less 내부명령키

  • Space Bar 또는 f : 한 화면 뒤로 이동
  • b : 한 화면 앞으로 이동
  • Enter : 한 행씩 뒤로 이동
  • 숫자+n : 원하는 페이지만큼 뒤로 이동, 이후부터는 n만 눌러도 숫자페이지만큼 이동
  • q : less 수행종료

head

head는 파일의 앞부분부터 확인하는 명령어이다.

 

사용법 : head 파일명

 

ex >> 기본적으로 행의 앞부분 부터 10 행까지만 출력

head test

 

ex >> 20행까지 출력

head -n 20 test

 

ex >> 200 byte 까지의 내용을 출력

head -c 200 test

tail

tail은 특정파일에 계속 추가되는 모든 내용을 모니터링 할 수 있어 실무에서 유용하게 사용되는 명령어이다.

/var/log/ 디렉토리에 존재하는 많은 시스템로그파일들의 로그파일들에 저장되는 내용들을 실시간으로 계속 모니터링하기 위한 용도로 자주 사용된다.

사용법 : tail 파일명

 

ex >> 기본적으로 파일에서 마지막 부분의 10개행을 화면에 출력

tail test

 

ex >> 마지막 부분의 20개행까지 출력

tail -n 20 test

 

ex >> 마지막에서 200byte 까지를 출력

tail -c 200 test

 

ex >> 로그파일을 실시간 모니터링, 종료는 Ctrl-c

BASH

tail -f /var/log/messages


블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

리눅스 쉘에서는 명령이 실행되는 데 crontab에서는 실행이 되지않는 경우


리눅스 쉘에서는 명령이 실행되지만, crontab 등록을 통해서는 실행이 되지않는 경우가 있다.

이것때문에 많은 시간을 삽질한 적이 있다.

왜 crontab에서는 명령이 실행되지않는 것일까?


결론부터 말하자면 환경변수 문제였다. 어떤계정에서 crontab작동하도록 명령하지않는 다.. 

그냥 시간되면 지 스스로 작동하기에 환경변수 따위가 없다.. 가져올 환경변수가 없으므로 작동하지 않는 건 당연하다.


crontab에서 환경변수를 설정해주면 이 문제는 간단히 해결된다.

crontab -e에서 


SHELL=/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


맨윗줄에 이런식으로 적어주면 된다..


블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,


centos - iptables 를 이용한 방화벽 포트 열기



linux (centos) 에서 iptables 를 이용한 방화벽 포트 오픈하는 방법입니다.



1. root 로 사용자 권한 변경

    [user@test ~]$ su -

    암호:

    [root@test ~]#


2. /etc/sysconfig/iptables 파일 열기 & 수정

    [root@test ~]# vi /etc/sysconfig/iptables


    열고자 하는 포트를 아래 라인과 같이 추가. (ex - 8080 포트 열기)

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT


3. iptables restart - 아래 명령 사용.

    [root@test ~]# service iptables restart

    또는

    [root@test ~]# /etc/init.d/iptables restart


이렇게하면 해당 포트가 외부로부터의 접근을 허용하게 됩니다.!!!


블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,



CentOS 6 - Apache 웹서버에 SSL 인증서 설치 



1. 확인


- 아파치 버전 확인

 /usr/local/apache/bin/apachectl -v , 


- openssl 설치되어 있는지 확인

 rpm -qa | grep openssl (설치되어 있지 않으면 -> yum -y install openssl)


- ssl  모듈 설치 되어있는지 확인 

 /usr/local/apache/bin/apachectl -l


2. 개인키 생성


- 인증서를 보관할 디렉터리로 이동 하여 개인키 생성

   openssl genrsa -des3 -out <개인키 파일명>.key 2048


- 확인

    openssl rsa -noout -text -in <개인키 파일명>.key


3. CSR 생성


- csr 생성

openssl req -new -key <개인키 파일명>.key -out<csr파일명>.csr


- 항목 설명

Country Name (2 letter code) [XX]: -> 국가코드 (KR= 대한민국)

State or Province Name (full name) []: → 지역

Locality Name (eg, city) [Default City]: → 시/군/구

Organization Name (eg, company) [Default Company Ltd]: → 회사명

Organizational Unit Name (eg, section) []: → 부서명

CommonName (eg, your name or your server's hostname) []: → 도메인명

Email Address []: -> e-mail 주소


4. 인증서 신청


- csr 파일을 확인하여 ----BEGIN 부터 ----END 까지 복사하여 인증서를 신청한다.

  ex ) comodo


5. 인증서 설치


- /usr/local/apache/conf/httpd.conf 에서  ssl.conf를 사용하기 위하여 해당부분 주석해제

   Include conf/extra/httpd-ssl.conf


- /usr/local/apache/conf/extra/httpd-ssl.conf 로 들어가서 자신의 환경에 맞게 설정

SSLCertificateFile /경로/~.crt 
설명 : 발급 받은 파일 중 “인증서 파일”을 지정

SSLCertificateKeyFile /경로/~.key 
설명 : 발급 받은 파일 중 “개인키 파일”을 지정

SSLCertificateChainFile /경로/ChainBundle.crt 
설명 : 발급 받은 파일 중 “Chain CA인증서 파일”을 지정

SSLCACertificateFile /경로/ROOT.crt 
설명 : 발급 받은 파일 중 “ROOT CA인증서 파일”을 지정


6. 방화벽 설정


- 방화벽에서 ssl 포트를 열어준다 (default 값은 443)

  

6. 데몬재시작


- /etc/init.d/apachectl start & restart 

   ssl 설정 후 아파치 재구동 시 개인키 패스워드를 물어본다. 매번 데몬 재시작시 일일히 패스워드를 입력해야 하는 번거로움이 있다.


**패스워드 제거 방법 ************************

 - cp <원본개인키> <백업개인키> 

 - openssl rsa -in <원본개인키> -passout pass:'<개인키 패스워드>' -out <패스워드 제거후 생성할 키> -des3

*********************************************


- 확인

  netstat -nltp 



Tip. yum으로 설치한 httpd의 경우 

 - /etc/httpd/conf.d/ssl.conf

 - /etc/httpd/conf/httpd.conf 에서 SSLCertificateFile ,SSLCertificateKeyFile 부분 환경에 맞게 설정

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,


grep 명령을 통해 특정 문자를 빼고 보기




리눅스 명령어중에 grep 명령으로 특정문자가 포함된 부분을 찾아내고는 합니다.


grep은 참 유용한 것인데, 가끔씩 이 글자 빼고 모두 보고 싶을 때가 있기도 하죠?

그럴때는

ex) cat 파일명 | grep -v "제외될 문자"

ex2) cat 파일명 | grep -ev "제외될 문자|제외될 문자|제외될 문자"

이와같이 -v  또는 -ev 옵션을 이용하여  제외될 문자를 설정하면 됩니다.


또다른 예로는 특정디렉토리의 파일 목록을 조회할 때도 사용가능 하지요.


ex1) ls -al | grep -v "제외될 문자"


디렉토리 목록중에서 특정문자가 들어간 파일 또는 폴더를 제외하고 출력이 되어집니다.


그럼 모드들 즐프하세요~

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

파일명이 깨진파일 지우기




리눅스 OS 에서 가끔 다운로드 받은 파일이나 , 특문등에 의해서 잘못생성되어진 파일들이 생길때가 있습니다.

이때 rm 명령으로 지우기가 난감하지요?


그럴땐 파일의 고유 ID 값을 이용하여 지울 수 있는 방법이 있습니다.


[root@test]# ls -li
합계 0
4532 -rw-r--r--. 1 root root 0 2015-09-23 03:57 2015.0922.txt
4531 -rw-r--r--. 1 root root 0 2015-09-23 03:53 ?ㄶ.txt



위처럼 ls 명령어의 -i옵션으로 파일의 고유 ID 값을 확인합니다. (맨앞 숫자)


[root@test]# find . -inum 4531 -exec rm -f {} ₩;


그다음 find 명령어를 통해 고유숫자 값을 입력하여 삭제합니다.


[root@test]# ls -li
합계 0
4532 -rw-r--r--. 1 root root 0 2015-09-23 03:57 2015.0922.txt



쨘~~ 파일명 깨진 파일 삭제된 것을 확인 할 수 있습니다.

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

사용중인 리눅스 종류 및 버전 확인 방법


1 방법 1: /etc/*-release

명령어
grep . /etc/*-release
cat /etc/*-release | uniq
실행예시 (Ubuntu 14.04.3)
root@zetawiki:~# grep . /etc/*-release
/etc/lsb-release:DISTRIB_ID=Ubuntu
/etc/lsb-release:DISTRIB_RELEASE=14.04
/etc/lsb-release:DISTRIB_CODENAME=trusty
/etc/lsb-release:DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
/etc/os-release:NAME="Ubuntu"
/etc/os-release:VERSION="14.04.3 LTS, Trusty Tahr"
/etc/os-release:ID=ubuntu
/etc/os-release:ID_LIKE=debian
/etc/os-release:PRETTY_NAME="Ubuntu 14.04.3 LTS"
/etc/os-release:VERSION_ID="14.04"
/etc/os-release:HOME_URL="http://www.ubuntu.com/"
/etc/os-release:SUPPORT_URL="http://help.ubuntu.com/"
/etc/os-release:BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
실행예시 (CentOS 6.5)
[root@zetawiki ~]# grep . /etc/*-release
/etc/centos-release:CentOS release 6.5 (Final)
/etc/lsb-release:LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
/etc/redhat-release:CentOS release 6.5 (Final)
/etc/system-release:CentOS release 6.5 (Final)
실행예시 (Fedora 11 Leonidas)
[root@zetawiki ~]# cat /etc/*-release | uniq
Fedora release 11 (Leonidas)
실행예시 (Oracle Enterprise Linux Server 5.5)
[root@zetawiki ~]# cat /etc/*-release | uniq
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
실행예시 (SUSE Linux Enterprise Server 11)
zetawiki:~ # cat /etc/*-release | uniq
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 1
LSB_VERSION="core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64"




2 방법 2: /etc/issue*

명령어
grep . /etc/issue*
  • 배포판의 버전을 가장 쉽게 확인할 수 있는 방법이다.
  • 보안 등의 이유로 다른 내용으로 바뀌어 있는 경우도 있다.
실행예시 (Ubuntu 14.04.3)
root@zetawiki:~# grep . /etc/issue*
/etc/issue:Ubuntu 14.04.3 LTS \n \l
/etc/issue.net:Ubuntu 14.04.3 LTS
실행예시 (CentOS 6.5)
[root@zetawiki ~]# grep . /etc/issue*
/etc/issue:CentOS release 6.5 (Final)
/etc/issue:Kernel \r on an \m
/etc/issue.net:CentOS release 6.5 (Final)
/etc/issue.net:Kernel \r on an \m
실행예시 (Fedora 11)
[root@zetawiki ~]# cat /etc/issue
Fedora release 11 (Leonidas)
Kernel \r on an \m (\l)
실행예시 (Oracle Enterprise Linux 5.5)
[root@zetawiki ~]# cat /etc/issue
Enterprise Linux Enterprise Linux Server release 5.5 (Carthage)
Kernel \r on an \m
실행예시 (SUSE Linux Enterprise Server 11)
zetawiki:~ # cat /etc/issue

Welcome to SUSE Linux Enterprise Server 11 SP1  (x86_64) - Kernel \r (\l).

3 방법 3: rpm (레드햇계열)

rpm -qa *-release
실행예시 (CentOS 6.2)
[root@zetawiki ~]# rpm -qa *-release
centos-release-6-2.el6.centos.7.x86_64
실행예시 (Fedora 11 Leonidas)
[root@zetawiki ~]# rpm -qa *-release
fedora-release-11-1.noarch
실행예시 (Oracle Enterprise Linux Server 5.5)
[root@zetawiki ~]# rpm -qa *-release
enterprise-release-5-0.0.22
실행예시 (SUSE Linux Enterprise Server 11)
zetawiki:~ # rpm -qa *-release
sles-release-11.1-1.152
lsb-release-2.0-1.2.18



[제타위키내용 퍼왔습니다]

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

-- 하드디스크를 털다보니 예전에 공부할때 썻던게 보이네요..
-- 그냥 가져다 붙여놓은것인지.. 편집을한것인지.. 원작자는 모릅니다..ㅡㅜ
-- 어째튼 vi 때문에 고민하시는 분들께는 도움이될지도 모른다는생각에 공개합니다.
-- 글을올리고나니 쫌 깨지는부분이 있어서 txt 파일로도 첨부합니다.(훨씬깨끗.ㅡㅡ)



vi 에디터  

             1 Cursor 위치를 변경하는 명령들 

             2 vi 명령들 

             3 자세한 정보를 가져 오려면... 

              

  명령을 잘 활용하는 방법은 'man' 명령을 이용하는 것입니다. 

  UNIX 명령에 좀 익숙 하신분들은 'man' 명령을 활용 하십시오. 

  

1. 

                       vi Cursor Positioning  

    - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - 

    :1G (go                                                            : 

    :                      /\  ^b (back                                : 

    :                      ||                    /\   ^u (up           : 

    |----------------------||--------------------||--------------------| 

    |H (home                                                           | 

    |                               k                   O (open        | 

    |I            i (insert        /\    a (append     P (put        A | 

    |                              |                                   | 

    |O <--------- h <-------  you are here  -------> l -------------->$| 

    |                              |                                   | 

    |M (middle     (backspace      \/    (space bar    p(put           | 

    |                               j                   o (open        | 

    |             Y (yank                         /string              | 

    |                                             n repeat last search | 

    |L (last                                      . repeat last command| 

    |----------------------||--------------------||--------------------| 

    :                      ||                    \/   ^d (down         : 

    :                      \/  ^f (forward                             : 

    :\$G (go                                                           : 

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  - - - - " 

 

 

2. vi 명령들  

                  1 Cursor를 옮기는 여러가지 방법 

                  2 화면을 옮기는 여러가지 방법 

                  3 한 화면 안에서 cursor를 옮기는 방법 

                  4 한 line 안에서 cursor를 옮기는 방법 

                  5 검색  

                  6 vi를 빠져나가는 방법  

                  7 삽입 mode  

                  8 Yanking : (Copying 

                  9 Deleting  

                 10 Putting  

                 11 Interactive edit : (search and replace 

                 12 Global 명령 

                 13 Reading in files  

                 14 여러 화일의 edit 

                 15 Miscellancenous commands  

 

1 Cursor를 옮기는 여러가지 방법  

                                       k(- 

                                        /\  

                                        || 

                        h(bs    <-----       ----->   l(sp 

                                        || 

                                        \/ 

                                       j(+ 

        h,j,k 와 i 를 이용하영 간단히 키보를 누르면 cursor의 위치가 변  

        경됩니다. 

        (에 있는 키를 선택하여도 됩니다. 

         bs : BackSpace                       sp : SPace bar " 

 

2 화면을 옮기는 여러가지 방법  

                  ^f  -  (FORWARD 화면을 one page 앞으로 옮김 

                  ^b  -  (BACKWARD 화면을 one page 뒤으로 옮김 

                  ^d  -  (DOWN 화면을 반 page 앞으로 옮김 

                  ^u  -  (UP 화면을 반 page 뒤으로 옮김 

              ^  는 키보드의 ctrl 를 나타내는 것입니다." 

 

3 한 화면 안에서 cursor를 옮기는 방법  

             H  -  HOME, 한 화면의 top line으로 옮긴다. 

             M  -  MIDDLE, 한 화면의 중간으로 옮긴다. 

             L  -  LAST, 한 화면의 마지막  line으로옮긴다. 

             G  -  GOTO,  화일의 마지막  line으로 옮긴다. 

             nG -  GOTO nth line the file (or :n 

             ^G -  GIVES file status  

              ^  는 키보드의 를 나타내는 것입니다." 

 

4 한 line 안에서 cursor를 옮기는 방법  

                      w  -  WORD, 한단어 앞으로 

                      b  -  BACKWARD, 한단어  뒤로 

                      e  -  END, 현재 cursor가 위치한 맨 뒤로 

                      o  -  zero, line의 맨 앞으로 (or ^ 

                      $  -  end, line의 맨뒤로" 

  

5 검색  

        /pattern -  scan (/ 'pattern'이라는글자를 현재 cursor가 

                    위치한 곳의 다음 단어를 검색 

        ?pattern -  scan (? 'pattern'이라는 글자를 현재 cursor가 

                    위치한 곳의 앞 단어를 검색 

        n     -  앞쪽에서 입력했었던 문자 'pattern' 의 다음단어를 검색 

        N     -  앞쪽에서 입력했었던 문자 'pattern' 의 다음 앞 단어를  

                  검색" 

 

6 vi를 빠져나가는 방법  

           :q!  -  화일의 내용을 저장하지 않고 exit 

           :w   -  WRITE, vi를 빠져나가지 않으면서 내용을 저장 

           :wq  -  WRITE and QUIT, vi를 빠져나가면서  내용을 저장 

           ZZ   -  :wq의 명령과 같다." 

  

7 삽입 mode  

             i   -  INSERT, cursor 위치 부터 문자 삽입 

             I   -  INSERT, line의 맨 앞부터 문자 삽입 

             a   -  APPEND, cursor 다음 위치 부터 문자 삽입 

             A   -  APPEND, cursor 위치한 line의 끝부터 문자 삽입 

             o   -  OPEN line, 현재의 line 다음에 line 삽입 

             O   -  OPEN line, 현재의 line 앞에 line 삽입 

             r   -  REPLACE, 한 문자만을 대치 (does not require ESC 

             R   -  REPLACE, ESC 키가 입력될때 까지 대치  

             cw  -  CHANGE word, cursor가 위치한 곳의 단어 끝까지 대치 

                    (cnw - change n number of words 

             C   -  CHANGE, cursor가 위치한 곳에서 line 끝까지 대치 

             u   -  UNDOES, 마지막 명령의 취소 

             U   -  UNDOES, line전체를 원 상태로 복구 

Note :   INSERT mode 를 만든는 모든 문자(i, a, o,r, c, s <대문자 포 

         함>를 사용하는 경우 insert mode에서 입력 한 내용을  취소하고 

         자 하면, ESC 를 누르고 undo를 수행하는 u를 입력하면 된다. 

Note :  ESC (escape key 는 삽입(insert를 중지 시키고 명령어 mode로   

        돌아가는 키이다." 

 

8 Yanking : (Copying  

        Y  -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장 

        yy -  YANKS (copies line을 사용자가 보이지 않는 buffer에 저장 

        nY -  YANKS n , n line을 사용자가 보이지 않는 buffer에 저장" 

 

9 Deleting  

        x   -  deletes, 문자 하나를 삭제 (also 'd sp' 

        dw  - DELETES words, 문자 하나를 삭제  

        D   -  DELETES, cursor가 있는 곳에서 부터 line끝 까지 삭제  

        dd  -  DELETES lines, line하나를 삭제 하고 보이지 않는 buffer 

               에 저장 

        ndd -  DELETES n, n line을 삭제 하고 보이지 않는 buffer에 저장 

               (i.e., 10dd deletes 10 lines" 

 

10 Putting  

        p  -  PUTS, cursor가 위치한 다음 line에 보이지 않는 buffer의 

              내용을 삽입 

        P  -  PUTS, cursor가 위치한 앞 line에 보이지 않는 buffer의 

              내용을 삽입 

        xp -  cursor 가 위치한 문자와 다음 문자를 교환" 

 

11 Interactive edit : (search and replace  

        /pattern -  find, pattern이라는 문자를 검색 

        cw       -  change word, 단어를 대치 (cw. dw, r, s, etc. 

        n        -  find, 앞에서 검색했던 'pattern'이라는 문자를 검색 

                    하는 반복 명령 

        N        -  find, 앞에서 검색했던 'pattern'이라는 문자를 역순 

                    으로 검색 하는 반복 명령" 

 

12 Global 명령  

                 Global replacement  

                :1,\$s/string1/string2/g 

                1 line부터 끝까지 string1 를 string2 로 대치 

        e.g.,   :1,\$s/sun/SUN/ 

                      Global delete  

                :g/pattern/d 

                1 line부터 끝까지 pattern 을 제거 

        e.g.,   :g/###/d (to delete lines inserted by cc file.c | &  

                 error-v" 

 

13 Reading in files  

        :r  file2 - cursor가 위치한 다음 line에 file2를 삽입" 

 

14 여러 화일의 edit  

        :w      -  다른 화일을 읽기전에 현재의 화일을 저장 (file1 

        :e file2  -  두번째 file을 edit하기 위해 load (file2 

        :w      -  두번째 화일을 저장 (file2 

        :e #    - original file 을 수정하기 위해 load (file1 

        example:w              /* file1을 빠져 나가기전에 저장*/ 

                :e file2        /* file2 load   */ 

                        \"x4Y   /* buffer 'x'에 file2의 top 4 line을  

                                   저장 */ 

                :e #            /* file1 을 load (no changes */ 

                        \"xP    /* buffer 'x'에 저장 되어 있는 내용을  

                                   put */" 

 

15 Miscellancenous commands  

        :! cmd  -  editor안에서 shell command를 수행 하고자 할때 

        ~       -  (tilde or 'wavy', 대문자를 소문자로 소문자를 대문자 

                    로 교환 

        %       -  한 line안에서 (,,{,},[,]를 검색 

        mx      -  문자 x에 현재 위치를 표시 

        d'x     -  문자 x에 표시된 위치 부터 현재 cursor 위치 까지 삭 

                    제 

        ^V      -  allows for insertion of control characters (e.g.,  

                   ^L 

        ?string -  scan (/ backward for 'pattern' 

        :n,m w file -  n line에서 m line까지 내용을  file 이라는 이름   

                       으록 (e.g., 15,25 w file 

        J       -  JOINS, cusor가 있는 line과 다음 line을 join  

        :set ai -  editor 가 자동적으로 insert tabs을 삽입 

        :set list -  special characters 를 보여줌 

                     (i.e., non-printable characters 

        :set nows -  stop wraparound search 

        :set ts=n -  set tab stops to be other than the default (8 

        :set wm=n -  set wrap margin (automatic carriage return insert  

                     at n" 



블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,

 

 

리눅스 APM 소스설치시 Error 및 해결 방법


 

 

APM 소스설치시 발생되는 몇가지 Error와 그 해결 방법이다.

1. Mysql
Error 1)
checking for termcap functions library... configure: error: No curses/termcap library found
make: *** No targets specified and no makefile found.  Stop.
해결 방법
# yum –y install libtermcap-devel ncurses-devel 설치

Error 2)
/bin/rm: cannot remove `libtoolT': No such file or directory 
해결 방법
mysql 소스파일 Directory에서 아래 진행
# autoreconf --force --install
# aclocal
# libtoolize --automake --force
# automake --force --add-missing

2. Apache
Error 1)
configure: error: ...No recognized SSL/TLS toolkit detected

해결 방법
# yum –y install openssl-devel

3. PHP
Error 1)
Checking for pkg-config... /usr/bin/pkg-config
configure: error: Cannot find OpenSSL's <evp.h>
해결 방법
# yum –y install openssl-devel

Error 2)
Configure: error: xml2-config not found. Please check your libxml2 installation.
해결 방법
# yum –y install libxml2-devel

Error 3)
Configure: error: Please reinstall the libcurl distribution -
easy.h should be in <curl-dir>/include/curl/
해결 방법
# yum –y install curl-devel

Error 4)
Configure: error: libpng.(also) not found.
해결 방법
# yum –y install libpng-devel

Error 5)
Configure: error: Please reinstall the BZip2 distribution
해결 방법
# yum –y install bzip2-devel

Error 6)
Configure: error: libjpeg.(also) not found.
해결 방법
# yum –y install libjpeg-devel

Error 7)
Checking for unixODBC support... configure: error: ODBC header file '/usr/include/sqlext.h' not found!
해결 방법
# yum –y install unixODBC-devel

Error 8)
configure: error: DBA: Could not find necessary header file(s).
해결 방법
# yum –y install gdbm-devel

Error 9)
Configure: error: Cannot find MySQL header files under /usr.
Note that the MySQL client library is not bundled anymore!
해결 방법
# yum –y install mysql-devel

Error 10)
Configure: error: freetype.h not found.
해결 방법
# yum –y install freetype-devel

Error 11)
Configure: error: Unable to locate gmp.h
해결 방법
# yum –y install gmp-devel

Error 12)
Configure: error: Cannot find pspell
해결 방법
# yum –y install pspell-devel

Error 13)
configure: error: not found. Please reinstall the expat distribution.
해결 방법
# yum –y install expat-devel

Error 14)
Configure: error: Please reinstall the ncurses distribution
해결 방법
# yum –y install ncurses-devel

Error 15)
Configure: error: snmp.h not found. Check your SNMP installation.
해결 방법
# yum –y install net-snmp-devel

블로그 이미지

슬픈외로움

개발이 어려워? 모든것엔 답이있다...

,