mod_setenvif 모듈을 통해 특정 조건에 만족시 환경변수를 설정할 수 있다. 환경변수 설정을 통해 프로그래밍 조건문과 같은 효과를 낼 수 있다.


BrowserMatch

- 문법 : BrowserMatch regex [!]env-variable[=value][[!]env-variable[=value]]

- 클라이언트가 보낸 헤더정보에서 regex 표현식을 비교하여 환경변수를 설정한다.

- !가 붙으면 해당 환경변수를 삭제한다.


- 예제)

 BrowserMatch MSIE 7.0 ie=yes

 BrowserMatch "^(curl|ELink|Wget)" iframe=yes !javascript


BrowserMatchNoCase

- BrowserMatch와 역할은 같으며, 대소문자를 구분하지 않는다.


SetEnvIf

- 문법 : SetEnvIf attribute regex [!]env-variable[=value][[!]env-variable[=value]]

- HTTP 요청 속성에 따라 환경변수를 설정한다.

- 첫번째는 HTTP 요청 속성, 두번째는 정규표현식이다.

- 마지막은 변수 설정/해제 옵션이며, 공백을 기준으로 여러개의 변수를 설정할 수 있다.


- 예제)

1. static 리소스만 로그에서 제외하기

SetEnvIf REQUEST_URI \.(gif|jpg|png|js|css)$ static_request

CustomLog ... combined env=!static_request


SetEnvIfNoCase

- SenEnvIf와 역할은 같으며, 대소문자를 구분하지 않는다.

 


※ 참고자료

- 리눅스를 활용한 회사 인프라 구축의 모든 것



'서버 > 아파치' 카테고리의 다른 글

[아파치] Windows용 다운로드 경로  (0) 2016.03.06
[아파치] mod_rewrite 모듈  (0) 2016.02.23
[아파치]VirtualHost 설정  (0) 2016.02.21
[아파치]httpd.conf 서버설정  (0) 2016.02.20
[아파치] httpd.conf 전역설정  (0) 2016.02.12
Posted by SungHoon, Park
,

가상 호스트(VirtualHost)는 한 장비에서 여러개의 웹서비스를 구동할 수 있도록 해준다.

보통 httpd-vhosts.conf에 가상 호스트를 설정하고, httpd.conf 파일 마지막에 Include conf/extra/httpd-vhosts.conf를 추가한다.


IP 기반 가상 호스트

- 한 장비에 여러개의 IP를 할당받고 IP별로 가상호스트를 사용하는 방법이다.

- IP추가를 위해 네트워크 카드 추가 및 네트워크 설정 등이 필요하다.


Listen 192.168.111.100:80

Listen 192.168.111.200:80


<VirtualHost 192.168.111.100:80>

  DocumentRoot /var/www/site1

  ServerName site1.example.com

</VirtualHost>


<VirtualHost 192.168.111.200:80>

  DocumentRoot /var/www/site2

  ServerName site2.example.com

</VirtualHost>


포트 기반 가상 호스트

- 포트를 기반으로 가상 호스트를 설정한다. Listen 포트에 사용할 포트를 여러개 설정한 후 VirtualHost를 해당 포트로 설정하면 된다.

- 하지만, 포트를 인식하고 사용자들이 웹서비스에 접근하는 것은 불편하므로 일반적인 방법은 아니다.


- 예제)

Listen 80

Listen 90


<VirtualHost 192.168.111.100:80>

  DocumentRoot /var/www/port_80

</VirtualHost>


<VirtualHost 192.168.111.100:90>

  DocumentRoot /var/www/port_90

</VirtualHost>


이름 기반 가상 호스트

- 한 장비에 여러개의 도메인 이름을 부여하고 도메인 이름별로 가상 호스트를 사용하는 방법이다.

- 이름 기반 가상 호스트는 클라이언트 요청시 전송하는 헤더중 Host 헤더정보를 사용하여 가상 호스트 설정에 따라 웹 서비스를 하게 된다.


- 예제)

NameVirtualHost *:80


<VirtualHost *:80>

  ServerName site1.example.com

  ServerAlias site1.co.kr

  ServerAlias site.kr

  DocumentRoot /var/www/site1

