출처: http://brothernsister.tistory.com/27 [개발자의 일상]


1. 허가권(Permission)


ls 명령어를 실행해서 파일과 디렉토리의 목록을 보면 앞에 다음과 같이 나타나는 부분이 있을 것이다. 이것을 리눅스에서는 허가권(Permission)이라고 부른다.



-rw-r--r-- : 파일(앞이 -라면 파일)

drwxr-xr-x : 디렉토리(앞이 d라면 디렉토리)

 

★rwx란?


r : read(읽기)

w : write(쓰기)

x : execute(실행, 접근)



r의 의미


- 파일에서의 'r'의 의미 : 파일의 내용을 읽어들이는 명령어들과 관련이 있다.

- 디렉토리에서의 'r'의 의미 : 디렉토리 내용을 읽어들이는 것과 관련있다.(ls)


w의 의미


- 파일에서의 'w의 의미 : 내용을 수정, 변경하는 명령어들과 관련이 있다.


- 디렉토리에서의 'w'의 의미 : 디렉토리 및 그 내부의 생성 및 삭제와 관려이 있다.

 

x의 의미

 

- 파일에서 'x'의 의미 : x가 있으면 실행파일, 없으면 문서파일, 접근 권한을 포함한다.

 

- 디렉토리에서 'x'의 의미 : 접근 권한의 여부


접근을 할 수 있어야 파일 및 디렉토리를 읽을 수 있고 읽을 수 있어야 수정하거나, 삭제할 수 있다. 즉, 접근 권한이 보장이 되어야 한다.

 


■ chmod


chmod - 허가권 설정(사용자 권한 : w / 그룹의 권한 : r / 그외 사용자 : o)  

 

1. numeric method

 

chmod 461 file/directory (4 : r / 6 : r+w / 1 : x)

→ 사용자에게 읽기 권한 부여 / 그룹에 읽고 쓰기 권한 부여 / 그 외 사용자에게 접근권한 부여

상기의 rwx를 나타낸 표를 함께보면 이해하기 쉽다. rwx를 모두 승인 하면 111(2)=7, rw-이면 110(2)=6, r--이면 100(2)=4 가 된다.


 

# chmod(numeric method) 실습

 

- test파일에 관하여 사용자, 그룹, 그 외 사용자 모두에게 일체의 권한을 주지 않겠다.

 

 


2. symbolic method

 

chmod g+r file/directory (g : group / r : read) 

→ 그룹에 읽기 권한 부여

 


# chmod(symbolic method) 실습

 

- 그룹에 읽기 권한과 쓰기 권한을 부여하겠다.

 

 

 

 # numeric method와 symbolic method 문제


1. /a/라는 디렉토리를 생성한다.

2. /a/testing이라는 파일을 생성한다.

3. rw-r----x로 허가권을 변경한다.(numeric method를 이용하여)

4. r--rwxrw-로 허가권을 변경한다.(symboilic method를 이용하여)



rw-r----x : rw-[6] / r--[4] / --x[1] 

→ owner(user) [읽기, 쓰기 권한 부여] / group [읽기 권한 부여] / other [접근 권한 부여]


r--rwsrw- : r--[u-w] / rws[g+wx] / rw-[o+rw-x]

→ owner(user) [읽기 권한 부여] / group [읽기,쓰기,접근 권한 부여] / other [읽기, 쓰기 권한 부여]



2. 소유권(Ownership)


ls 명령어를 실행했을 때 표시된 이 부분을 보고 리눅스에서는 소유권(Permission)이라고 부른다.



앞 부분의 root가 소유자, 뒤의 root가 소유그룹이다.


■ chown


chown - 소유자 및 소유그룹 설정




1. 소유자만 변경하고 싶을 때 (소유자 root를 tcpdump로 변경)

chown tcpdump /a/testing


2. 소유자와 소유그룹 모두 변경하고 싶을 때 (소유자를 root로 소유그룹을 test로 변경)

chown root:test /a/testing


3. 소유그룹만 변경하고 싶을 때 (소유그룹 test를 root로 변경)

chown .root /a/testing



소유그룹만 변경하고 싶을 때는 1번 예제에서 명령어를 chgrp로만 변경하여 사용하여도 무방하다. 하지만, chown을 주로 쓰기 때문에 3번과 같이 써도 된다.