</VirtualHost>



<VirtualHost *:80>

  ServerName site2.example.com

  DocumentRoot /var/www/site2

</VirtualHost>


1) NameVirtualHost 설정

 - 80 포트에서 이름 기반 가상 호스트를 사용하겠다는 의미로 반드시 적어줘야 한다.

 - 만약 설정되지 않는 호스트명을 보냈을 경우 기본 처리할 가상호스트로 지정하려면 <VirtualHost _default_:80>으로 지정하도록 한다. 만약 이 설정이 없다면 첫번째 가상 호스트 설정으로 동작하게 된다.

 - 하지만 아파치 웹서버 2.4 이후부터는 이름 기반 가상 호스트가 Default이므로, 2.4 이후 버전에서는 없어졌다.


2) ServerAlias

 - 웹서비스가 여러개의 도메인을 사용할 경우 지정해준다. 여러개 지정해줘도 무방하다.



※ 참고자료

- 리눅스를 활용한 회사 인프라 구축의 모든 것



'서버 > 아파치' 카테고리의 다른 글

[아파치] mod_rewrite 모듈  (0) 2016.02.23
[아파치] mod_setenvif 모듈  (0) 2016.02.22
[아파치]httpd.conf 서버설정  (0) 2016.02.20
[아파치] httpd.conf 전역설정  (0) 2016.02.12
[아파치] mod_mpm 모듈  (0) 2016.01.12
Posted by SungHoon, Park
,

아파치 웹서버 httpds.conf 서버설정에 대해 정리한다.


ServerAdmin

- 관리자 이메일 주소를 설정한다. ServerSignature 값이 Email로 설정되었을 경우, 이메일 주소는 404, 500 에러가 발생했을 경우 에러 화면에 해당 이메일 주소가 표시된다.


DocumentRoot

- 웹 프로젝트가 있는 루트 디렉토리를 지정한다.

- 기본설정은 /var/www/html이다.

- 가상호스트에서도 사용할 수 있으므로 가상 호스트마다 각각 다른 웹 프로젝트 서비스가 가능해진다.


DirectoryIndex

- 웹요청 주소가 디렉토리만 있고 파일명이 없을 때 기본적으로 읽어서 전송할 파일명을 설정한다.

- index.html index.jsp 등


<Directory 디렉토리명></Directory>

- 디렉토리 단위별로 설정하는 지시자다. Location 지시자와 비슷하나 차이점은 Location은 URL을 기반으로 한다는 것이다. Directory 지시자는 로컬 파일의 경로를 대상으로 한다.

- 주로 Options와 접근권한을 설정하는 경우가 많다.


- 예제)

<Directory "/var/www/html">

  Options Indexs FollowSymLinks

  AllowOverride None

  Order allow,deny

  Allow from all

</Directory>


1) Options

- 설정한 디렉토리("/var/www/html") 하위의 모든 디렉토리와 파일에 대한 접근권한을 제어한다.

https://httpd.apache.org/docs/2.2/ko/mod/core.html#directory [Options Directive] 참조


 옵션

설명

 None

 모든 접근을 허용하지 않는다.

 All

 모든 옵션설정을 허용한다. (단, MultiViews는 제외)

 Indexes

 디렉토리 접근시 DirectoryIndex에 설정한 파일이 없을 때 디렉토리내 파일 목록을 보여준다.

 Includes

 Server-side includes provided by mod_include are permitted.

 IncludesNoExec

 Server-side includes are permitted, but the #exec cmd and #exec cgi agr disabled. 

 FollowSymLinks

 심볼릭 링크를 사용할 수 있다. 하지만 보안을 위해 이 옵션은 제거하는 것이 좋다.

 만약 DocumentRoot 하위에 root 권한의 폴더(sbin 등)을 심볼릭 링크로 걸어놨다면 nobody로도 해당 디렉토리에 접근할 수 있게 된다.

 ExecCGI

 CGI 스크립트를 실행할 수 있다.

 MultiViews

 클라이언트가 요청한 media type과 content-encoding을 가지고 적절한 요청을 처리한다.


2) AllowOverride

- 디렉토리에 .htaccess 파일이 있을 경우 기존 설정을 덮어쓸지 여부를 설정한다. 기본설정은 None이다.

※ .htaccess 파일은? 웹서비스 디렉토리별로 설정이 달라져야 할 경우가 있다. 이때 관리자가 모든 설정을 하기는 힘들기 때문에 개별 디렉토리마다 다르게 설정하기 위해 존재하는 파일이다. 예로, 호스팅을 받아 서비스를 할때 .htaccess 파일을 사용한다.


옵션

설명

 None

 디렉토리별 설정을 허가하지 않는다. 즉, htaccess 파일을 Override하지 않는다. 

 All

 .htaccess 파일을 우선 적용하도록 Override를 허용한다.

 Options

 .htaccess에 설정된 Options 지시자(디렉토리 옵션) 사용을 허용한다.

 FileInfo

 .htaccess에 설정된 AddEncoding, AddLanguage, AddType, DefaultType, 

  ErrorDocument, LanguagePriority와 같은 문서유형 지시자 사용을 허용한다.

 AuthConfig

 .htaccess에 설정된 클라이언트 인증 지시자 사용을 허용한다.

 Limit

 .htaccess에 설정된 Order, Allow, Deny와 같은 접근제어 지시자 사용을 허용한다.


3) Order allow, deny

- 순서대로 Allow에 대한 부분을 먼저 확인 후, Deny를 확인한다.


4) Allow

- Allow from all : 모든 클라이언트로부터의 연결을 허용한다.

- Allow from 127.0.0.1 192.168.111.100 : 127.0.0.1과 192.168.111.100 IP 클라이언트만 허용한다.


5) Deny

- Deny from all : 모든 클라인트로부터의 연결을 거부한다.

- 예)

<Location /server-status>

  SetHandler server-status

  Order deny,allow

  Deny from all

  Allow from 127.0.0.1

</Location>


<Files 파일명></Files>

- 파일명에 따라 특별한 처리를 할 때 사용한다.

- 파일명에 포함된 ?는 임의의 한 문자와 일치함을, *는 임의의 한 문자열이 일치함을 나타낸다.

- 파일명 앞에 ~가 붙게 되면 정규표현식을 사용할 수 있다.


- 예제1) 관리페이지는 외부인이 볼 수 없도록 설정

<Files admin.php>

  Order deny,allow

  Deny from all

  Allow From 127.0.0.1

</Files>


- 예제2) htm, html, css, js, php 파일 인코딩 설정

<Files ~ "\.(htm|html|css|js|php)$">

  AddDefaultCharset UTF-8

  DefaultLanguage ko_KR

</Files>


<FilesMatch 정규표현식></FilesMatch>

- <Files>의 정규표현식 사용가 동일하다. 대신 <FilesMatch>는 ~를 붙히지 않아도 정규표현식이 적용된다.


- 예제1) htm, html, css, js, php 파일 인코딩 설정

<FilesMatch "\.(htm|html|css|js|php)$">

  AddDefaultCharset UTF-8

  DefaultLanguage ko_KR

</FilesMatch>


Redirect

- Redirect [HTTP 상태코드] [요청URL] [리다이렉트 URL]

- HTTP 상태코드는 리다이렉트가 되면서 바뀔 상태코드를 지정한다. 기본값은 302.


- 예제1)

Redirect 301 /hello http://www.naver.com

Redirect /world http://www.naver.com


RedirectMatch

- Redirect 지시자와 비슷하며 정규표현식으로 리다이렉트를 처리할 수 있다.


- 예제1) 톰캣의 WEB-INF와 META-INF 폴더를 접근 못하게 설정

RedirectMatch 404 /(?i)(WEB-INF|META-INF)(/|$)


DefaultType

- 모르는 타입이 들어왔을 경우 설정할 기본 MIME 타입을 설정한다.


LogFormat

- 서버의 로그파일 형식을 설정한다. common은 기본설정, combined는 Referer와 User-Agent가 추가되었다.


LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