아마존 EC2 리눅스 서버에 파일을 전송하기 위해 WinSCP 프로그램 세팅을 알아보도록 하겠습니다.

일반 유저인 ec2-user 로 접근하면 파일을 전송하기에 제약이 따르기 때문에 관리자(root) 권한으로 세팅하는 방법을 알아보겠습니다.

 

찾아보니 이런 문서가 있었습니다. 따라해 보니 정말 되더군요..

한번 따라해 볼께요..^^

먼저 Putty 프로그램을 통해서 ec2-user 사용자로 로그인을 합니다.

관리자 권한을 획득하기 위해서 sudo su root 해서 권리자 권한으로 변경합니다.

그리고는 위에 이미지의 설명대로 visudo 합니다.

쭉 명령어가 많이 나오고 주석이 대부분 되어 있는데..55번째 줄쯤에...

이런 문구를 찾습니다.

Defaults     requiretty   -> Defaults     !requiretty

로 변경을 해 줍니다. 앞에 !표시만 하나 넣어주고 저장을 하고 나옵니다. (wq 하고 나오면 되겠죠..)

그러고 나서는 WinSCP 프로그램을 실행시킵니다.

로그인 페이지가 나오면 중간부분에 Advanced 버튼을 누릅니다.

그러면 세부 설정이 나오는데, Enviroment - Shell 을 선택해서 Shell  값을 sudo su - 로 변경해 줍니다.

드롭박스에 그렇게 메뉴가 있기때문에 선택만 해 주면 됩니다. OK를 눌러주시구요.

그리고는 세션값을 변경해야 합니다.

세션값은 File protocol 값을 SCP로 변경해 주시면 됩니다. 그러면 이제 다 되었습니다.

이값들로 파일을 송수신이 가능하게 되었습니다.


간단한 파일 하나를 전송해 보겠습니다.

잘 넘어가네요..^^

제 컴퓨터에 desktop.ini 파일이 아마존 EC2 서버측으로 전송된 모습을 잘 보실수 있습니다.

권한도 root로 잘 넘어가 있네요..

그렇게 아마존에서 만든 서버에도 파일을 자유자제로 전송이 가능하답니다. ^^

 

여러분도 아마존에서 리눅스로 EC2서버를 만드셨다면 꼭 필요하실겁니다. ^^ 





+추가로 참고한 블로그

아마존 AWS 접속시 루트 관리자로 WinSCP(sFTP) 로그인 후 서버의 파일 바로 편집(수정/삭제/전송)하는 방법

1. putty로 아마존 AWS에 터미널 접속 및 로그인(일반사용자)   

2. 루트관리자 계정 만들기(root)
   $ sudo passwd
   처음엔 일반사용자 패스워드 입력.
   그 다음엔 루트사용자 패스워드 입력.
   완료되었다고 나오면 루트 관리자로 로그인 테스트
   $ su -