LogFormat "%h %l %u %t \"%r\" %>s %b" common



옵션

설명

예제

 %h

 요청한 원격 호스트

 192.168.111.100

 %l

 원격 로그인명

 - 

 %u

 원격 사용자명

 - 

 %t

 요청날짜 및 시간 

 [21/Feb/2016:15:28:28 +0900]

 %r

 요청의 첫번째 라인

 GET/HTTP/1.1 

 %s

 HTTP 응답코드

 200

 %b 

 HTTP 헤더를 제외한 응답의 Byte 길이 

 66 

 %{헤더명}i

 HTTP 헤더에서 작성한 헤더명에 대한 값을 출력

 %{Referer}i 

 %{User-Agent}i


ErrorLog

- 에러로그 파일을 설정한다.


- 예제)

ErrorLog "| /usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/error.log.%Y%m%d 86400" combined


CustomLog

- 클라이언트의 요청이력을 남길 로그파일을 설정한다.


- 예제)

CustomLog "| /usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/access.log.%Y%m%d 86400" combind


Alias

- 요청 URL을 특정 파일 시스템에 연결시킨다.


- 예제)

Alias /helpFiles /nas/2016/helpFiles


AddDefaultCharset

- 컨텐츠 형식이 text/plain이나 text/html일 경우 HTTP 응답 헤더에 설정된 charset 헤더를 추가한다.

- 가상 호스트마다 다르게 설정할 수 있다.

- HTTP 응답 헤더에 charset이 지정되었을 경우는 HTML <meta>태그로 charset을 지정해도 헤더에 있는 charset이 적용된다. DefaultCharset과 다른 HTML이 있다면 파일의 인코딩을 변경하거나 <meta>태그로 charset을 명시적으로 지정하고 해당 지시자를 Off하여야 한다.


- 예제)

AddDefaultCharset UTF-8


결과 : Content-Type : text/html; charset=UTF-8



※ 참고자료

- 리눅스를 활용한 회사 인프라 구축의 모든 것

http://mcpaint.tistory.com/133

http://toy0box.tistory.com/entry/Apache-httpdconf-주소창-디렉토리-직접-접근-설정



'서버 > 아파치' 카테고리의 다른 글

[아파치] mod_rewrite 모듈  (0) 2016.02.23
[아파치] mod_setenvif 모듈  (0) 2016.02.22
[아파치]VirtualHost 설정  (0) 2016.02.21
[아파치] httpd.conf 전역설정  (0) 2016.02.12
[아파치] mod_mpm 모듈  (0) 2016.01.12
Posted by SungHoon, Park
,

아파치 웹서버 httpd.conf 전역설정에 대해 정리한다.


ServerRoot "etc/httpd"

- 아파치 웹서버가 설치되어 있는 곳의 최상위 디렉토리.

- 기본설정은 "/etc/httpd"


ServerTokens Prod

- 웹서버 오류가 발생하였을 경우, 에러페이지와 Http Response 헤더에 보여지는 웹서버 정보의 노출 수준을 설정한다.

- 옵션 종류 : Full | OS | Minor | Minimal | Major | Prod

- 너무 많은 정보가 출력되는 것은 문제가 있으므로, 보통 Prod(Production)으로 설정하는 것이 좋다.


1) 에러페이지

- ServerSignature가 Off이면 웹서버 정보가 노출되지 않는다.


옵션

내용

Full 

 Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/1.0.1e-fips DAV/2 mod_jk/1.2.41 Server at 10.113.232.101 Port 80

OS

 Apache/2.2.31 (Unix) Server at 10.113.232.101 Port 80

Minor

 Apache/2.2 Server at 10.113.232.101 Port 80

Minimal

 Apache/2.2.31 Server at 10.113.232.101 Port 80

Major

 Apache/2 Server at 10.113.232.101 Port 80

Prod

 Apache Server at 10.113.232.101 Port 80


2) Http Response 헤더


옵션

내용

Full 

 Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/1.0.1e-fips DAV/2 mod_jk/1.2.41

OS

 Apache/2.2.31 (Unix)

Minor

 Apache/2.2

Minimal

 Apache/2.2.31

Major

 Apache/2

Prod

 Apache


KeepAlive Off

- KeepAlive는 한 프로세스가 특정 사용자의 요청을 지속적으로 허용하며 처리할지 여부를 설정한다.

- 기본설정은 Off이다. On으로 설정할 경우, 메모리 사용의 부담이 많아지게 되지만 성능은 좋아진다. 단발성 요청이 많은 대민 서비스의 경우 Off가 적절하다. (물론, 상황에 따라 다르다)


KeepAliveTimeout 15

- KeepAlive가 On일 경우에 유효한 값으로, 같은 클라이언트에서 처리할 시간을 지정한다.

- 기본설정은 15초


MaxKeepAliveRequests 100

- KeepAlive가 On일 경우에 유효한 값으로, 한 프로세스에서 특정 사용자의 요청을 설정에 지정된 횟수만큼 처리한다.  횟수를 넘어가게 되면 프로세스는 죽고, 다른 프로세스가 요청을 처리하게 된다.

- 기본설정은 100


Listen 80

- 해당 포트를 리스닝 하도록 설정한다. 여러개의 포트를 사용하려면 Listen 구문을 여러번 사용하면 된다.

- 기본값은 80


LoadModule

- 오브젝트 파일이나 라이브러리를 읽어온 후에 사용가능한 모듈 목록에 추가하는 지시자다.

- DSO(Dynamic Shared Object) 형태의 모듈에 사용한다.


User nobody

Group nobody

- 유닉스 계열 운영체제에서 1024 이하의 포트는 root 사용자만 사용할 수 있다. 하지만 root 권한으로 웹서버가 운영될 경우, 취약점을 이용해 공격자에게 root 권한을 유출할 수 있는 위험이 존재하게 된다. 따라서, 최초 구동은 root로 하고 자식 프로세스는 setuid, setgid 함수로 User, Group 지시자에 설정된 사용자 및 그룹으로 권한이 전환된다.

- ps -ef | grep httpd를 실행해보면 부모 프로세스만 root이고, 나머지는 apache(또는 nobody)로 떠있는 것을 확인할 수 있다.


Include

- 다른 설정파일을 포함시키는 지시자다.

- 하나의 파일에 모든 설정을 담고 있으면 관리 및 수정이 어렵기 때문에, 용도별로 설정파일을 나누고 Include 지시자로 포함을 하는것이 좋다.

- 예로 SSL 설정은 Include conf/extra/httpd-ssl.conf로 설정파일이 나뉘어 있다.


※ 참고자료

- 리눅스를 활용한 회사 인프라 구축의 모든 것

'서버 > 아파치' 카테고리의 다른 글

[아파치] mod_rewrite 모듈  (0) 2016.02.23
[아파치] mod_setenvif 모듈  (0) 2016.02.22
[아파치]VirtualHost 설정  (0) 2016.02.21
[아파치]httpd.conf 서버설정  (0) 2016.02.20
[아파치] mod_mpm 모듈  (0) 2016.01.12
Posted by SungHoon, Park
,

/ (루트)

- 파일시스템 구조에서 최상위를 가리키는 루트 디렉토리이다.

- 모든 것들이 이 디렉토리 안으로 들어가며, 모든것의 출발점이다.


/boot

- 부트로더, 커널 등 부팅에 필요한 요소가 저장된다.


/bin과 /sbin

1) /bin

- 일반 사용자가 사용하는 프로그램이 저장된다.

- /bin -> /usr/bin 심볼릭 링크


2) /sbin

- 관리자가 사용하는 프로그램이 저장된다.

- /sbin -> /usr/sbin 심볼릭 링크


/dev

- 장치(디스크, 그래픽카드, 사운드카드 등)에 관련된 파일들이 있다.

- 시스템 도구가 특정 컴퓨터의 하드웨어에 간편한 방법으로 접근할 수 있도록 한다.


예)

/dev/sda

/dev/sda1

/dev/sda2

/dev/sdb


- 이 경우 sd는 SCSI 디스크를 의미하며, a, b는 디스크의 순서이다. sd 뒤의 1, 2는 파티션 번호이다.