3. ssh 터미널에 루트관리자로 로그인하기 위한 ssh 환경설정파일 편집
   vi 에디터로 파일 열기( vi 대신 nano 사용 가능)
   $  vi /etc/ssh/sshd_config  또는 nano /etc/ssh/sshd_config

   PermitRootLogin without-password 라인을 아래와 같이 수정
   PermitRootLogin yes

   StrictModes yes 라인을 아래와 같이 수정(주석처리로 비활성화. 앞에 #만 붙이면 됨)
   #StrictModes yes

4. 아마존 AWS로 부터 받은 일반사용자 암호화키를 루트관리자 계정에도 복사(cp 명령어 사용 : cp는 copy를 의미)
   $ sudo cp /home/ubuntu/.ssh/authorized_keys   /root/.ssh

   * 위의 경로에서 /home/ubuntu는 윈도우 OS로 따지면 "C:\사용자\홍길동" 과 같음.
     따라서, 여기서 ubuntu는 아마존에서 인스턴스 생성시 자동으로 만들어진 사용자 계정의 기본 홈 폴더임.
     명칭이 다른 경우엔 당연히 /home/ 뒤에 해당 명칭을 입력해줘야 함.
     .ssh/authorized_keys는 보안을 위한 개인 암호화키가 해당 디렉토리에 들어있음을 표시.
     따라서, /home/ubuntu/.ssh/authorized_keys를 /root/.ssh 디렉토리에 복사하면 루트관리자 로그인시 일반사용자 로그인처럼 해당 암호화키를 사용해서 로그인할 수 있는 것임

5. ssh 서비스 재시작
   $ sudo service ssh restart

6. WinSCP 실행 후 아마존 AWS 아이피 입력하고 루트 계정(아이디 : root  / 암호 : 설정값) 입력

7. 루트 관리자 로그인

8. 서버 디렉토리가 열리면 수정이 필요한 파일 디렉토리로 이동

9. 해당 파일을 마우스 오른쪽 버튼 클릭해서 열기

10. 수정 후 저장 테스트

11. 완료

이후부터는 WinSCP를 통해서 루트 관리자로 로그인해서 바로 특정 파일들을 수정하거나 삭제, 다운로드 또는 업로드 할 수 있습니다.

 




출처: http://minjoycording.tistory.com/19 [민조이의 코딩]





[Ubuntu] 우분투 서버(16.04)에 톰캣 설치

7개월 전 




우분투 서버에 톰캣 설치하기



웹 서버를 구축하기 위해서는 톰캣(WAS)이 필요하다. 여기에서는 tomcat8을 설치한다.





다음의 명령어를 입력하여 우분투에 tomcat8을 설치한다.


  # 톰캣8 설치
  sudo apt-get install tomcat8






다음으로 설치된 톰캣의 버전을 확인해 보자.


  # 톰캣 버전 
  sudo /usr/share/tomcat8/bin/version.sh






이제 톰캣이 정상적으로 돌아가는지 테스트해볼 것이다. 그전에 방화벽에서 톰캣의 포트를 외부 접속이 되도록 변경해야 한다. 톰캣의 기본 포트는 8080으로 만약 포트를 변경했다면, 변경한 포트를 입력하면 된다.


  # 방화벽에서 톰캣 포트 외부접속 
  sudo ufw allow (톰캣 포트번호)/tcp






다음으로 톰캣을 실행시킨다.


  # 톰캣 
  sudo service tomcat8 start






PC에서 브라우저 주소창에 서버 아이피주소:포트를 입력하여 위와 같은 페이지가 뜨면 정상적으로 작동되는 것이다.


  http://우분투 서버 IP주소:톰캣 포트번호





  ## 톰캣 관련 명령어
 
  # 1. Tomcat 설치
  sudo apt-get install tomcat8
 
  # 2. Tomcat 제거
  sudo apt-get remove tomcat8
 
  # 3. Tomcat 상태 확인
  ps -ef | grep tomcat
 
  # 4. Tomcat 버전 확인
  sudo /usr/share/tomcat8/bin/version.sh
 
  # 5. Tomcat 시작
  sudo service tomcat8 start
 
  # 6. Tomcat 정지
  sudo service tomcat8 stop
 
  # 7. Tomcat 재시작
  sudo service tomcat8 restart
 
   #  Tomcat 설치경로
   /usr/share/tomcat8  →  executable &l ibraries
   /var/lib/tomcat8  →  conf & webapps



출처: http://all-record.tistory.com/182?category=733055 [세상의 모든 기록]



[Ubuntu] 우분투 서버(16.04)에 자바 설치



우분투를 서버에 자바를 설치해 보자. 여기에서는 openjdk-8을 설치할 것이다. 



우분투 서버에 자바 설치



JDK와 JRE 설치 명령어를 실행한다.


  # JRE, JDK 설치
  sudo apt-get install openjdk-8-jre
  sudo apt-get install openjdk-8-jdk







JDK 설치 시 계속 진행할 것인지 묻는데 Y를 입력하면 된다.



만약 OpenJDK가 아니라 Oracle JDK를 설치해야 한다면 아래의 명령어를 사용하면 된다.


  # 1. PPA를 추가한다.
  sudo add-apt-repository ppa:webupd8team/java
 
  # 2. apt 업데이트를 진행한다.
  sudo apt-get update
 
  # 3. Java8 을 설치한다.
  sudo apt-get install oracle-java8-installer
 
  # 4. 설치가 끝나면 정상적으로 설치되었는지 버전을 체크해본다.
  javac -version
  java -version
 
  # 5. Java 환경변수 설정을 자동으로 해주는 것을 설치한다.
  sudo apt-get install oracle-java8-set-default




■ 참고 : Oracle JDK 설치





다음으로 자바가 설치되었는지 확인한다.


  # Java 설치 확인을 위한 버전체크 
  javac -version
  java -version


해당 명령어를 실행하면 현재 설치된 자바의 버전이 나온다.





  # 설치된 자바 목록 
  sudo update-alternatives --config java



만약 여러 종류의 자바가 설치되어 있다면 위 명령어를 통해 Default Java를 선택할 수 있다. 현재는 1개의 자바만 설치되어 명령어를 실행하면 위처럼 나온다. 





여러 개의 자바가 설치되어 있다면 설치된 자바 목록이 나올 것이다.




자바 환경변수 설정





자바 설치가 끝났으면 환경변수를 설정해야 한다. 먼저 javac 위치를 확인한다.


  # javac 위치 확인
  which javac
  
  readlink -/usr/bin/javac



실행 결과를 보면 javac의 실제 위치는 /usr/lib/jvm/java-7-openjdk-amd64/bin/ 이다. 따라서 $JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 으로 설정해야 한다.





  # profile을 연다.
  sudo nano /etc/profile



환경변수 설정을 위해 profile을 연다.





profile 파일 아래쪽에 위에 표시된 부분을 입력한다.


  # 환경변수
  export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  export PATH=$JAVA_HOME/bin:$PATH
  export CLASS_PATH=$JAVA_HOME/lib:$CLASS_PATH



입력 후 Ctrl+X → Y 입력 → 엔터 키를 눌러 저장을 한다.





  # profile reload
  source /etc/profile 



다음으로 명령어를 실행시켜 profile 파일을 reload 한다.





  # 우분투 서버 
  sudo reboot now



그리고 우분투 서버를 재시작 한다.






  # 환경변수를 확인
  echo $JAVA_HOME
  
  $JAVA_HOME/bin/javac -version



서버 재시작 후 echo 명령어를 이용해 환경변수를 확인한다. 위 사진처럼 나타나면 환경변수 설정이 정상적으로 된 것이다. 여기까지가 우분투에 자바를 설치하는 과정이다.




출처: http://all-record.tistory.com/181?category=733055 [세상의 모든 기록]

프로그램 백그라운드에서 실행하기 (nohup 명령어)


knoow 2016.06.22 16:31
원글출처 : http://knoow.tistory.com/89


서버프로그램 개발 중 터미널에서 관련 실행파일을 돌리고 있는데, 문득 드는 생각 '프로그램 2개를 돌리려면 터미널을 2개 열어야하나?'


그럴리는 없다고 생각하고 바로 리눅스에서 백그라운드로 실행하는 방법을 검색


여러가지 방법이 있겠지만, 가장 간단한 방법이 nohup 명령어를 사용하는 방법이다.


<실행 방법>


1. 백그라운드에서 돌리기 위한 실행파일을 준비한다. (나의 실행파일 이름은 main.js)


2. 명령어 입력하면 끝

# nohup node /절대 경로/main.js &


*구체적으로 노드를 nohup으로 구동하는 명령어

1) 일반 실행