- 하드 디스크의 경우는 hd로 시작한다.


/etc

- 시스템에서 가장 중요한 디렉토리라 할 수 있다.

- /etc에는 시스템 또는 사용자가 설치한 애플리케이션의 환경설정 파일등이 담기게 된다. (웹서버 등)

- 백업이 필요할 경우 /etc 디렉토리의 환경설정 파일 백업도 고려해야 한다.


/home

- 사용자의 홈 디렉토리


/lib

- 애플리케이션에 필요한 라이브러리 파일이 저장된다

- 라이브러리는 패키지 형태로 애플리케이션 사이에서 공유된다.

- 직접 건드릴 일은 없겠지만, 그래야 하는 상황이라면 조심해야 한다. 시스템 안정성에 영향을 미칠 수 있다.


/lost+found

- 파일시스템에 문제가 있을 시 문제가 발생한 파일의 아이노드 번호가 이곳에 저장된다.


/mnt

- mount를 의미한다.

- 네트워크 공유, 외장 하드디스크 등을 연결하려면 /mnt 하위에 디렉토리를 만들어 마운트하게 된다.


/media

- 최근에 등장한 디렉토리이며, USB나 카메라 등과 같은 이동식 미디어가 마운트된다.


/opt

- 서드파티 소프트웨어나 애플리케이션이 이 디렉토리를 사용한다.


예) 오라클 DB의 Default 설치경로


/root

- 루트 사용자의 홈 디렉토리 (/와 혼동하지 말자)


/proc

- 시스템 정보 및 프로세스(process) 정보를 확인할 수 있는 디렉토리

- 정보들은 커널에서 메모리상에 만들어주기 때문에 가상 파일시스템이라 할 수 있다.


예)

cat /proc/cpuinfo

cat /proc/meminfo


/srv

- 파일을 다루는 서비스에서 데이터를 저장하는 곳이다.


/sys

- 시스템 정보가 담기며, /proc과 달리 실제 파일이 저장된다.


/tmp

- 임시파일이 저장된다.

- 모든 애플리케이션이 이 디렉토리에서 파일을 만드며, 임시저장소로 이곳을 사용한다.


/usr

- 모든 애플리케이션이 설치되는 곳이다.


/var

- 로그파일, 캐시파일, 잠금파일 등이 저장된다.



※ 참고자료

- 리눅스와 함께하는 라즈베리 파이. 92-105


Posted by SungHoon, Park
,



텍스트 복사하기

1) 한줄복사

예제1) yy (한줄복사) → p (붙혀넣기)

예제2) V(한줄선택) → y(복사)  p (붙혀넣기)


2) 블록으로 선택하여 복사

예제) 비주얼 모드(Visual Mode) 상태에서 방향키로 텍스트의 블럭 선택 → y(복사)  p (붙혀넣기)


※ 참고자료

http://www.viemu.com/



'서버 > 리눅스 명령어' 카테고리의 다른 글

[리눅스] strings 명령어  (0) 2016.08.30
[리눅스] vi 에디터에서 텍스트 바꾸기  (0) 2016.06.08
[리눅스] find  (0) 2015.12.16
[리눅스] sort  (0) 2015.12.09
[리눅스] tar, zip  (0) 2015.12.08
Posted by SungHoon, Park
,

디렉토리에 존재하는 파일을 찾는 명령어이다.

기본형식은 "find [대상디렉토리] -name [파일명]"이다.


[옵션설명]

  • -name : 파일명으로 검색한다.
  • -iname : -name과 같이 파일명으로 찾으나, 대소문자를 구분하지 않는다. (insensitive)
  • -type : 파일타입을 지정한다.
    • b : block (buffered) special
    • c : character (unbuffered) special
    • d : directory
    • p : named pipe (FIFO)
    • f : regular file
    • l : symbolic link
    • s : socket
    • D: door (Solaris)
  • -user : 소유자로 검색한다.
  • -perm : 허가권으로 검색한다.
  • -size : 파일 크기로 검색한다.
  • -exec : 외부명령을 실행한다.
1. 현재 디렉토리에서 test.txt 파일명으로 찾기

예제) find . -name test.txt

2. 대소문자 상관없이 TE 텍스트가 들어간 파일 찾기

예제) find . -iname TE*

3. logs란 이름의 디렉토리 찾기

예제) find . -name logs -type d

4. 파일 사이즈로 검색
- 95k 이상 100k 이하의 파일을 검색한다.

예제) find /etc -size +10k -size -100k

5. 검색한 파일목록을 ls 명령어로 확인하기
- exec 명령어로 외부명령을 실행하며 find 결과가 {}안에 들어가게 된다.
- 끝의 \;(역슬래시 세미콜론)은 외부명령어의 끝을 의미한다.

예제) find /home1 -name "*.txt" -exec {} \;

6. find로 검색시 허가 거부됨(Permission denied)이 뜰 경우

1) 루트에서 파일을 검색하게 되면 Permission denied가 자주 뜰 수 있다. 이 경우 Standard Error 출력을 /dev/null로 버리면 된다. 참고로 /dev/null은 휴지통임.

2) 리눅스/유닉스 I/O Streams numbers

Handle

Name

Description

0

stdin

Standard Input 

1

stdout

Standard Output

2

stderr

Standard Error


예제) find / -name *.txt 2>dev/null



'서버 > 리눅스 명령어' 카테고리의 다른 글

[리눅스] vi 에디터에서 텍스트 바꾸기  (0) 2016.06.08
[리눅스] vi 에디터 기본  (0) 2015.12.28
[리눅스] sort  (0) 2015.12.09
[리눅스] tar, zip  (0) 2015.12.08
[리눅스] ls  (0) 2015.11.06
Posted by SungHoon, Park
,

sort 명령은 텍스트파일의 라인을 정렬해주는 명령어이다.


[옵션설명]

  • c(check) : 정렬여부를 체크한다.
  • f(fold) : 소문자를 대문자로 간주. 즉 대소문자 구분없이 정렬된다.
  • k(key) : 입력한 필드 번호를 기준으로 정렬한다.
  • n(numeric-sort) : 텍스트를 숫자로 간주하여 정렬한다.
  • r(reverse) : 역순으로 정렬한다.
  • t(field-separator) : 필드의 구분자이다. 왜 약어가 t인지는 잘 모르겠음.

1. 8번째 필드를 기준으로 정렬하기
-k 옵션으로 공백 기준 여덟번재 필드인 파일명을 기준으로 정렬을 한다.

ls -l | sort -k 8

1) 정렬전


2) 정렬후



2. 텍스트를 숫자로 간주하여 정렬하기

- n은 텍스트를 숫자로 간주하여 정렬을 한다.


cat sample.txt | sort -n


1) 정렬전


2) 그냥 정렬했을 경우


3) -n 옵션을 추가하여 정렬





'서버 > 리눅스 명령어' 카테고리의 다른 글

[리눅스] vi 에디터 기본  (0) 2015.12.28
[리눅스] find  (0) 2015.12.16
[리눅스] tar, zip  (0) 2015.12.08
[리눅스] ls  (0) 2015.11.06
[리눅스] wc  (0) 2015.09.09
Posted by SungHoon, Park
,

tar 명령어는 파일을 묶어주는 역할을 한다.

옵션을 통해 파일을 묶어주면서 압축도 함께 사용할 수 있다.


[tar 옵션설명]

  • z (gzip) : gzip 압축사용
  • j (소문자) : bzip2 압축 사용
  • J (대문자) : xz 압축 사용
  • c (create) : 새 archive를 생성한다.
  • v (verbose) : verbose는 "말많은, 장황한"이란 뜻이다. 진행중인 파일정보를 출력해준다.
  • f (file) : archive 파일명을 지정한다.
  • x (extract) : archive 파일을 해제한다.
  • C (change) : 디렉토리 경로를 변경한다.

1. 묶기

예제1) tar -cvf test.tar *.* (모든파일)
예제2) tar -cvf test.tar test (test 디렉토리)

2. 묶기 해제


예제) tar -xvf test.tar


3. 압축묶기