[root@localhost myWebRtc]# node server.js

Socket IO server has been started


- 내 ssh 프로세스가 node server.js 프로세스에 묶여버려 다른작업을 아무것도 하지 못한다.



2) Background 실행


[root@localhost myWebRtc]# nohub node server.js & (단, 현재 디렉토리에 파일이 있다는 가정)

[1] 31498


- Background Process로 실행되어 


내가 실행하려고 했던 node.js 웹서버가 돌아가는 도중에도 동시에 다른 리눅스 명령어를 칠 수 있다.





3. 잘 돌아가는지 확인

# ps -aux | grep main.js




<중지하는 방법>


ps 명령어로 PID 값을 찾은 후, kill 명령어로 프로세스를 종료시킨다.

# ps -ef | grep a.out

# kill -9 PID번호





※참고


nohup 명령어를 사용하면 명령어를 사용한 디렉토리에 nohup.out 이라는 파일이 자동 생성된다.(예를 들어, /dev/project/priceOnEachMarketWebVersion 에서 nohup를 실행시켰다면, 그 디렉토리 직하에 nohup.out이라는 파일이 생선된다.)



이 파일에는 nohup으로 실행하는 명령의 출력이 기록되어진다.


이 파일을 생성하고 싶지 않다면 /dev/null에 출력하도록 하면 된다.

# nohup echo hello > /dev/null 




출처: http://knoow.tistory.com/89 [ICT Story]

우분투 서버에 nodejs, npm modules 설치


우선, nodejs 및 npm modules 설치에 앞서 apt-get의 업데이트 및 libssl-dev, g++, make에 대한 설치 작업이 필요하다.

부분들을 먼저 설치해야한다.


우분투의 apt-get을 업그레이드 해준다.

▶ sudo apt-get update

* sudo : root 권한으로 명령어를 실행

* apt-get : 리눅스 쉘에서 프로그램 패키지를 다운로드하고 설치하는 명령어

* apt-get update : 패키지 목록을 업데이트


▶ sudo apt-get install libssl-dev g++ make

* libss-dev : SSL 개발에 필요한 라이브러리와 헤더파일을 포함한 패키지

* g++ : c++ 컴파일러

* make : makefile을 통해 빌드를 수행

* apt-get install : 해당 패키지를 설치

▶ y


자 여기까지해서 필요한 기본적인 사항들을 셋팅하였다. 그럼 바로 nodejs를 설치해보자.

아래 주소는 https://nodejs.org/en/download/ 에 접속하여 'Source Code' 부분의 주소를 복사한 것이다.

 wget https://nodejs.org/dist/v5.0.0/node-v4.5.0.tar.gz

* wget : URL을 통해 파일을 직접 내려받음

▶ (설치 진행 중)


ls 명령어를 통해 다운로드 받은 파일이 존재하는지 확인하여 준다.

▶ ls


해당 파일의 압축을 풀어준다.

 tar -xvf node-v4.5.0.tar.gz

* tar : 압축 풀기

* tar -xvf : cvfb로 묶은 tar파일인 rfd1의 압축을 풀 경우


다시한번 ls 명령어를 통해 압축이 제대로 풀렸는지 확인하여 준다.

 ls


node-v4.5.0 폴더가 생성된 것을 확인할 수 있다. 해당 폴더로 이동하여 준다.

 cd node-v4.5.0


ls 명령어를 통해 해당 폴더의 하위 파일들을 확인해본다. 여기서 configure 파일이 존재하는지 확인하고 아래와 같이 설치를 진행하여 준다.

 ls

 ./configure && make && sudo make install

* configure 파일은 makefile이기에 make 명령어를 통해 설치를 진행한다.

* (소요시간이 꾀 오래 걸린다)

* 만약 /usr/bin/env 'python' no such file or directory 와 같은 메시지가 뜬다면 다음 명령어를 실행시켜 준다.

 sudo apt-get install python-software-properties python g++ make


설치가 완료되었다면 ls 명령어를 통해 아래 그림과 같이 이전에 없던 새로운 파일들이 추가되었는지 확인해보자.


여기까지 nodejs의 설치가 끝났다. nodejs에서 websocket 모듈을 사용하기 위해 이번에는 npm과 websocket 모듈을 설치해보도록 하겠다.

npm이 설치하기에 앞서 기존의 경로(~/node-v4.5.0/)에서 root 경로로 이동을 하여 준다.

 cd


Ubuntu에 내장되어 있는 npm 패키지를 설치한다.

 sudo apt-get install npm

 y