- z, j, J 옵션을 통해 압축파일을 생성한다.


예제1) tar -Jcvf test.tar test (xz 압축)

예제2) tar -jcvf test.tar test (bzip2 압축)

예제3) tar -zcvf test.tar test (gzip 압축)


4. 압축풀기

- z, j, J 옵션을 통해 압축을 해제한다.


예제1) tar -Jxvf test.tar

예제2) tar -jxvf test.tar

예제3) tar -zxvf test.tar


5. 특정 디렉토리에 압축풀기


예제) tar -zxvf test.tar -C test2




그리고 tar 명령과 함께 압축 명령도 보면 좋을 것 같아서 같은 페이지에 추가 설명한다.

압축률은 최신 압축 명령어가 더 좋으며, xz > bz2 > gz 순이다.


[압축 옵션설명]

  • # (1-9까지 숫자) : 1로 갈수록 압축시간은 빠르나 압축율이 낮다. 9로 갈수록 압축시간은 느려지나 압축율은 높다. 디폴트는 6임.
  • v (verbose) : 진행중인 파일정보를 출력해준다.
  • d (decompress) : 압축을 해제한다.

 

1. 압축하기

- 명령을 실행하게 되면 .tar 파일이 .tar.gz 등으로 파일로 변경되고 파일용량도 줄어드는 것을 확인할 수 있다.


예제1) xz test.tar

예제2) bzip2 test.tar

예제3) gzip -9v test.tar

 

2. 압축풀기


예제1) xz -d test.tar.xz

예제2) bzip2 -d test.tar.bz2 (또는 bunzip2 test.tar.bz2)

예제3) gzip -d test.tar.gz (또는 gunzip test.tar.gz)



 

'서버 > 리눅스 명령어' 카테고리의 다른 글

[리눅스] find  (0) 2015.12.16
[리눅스] sort  (0) 2015.12.09
[리눅스] ls  (0) 2015.11.06
[리눅스] wc  (0) 2015.09.09
[리눅스] du  (0) 2015.09.07
Posted by SungHoon, Park
,

디렉토리내 파일 리스트를 출력해주는 명령어이다.


1. 상세 리스트 보기

- l은 long의 약자로서, 좀 더 긴 리스트 포맷을 나타내준다. 상세한 정보를 보여준다고 할 수 있다.

- 또한 ll 명령어는 ls -l의 축약이다.


ls -l


2. 숨김파일까지 모두 보기

- a는 all의 약자로서 .으로 시작하는 숨김파일들까지 모두 보여준다.


ls -al


3. 하위 디렉토리까지 보기

- ls -R


4. 디렉토리 및 파일갯수 확인하기

- grep과 wc 파이프 조합을 통해 카운트할 수 있다.

- ^ 옵션은 정규표현식 메타문자로 행의 시작지시자이다.

- l 명령을 사용해야 디렉토리, 파일을 구분할 수 있는 상세정보를 알 수 있다.


1) 디렉토리 갯수 확인

ls -al | grep ^d | wc -l


2) 파일갯수 확인

ls -al | grep ^- | wc -l


3) 하위 디렉토리를 포함하여 파일갯수 확인

ls -alR | grep ^- | wc -l


5. 파일 생성일 기준으로 정렬하기

1) 내림차순

ls -alt


2) 오름차순

ls -altr


6. 파일 사이즈를 기준으로 정렬

- 파일 사이즈 정렬은 sort 옵션과 함께 사용해주면 처리할 수 있다.


1) 내림차순

ls -l | sort -k 4 -r


ls -l | sort -k 4 -r | more 

(more 옵션을 주게 되면 페이지별로 볼 수 있다. 첫번째 페이지에서 제일 큰 값을 확인할 수 있음)


2) 오름차순

ls -l | sort -k 4



'서버 > 리눅스 명령어' 카테고리의 다른 글

[리눅스] sort  (0) 2015.12.09
[리눅스] tar, zip  (0) 2015.12.08
[리눅스] wc  (0) 2015.09.09
[리눅스] du  (0) 2015.09.07
[리눅스] df  (0) 2015.09.07
Posted by SungHoon, Park
,