출처: http://myeonguni.tistory.com/1535 [명우니닷컴]

  • ps -aux : 현재 열려있는 작업과 PID를 볼 수 있다.

  • ps -ef | grep node : 노드의 상태를 볼 수 있다.

  • p kill -f node : 모든 노드를 죽인다.

  • kill -9 [pid] : pid값을 지닌 작업을 죽인다.

  • pkill [service_name ]: service명을 지닌 작업을 죽인다.

  • netstat -tnlp : 열려있는 모든 포트를 본다

  • lsof -i TCP:[포트번호] : 특정 포트에서 사용한느 프로그램 확인

  • fuser -k -n tcp [포트번호] : 특정 포트를 사용하는 프로그램 죽이기

  • mkdir [폴더명] : 폴더만들기

  • rm [파일명] : 파일 삭제

  • rmdir [디렉토리명] : 디렉토리삭제

  • fuser -n tcp -k [포트번호]: 특정 포트의 프로세스 킬

  • find / -name [찾는 키워드]: 키워드에 매치하는 파일 디렉토리를 찾아줌

  • histroy | grep [찾는 키워드]: 내가 입력한 cmd 중 매치하는 것을 찾아줌

  • yum list installed | grep [소프트명] : yum으로 인스톨한 소프트를 찾아준다

  • service --status-all | grep [키워드] : 실행중인 서비스를 보여준다

  • wget

  • ckconfig

  • which

  • top : 현재 컴퓨터의 메모리 cpu등의 상태를 보여준다.

  • ssh –i CRT11-KeyPair ec2-user@10.11.12.132 : 리눅스에서 리눅스로 ssh가능

  • nslookup crt11.chmjmoqphaii.ap-northeast-1.rds.amazonaws.com : 이후에 적힌 엔드포인트의 프라이뱃 아이피 주소를 반환한다.

  • fuser 8080/tcp:포트가 쓰이는지 확인

  • fuser -k 8080/tcp : 포트 사용하고 있는 태스크 중지

  • sudo lsof -i -P -n | grep LISTEN : listen 중인 모든 포트 나타냄

  • alternatives --set python /usr/bin/python3.5 : 환경변수로 등록된 기존의 python2버전을 python3으로 바꿔줌

  • ls -a : 숨겨진 . 파일까지 모두 보기 가능

  • sudo netstat -ltnp : 사용되는 모든 포트 보기

  • shutdown 명령어

종료
sudo shutdown -h 0
sudo init 0
sudo poweroff
재부팅
shutdown -r now

・cp [옵션] [원본] [사본](sudo cp pki/ca.crt /etc/openvpn/) : 원본의 위치를 사본으로 복사해준다.

-a: 원본 파일의 속성, 링크 정보들을 그대로 유지하면서 복사한다.

-b: 복사할 대상이 이미 있을 경우 기존 파일을 백업하고 복사한다.

-d: 만약 복사할 원본이 심볼릭 링크일 때 심볼릭 자체를 복사한다.

-f: 만약 복사할 대상이 이미 있으면 강제로 지우고 복사한다.

-i: 만약 복사할 대상이 이미 있으면 사용자에게 물어본다.

-l: 하드링크 형식으로 복사한다.

-P: 원본 파일 지정을 경로와 같이했을 경우 그 경로 그대로 복사된다.

-p: 파일의 소유자, 그룹, 권한, 시간 정보들이 그대로 보존되어 복사된다.

-r: 원본이 파일이면 그냥 복사되고 디렉터리라면 디렉터리 전체가 복사된다.

-s: 파일을 심볼릭 링크 형식으로 복사한다. 원본 파일이름을 절대 경로로 지정해야 한다.

-u: 복사할 대상이 있을 때 이 파일의 변경 날짜가 같거나 더 최근의 것이면 복사하지 않는다.

-v: 복사 상태를 보여준다.

-x: 원본과 대상 파일의 파일시스템이 다를 경우에는 복사하지 않는다.

-R: 디렉터리를 복사할 경우 그 안에 포함된 모든 하위경로와 파일들을 모두 복사한다.

・vi명령어

1. vi 실행하기

명령어 동작
vi file file을 연다
vi file1 file2 file1 과 file2 를 차례로 연다
view file file을 읽기 모드로 연다
vi -R file file을 읽기 모드로 연다
vi + file file을 열때 커서가 file 본문의 마지막 행에 위치한다.
vi +n file file을 열어 n행에 위치한다.
vi -r file 손상된 파일 회복

2. 입력모드 전환 명령어

명령어 동작
i 커서 있는데서 입력모드 전환
I 커서 왼쪽, 행의 처음에 몬자 삽입
a 커서 있는 줄 끝에서 입력모드 전환
A 커서 오른쪽, 행의 끝에 문자 삽입
o 커서 있는 줄 아래에 빈 줄 삽입
O 커서 있는 줄 위에 빈 줄을 삽입
R 덮어쓰기 모드로 전환

3. 커서의 이동

명령어 동작
^, 0 줄의 처음으로 이동
$ 줄의 끝으로 이동
H 화면 맨 위로 이동
M 화면의 중간으로 이동
L 화면 맨 아래로 이동
w 다음 단어 끝으로 커서 이동
e 다음 단어 앞으로 커서 이동
b 이전 단어로 이동
shift + ↑ 한 페이지 앞으로 이동
shift + ↓ 한 페이지 뒤로 이동
3l , 3G 현재 커서 위치한 행에서 3번째 행으로 이동
Ctrl + i 한 화면 위로 이동
Ctrl + b 한 화면 아래로 이동
Ctrl + d 반 화면 위로 이동
Ctrl + u 반 화면 아래로 이동
Ctrl + e 한 줄씩 위로 이동
Ctrl + y 한 줄씩 아래로 이동

4. 삭제

명령어 동작
x 한 문자 삭제
5x 커서가 있는 위치부터 5개의 문자를 삭제
d + ↑ 커서있는 줄, 윗줄 2줄 삭제
d + ↓ 커서잇는 줄, 아래줄 2줄 삭제
dw 한 단어 삭제
dd 한 줄 삭제
5dd 커서가 있는 라인부터 5개의 라인 삭제
db 커서의 위치에서 거꾸로 한 단어 삭제
D 한줄 내에서 커서있는 뒤 모두 삭제
u 바로 전에 수행한 명령을 취소
:5,10ㅇ 5~10번째 행 삭제

5. 복사와 붙여넣기

명령어 동작
yy 현재 줄을 버퍼로 복사
p 버퍼에 있는 내용을 커서 뒤에 삽입
P 버퍼에 있는 내용을 커서 앞에 삽입
3y 현재 줄에서부터 아래로 3줄 복사
:5, 10y 5~10줄을 버퍼로 복사
:30pu 30행에 버퍼 내용을 삽입
d 현재 커서가 위치해 있는 단어 복사
3yy 현재 행을 기준으로 3번째 행까지 n행 복사

6. 문자열 찾기

명령어 동작
/name name 문자열 찾기
n 다음 name으로 이동
N n과 같으며 역방향으로 이동

7. 문자열 대체

명령어 동작
:s/str/rep 현재 행의 str을 rep로 대체
:l,.s/str/rep/ 1부터 현재 행의 str을 rep로 대체
:%s/str/rep/g 파일 전체 str을 rep로 전부 대체
:.$/aaa/bbb 커서의 위치로부터 파일의 끝까지 있는 모든 aaa를 bbb로 대체

8. 파일 저장 및 불러오기

명령어 동작
:w 지정된 파일에 저장
:wq, :x, ZZ 지정된 파일에 저장하고 vi를 종료
:w php.ini php.ini 파일에 저장
:q 저장하지 않고 종료
:q! 저장하지 않고 강제 종료
:wq php.ini php.ini에 저장하고 vi를 종료
:r php.ini php.ini의 내용을 현재 커서가 있는데로 불러온다.
:e php.ini 현재의 화면을 지우고 새로운 파일 php.ini를 불러온다.
:5,10 w php.ini 5~10 줄까지의 내용을 php.ini에 저장

9. 기타

명령어 동작
:set nu 행 번호 보여주기
:set nonu 행 번호 보여주기 취소
. 바로 전에 실행한 명령어 재 실행
Ctrl + l 불필요한 화면 정리후 다시 표시

・tail명령어

1.TAIL 기능

파일의 마지막 부분을 출력한다.

2. 문법

tail [option] ... [file] ...

기본 출력은 파일의 마지막 10줄을 보여준다.

3. 옵션

옵션 동작
tail -f 파일의 마지막 10라인을 실시간으로 계속해서 출력
tail -F 파일 변동 시 실시간으로 보여주되 로그파일처럼 특정 시간이 지난 후 파일이 변하게 되면 새로운 파일을 오픈하여 보여줌 (다시 명령을 실행할 필요가 없음)
tail -n n 만큼의 라인을 출력
tail -n+n 불필요한 화면 정리후 다시 표시

・df명령어

옵션 동작
df -h h 옵션으로 1k 블록단위에서 우리가 쉽게 볼 수 있도록 K, M, G, T 단위값으로 출력된다. 총 용량과 사용량등 쉽게 파악이 가능해 진다.
df -Th 각 파일 시스템의 유형을 파악가능하다(Type 탭). 단돈으론 잘 사용하지 않으며 h옵션과의 콜라보가 매우 뛰어나, 가장 많이 사용되는 옵션이다. 사이즈 사용된 메모리 등이 출력된다.

・du명령어

옵션 동작
du 1k블록단위로 사용 용량. 그리고 하위 디렉토리를 볼 수 있다. 여담으로 디스크의 최소단위가 4k이기 때문에 디렉토리중 용량이 4k인것은 빈 디렉토리일 확율이 크다.
df -h k단위로 보기좋게 보여준다

・tar명령어

1. tar로 압축하기 : tar -cvf [파일명.tar] [폴더명]

ex) abc라는 폴더를 aaa.tar로 압축하고자 한다면

 > tar -cvf aaa.tar abc

2. tar 압축 풀기: tar -xvf [파일명.tar]

ex) aaa.tar라는 tar파일 압축을 풀고자 한다면

 > tar -xvf aaa.tar

3. tar.gz로 압축하기 : tar -zcvf [파일명.tar.gz] [폴더명]

ex) abc라는 폴더를 aaa.tar.gz로 압축하고자 한다면

 > tar -zcvf aaa.tar.gz abc

4. tar.gz 압축 풀기 : tar -zxvf [파일명.tar.gz]

ex) aaa.tar.gz라는 tar.gz파일 압축을 풀고자 한다면

 > tar -zxvf aaa.tar.gz

・ln명령어

ln은 Link 의 약어로서 리눅스 파일시스템에서 링크파일을 만드는 명령어이다. 리눅스에서는 심볼릭링크와 하드링크의 두가지 링크 파일이 존재한다.

심볼릭링크 (Symbolic Link)

단순히 원본파일을 가리키도록 링크만 시켜둔 것으로 MS의 윈도우시스템에서 흔히 사용하는 '바로가기' 같은 것이며, 원본파일을 가리키고만 있으므로 원본파일의 크기와는 무관한다. 그리고 심볼릭링크에서는 원본파일이 삭제되어 존재하지 않을 경우에 링크파일은 깜박거리면서 링크파일의 원본파일이 없다는 것을 알려준다.

하드링크 (Hard Link)

원본파일과 다른 이름으로 존재하는 동일한 파일이며 원본파일과 동일한 내용의 다른 파일이라고 할 수 있다. 그리고 하드링크에서는 원본파일과 링크파일 두개가 서로 다른 파일이기 때문에 둘 중 하나를 삭제하더라도 나머지 하나는 그대로 남아 있다. 또한 하드링크에서는 원본파일의 내용이 변경될 경우에는 링크파일의 내용 또한 자동으로 변경된다.

사용법 : ln [옵션] 원본파일 대상파일(대상디렉토리)

하드링크 파일 생성

BASH

ln hard_source hard_link  

심볼릭 링크 디렉토리 생성

BASH

ln -s /tmp    /var/tmp 

[옵션]

  • --backup[=CONTROL] : 대상파일이 이미 존재할 경우에 백업파일을 만든 후에 링크파일 생성
  • -b : 링크파일 생성시에 대상파일이 이미 존재하면 백업파일을 만든 후에 링크파일을 생성
  • -d : 디렉토리에 대한 하드링크파일생성을 가능하게 함. 단 root 권한으로 수행하더라도 시스템의 권한제한으로 인하여 실패할 가능성이 높음. (-F 와 --directory 는 -d 와 동일함)
  • -f : 대상파일이 존재할 경우에 대상파일을 지우고 링크파일을 생성
  • -i : 대상파일이 존재할 경우에 대상파일을 지울것인가를 확인요청 (--interactive 와 동일)
  • -s : 심볼릭 링크파일을 생성
  • -S : 백업파일 생성시에 원하는 접미사(suffix)를 지정할 수 있음
  • -t, --target-directory=DIRECTORY : 링크파일을 생성할 디렉토리를 지정

출처: http://webdir.tistory.com/148 [WEBDIR]

+ Recent posts