블로그 이미지
GUCCI

카테고리

전체보기 (111)
여행 (1)
기기 (2)
쇼핑 (0)
게임 (0)
etc. (6)
취업이야기 (0)
업무일지 (5)
리눅스 (38)
웹프로그래밍 (2)
네트워크 (4)
JAVA (17)
Android (0)
IOS (2)
LUA (8)
C/C++ (1)
Objective C (2)
SERVER (2)
그누보드4 (1)
MSSQL (2)
Programming (1)
자바스크립트 (4)
HTML/CSS (1)
LGNAS (0)
Total
Today
Yesterday

'리눅스'에 해당되는 글 38건

  1. 2012.02.15 vlan vconfig 3
  2. 2012.02.15 sysctl 명령어 2
  3. 2012.02.14 insmod, rmmod, lsmod, modprobe 3
  4. 2012.02.14 쉘 내장 명령어 2
  5. 2012.02.14 test 명령어 3
  6. 2012.02.14 at 와 crond 명령어 2
  7. 2012.02.13 grep 명령어 와 활용 7
  8. 2012.02.13 ln 명령어 심볼릭,하드 4
  9. 2012.02.10 Linux Hotplug 6
  10. 2012.02.10 리눅스 부팅 과정 2
vlan은 우분투에서 vlan 패키지로 vconfig라는 프로그램을 제공하게 된다.

$ vconfig
'vconfig' 프로그램은 현재 설치되어 있지 않습니다.  다음을 입력하여 이를 설치할 수 있습니다:
sudo apt-get install vlan

$ sudo apt-get install vlan
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  vlan
0개 업그레이드, 1개 새로 설치, 0개 지우기 및 2개 업그레이드 안 함.
40.3k바이트 아카이브를 받아야 합니다.
이 작업 후 180k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu/ lucid/main vlan 1.9-3ubuntu3 [40.3kB]
내려받기 40.3k바이트, 소요시간 0초 (242k바이트/초)
전에 선택하지 않은 vlan 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 185765개의 파일과 디렉토리가 설치되어 있습니다.)
vlan 패키지를 푸는 중입니다 (.../vlan_1.9-3ubuntu3_i386.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
vlan (1.9-3ubuntu3) 설정하는 중입니다 ...

$ vconfig
Expecting argc to be 3-5, inclusive.  Was: 1

Usage: add             [interface-name] [vlan_id]
       rem             [vlan-name]
       set_flag        [interface-name] [flag-num]       [0 | 1]
       set_egress_map  [vlan-name]      [skb_priority]   [vlan_qos]
       set_ingress_map [vlan-name]      [skb_priority]   [vlan_qos]
       set_name_type   [name-type]

* The [interface-name] is the name of the ethernet card that hosts
  the VLAN you are talking about.
* The vlan_id is the identifier (0-4095) of the VLAN you are operating on.
* skb_priority is the priority in the socket buffer (sk_buff).
* vlan_qos is the 3 bit priority in the VLAN header
* name-type:  VLAN_PLUS_VID (vlan0005), VLAN_PLUS_VID_NO_PAD (vlan5),
              DEV_PLUS_VID (eth0.0005), DEV_PLUS_VID_NO_PAD (eth0.5)
* FLAGS:  1 REORDER_HDR  When this is set, the VLAN device will move the
            ethernet header around to make it look exactly like a real
            ethernet device.  This may help programs such as DHCPd which
            read the raw ethernet packet and make assumptions about the
            location of bytes.  If you don't need it, don't turn it on, because
            there will be at least a small performance degradation.  Default
            is OFF.

$ sudo modprobe 8021q

$ lsmod | grep 8021q
8021q                  18564  0 
garp                    6284  1 8021q

$ sudo vconfig add eth0 10
Added VLAN with VID == 10 to IF -:eth0:-

$ sudo ifconfig eth0.10 10.0.0.1 netmask 255.255.255.0

$ ifconfig
eth0.10   Link encap:Ethernet  HWaddr 00:e0:91:0b:75:8c  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::2e0:91ff:fe0b:758c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:2110 (2.1 KB) 

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

awk  (6) 2012.02.15
리눅스 퍼미션 permission  (1) 2012.02.15
sysctl 명령어  (2) 2012.02.15
insmod, rmmod, lsmod, modprobe  (3) 2012.02.14
test 명령어  (3) 2012.02.14
Posted by GUCCI
, |
sysctl 명령어는 커널 runtime 시에 커널의 파라미터를 변경할 때 사용
시스템의 /proc/sys 디렉토리밑에 있는 커널 매개변수를 제어

사용
sysctl [option] 파일명 or 파일명=값

옵션
-a : 현재 커널 매개변수와 값을 보여줌
-p : sysctl 환경변수파일 (default : /etc/sysctl.conf)의 설정 상태 표시
-n : 특정키에 대한 값을 보여줌
-w variable=value : 변수에 값을 설정
-A : 테이블형태로 설정가능한 파라미터를 보여줌 

예문
현재 커널의 매개변수값을 출력
sysctl -a


리눅스마스터1급 2차 14회 15번 문제
sysctl 을 이용해 /proc/sys/net/ipv4/icmp_echo_ignore_all 값을 설정
sysctl -w net.ipv4.icmp_echo_ignore_all=1

sysctl 이 /proc/sys 이하의 디렉토리 밑에 있는 커널 매개변수를 제어하는데,
/proc/sys/net/ipv4/icmp_echo_ignore_all 의 경우 기본 /proc/sys 를 제외하고
net 부터 . 으로 디렉토리를 구분하여 변수명으로 설정된다.
/proc/sys/net/ipv4/icmp_echo_ignore_all 의 설정은

net.ipv4.icmp_echo_ignore_all 변수가 된다

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

리눅스 퍼미션 permission  (1) 2012.02.15
vlan vconfig  (3) 2012.02.15
insmod, rmmod, lsmod, modprobe  (3) 2012.02.14
test 명령어  (3) 2012.02.14
at 와 crond 명령어  (2) 2012.02.14
Posted by GUCCI
, |
insmod : 모듈 적재. 커널 디렉토리를 뒤져서 해당 모듈을 적재한다


■ 형식 : insmod [옵션] [오브젝트파일]

■ 옵션
  -k : autoclean 을 사용하여 적재



■ rmmod : 모듈 삭제

■ 형식 : rmmod [옵션] [모듈]

■ 옵션
  -r : 의존관계에 있는 모듈을 한번에 삭제



■ lsmod : 적재된 모듈 출력(/proc/modules 를 참조한다)

■ 형식 : lsmod [옵션]

■ 옵션
  -V : lsmod 버전 출력



■ modprobe : 모듈 적재. depmod에 의해 갱신된 modules.dep에서 찾아 적재한다. insmod와 달리 해당 커널 디렉토리로 갈 필요없이 아무위치에서나 모듈을 적재할수 있다. 또한 의존성이 필요한 모듈이나 먼저 실행되어야 할 모듈이 있다면 그 모듈부터 적재하고 해당 모듈을 적재한다

■ 형식 : modprobe [옵션] [오브젝트파일]

■ 옵션
  -k : autoclean 을 사용하여 적재
  -r : 모듈 삭제



■ depmod :
 의존성 검사를 한뒤 modules.dep 파일을 갱신한다. kernald나 modprobe를 실행하기 전엔 꼭 depmod -a를 사용하는 습관을 들인다

■ 형식 : depmod [옵션]

■ 옵션



■ modinfo : 모듈 정보 확인

■ 형식 : modinfo [모듈명]



* autoclean

autoclean라는 플레그를 사용하면 커널 데몬(kerneld)에 의해 일정시간 사용하지 않는 모듈을 삭제한다. 단 커널 컴파일시 kerneld 지원 여부를 물을때 Y를 해야 사용 가능

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

vlan vconfig  (3) 2012.02.15
sysctl 명령어  (2) 2012.02.15
test 명령어  (3) 2012.02.14
at 와 crond 명령어  (2) 2012.02.14
grep 명령어 와 활용  (7) 2012.02.13
Posted by GUCCI
, |
 :  아무 것도 수행하지 않고 종료 상태만 0으로 반환한다.
.file 마침표(.)명령어는 파일을 읽어서 실행한다. 
break[n] '루프'부분 내용 참조 
현재 쉘 내에서 프로그램을 실행한다.(source 명령어와 동일) 
alias 별명의 목록을 출력하거나 새로 생성한다. 
bg 작업을 백그라운드로 보낸다 
bind  readlind 함수나 매크로에 대한 현재 키와 함수 바인딩, 바인드 키를 보여준다. 
break  가장 안쪽의 루프를 탈출한다 
builtin [sh-builtin [arg]]  내장 명령어를 실행시킨다. 인자를 전달할 수 있으며, 종료 상태를 0으로 반환한다. 함수와 내장 명령어의 이름이 같은 경우 유용하다. 
cd [arg]  인자를 지정하지 않으면 홈 디렉토리로 이동한다. 
command command [arg]  함수와 동일한 이름일지라도 명령어를 실행한다.(함수를 찾아보는 과정이 생략됨) 
continue [n]  루프의 내용을 참고하라. 
declare [var]  모든 변수를 보여주거나, 특정 속성을 지정하여 변수를 선언한다. 
dirs  pushd 이후에 현재 기억된 디렉토리의 목록을 보여준다. 
disown  작업 테이블에서 활성 작업을 제거한다. 
echo [args]  인자를 반향(echo)한다. 
enable  쉘 내장 명령어를 활성화하거나 비활성화 
eval [args] 실행 전에 명령행의 내용을 두 번 검사하게 한다. 한 번은 쉘이 인자로써 해석하고, 또 한 번은 명령어로써 실행한다.

exec command 현재 쉘에서 명령어를 실행한다.
exit [n] 종료 상태를 n으로 반환하고, 종료한다.
export [var] 자식 쉘에게 var를 상속한다. 
fc  히스토리 목록을 편집하기 위한 명령어(fix command) 
fg  백그라운드 작업을 포그라운드로 가져온다. 
getopts  명령행에서 지정한 유효한 옵션을 추출하기 위해 스크립트에서 사용한다. 
hash  명령어의 빠른 수행을 위해, 내부 해시 테이블을 제어한다. 
help [command]  내장 명령어에 대한 도움말을 제공한다 
history  히스토리 목록을 행 번호와 함께 출력한다. 
jobs  백그라운드의 작업 목록을 출력한다. 
kill [-signal process] 지정한 PID번호나 작업 번호에 시그널을 보낸다. kill -l 참조 
let  산술식을 평가하거나 산술 계산의 결과를 변수에 저장하기 위해 사용한다. 
local  변수의 통용범위를 함수 내로 제한하기 위해 사용한다. 
logout  로그아웃 
popd  디렉토리 스택의 항목을 제거한다. 
pushd 디렉토리 스택에 항목을 추가한다.
pwd  현재 작업 디렉토리를 보여준다. 
read [var] 표준 입력에서 읽은 내용을 변수 var에 저장한다. 
readonly [var] 변수  var를 읽기 전용으로 만든다. 변수 var를 재설정할 수 없다.
return [n] 종료 상태를 n의 반환하고, 함수로부터 복귀한다. 
set  옵션과 위치 인자를 설정한다. 
shift [n] 위치 인자를 지정한 n회 만큼 왼쪽으로 이동시킨다. 
stop pid 지정한 pid의 프로세스를 중지한다.halt
suspend 현재 쉘의 수행을 정지시킨다. 
test 파일 유형이나 조건식을 평가한다. 
times 현재 쉘에서 수행된 프로세스들의 수행시간에 대한 정보를 출력한다.
trap [arg] [n] 쉘은 시그널 n에 대해 arg를 수행한다.
type [command] 명령어의 유형을 출력한다. 
typeset 변수의 설정이나 속성을 지정한다. declare와 동일하다 
ulimit  프로세스가 사용할 수 있는 자원의 최대 한계를 설정한다. 
umask [octal digits] 파일 생성 시에 적용할 권한(소유자, 그룹, 다른 사람)을 설정한다. 
unalias  별명의 설정을 해제한다. 
unset [name]  변수나 함수의 설정을 해제한다. 
wait [pid#n] 백그라운드에서 수행되는 지정한 pid의 프로세스가 종료할 때가지 스크립트를 중지한다. 

'리눅스 > 쉘스크립트' 카테고리의 다른 글

쉘 프로그래밍 강좌  (2) 2012.02.09
쉘스크립트 조건문  (7) 2012.02.08
쉘스크립트  (1) 2012.02.08
#!/bin/sh  (3) 2012.02.08
Posted by GUCCI
, |
이름
test - 화일 유형을 점검하고 값을 비교한다. 
개요
test [표현식] 
test {--help,--version} 
설명
이 맨페이지는 GNU 버전의 test 를 다룬다. 대부분의 쉘은 같은 이름, 같은 기능의 내장 명령을 지니고 있을 것이다. 
test 조건 표현식의 평가에 따라 0 (참) 또는 1 (거짓)의 상태를 반환한다. expr. 은 단항식(unary) 또는 이항식(binary)가 될 수 있다. 단항식은 보통 화일의 상태를 조사하는데 사용된다. 문자열 연산잔와 수치 비교 연산자도 있다. 


-b 화일 
만약 화일 이 존재하며 블럭 장치이며 참. 
-c 화일 
만약 화일 이 존재하고 문자 장치이면 참. 
-d 화일 
만약 화일 이 존재하고 디렉토리이면 참. 
-e 화일 
만약 화일 이 존재하면 참. 
-f 화일 
만약 화일 이 존재하고 보통의 화일이면 참. 
-g 화일 
만약 화일 이 존재하고 set-group-id 이면 참. 
-k 화일 
만약 화일 이 ``sticky'' 비트 설정을 가지고 있으면 참. 
-L 화일 
만약 화일 이 존재하고 심복릭 링크이면 참. 
-p 화일 
만약 화일 이 존재하고 명명된 파이프이면 참. 
-r 화일 
만약 화일 이 존재하고 읽기 가능이면 참. 
-s 화일 
만약 화일 이 존재하고 0 보다 큰 크기를 갖으면 참. 
-S 화일 
만약 화일 이 존재하고 소켓이면 참. 
-t [fd] 
만약 fd 가 터미널 상에서 오픈된 것이면 참. 만약 fd 가 생략되면 기본값은 1 ( 표준출력 )이다. 
-u 화일 
만약 화일 이 존재하고 set-user-id 비트 설정을 가지면 참. 
-w 화일 
만약 화일 이 존재하고 쓰기가능이면 참. 
-x 화일 
만약 화일 이 존재하고 실행가능이면 참. 
-O 화일 
만약 화일 이 존재하고 유효 사용자 ID의 소유이면 참. 
-G 화일 
만약 화일 이 존재하고 유효 그룹 ID의 소유이면 참. 
화일1 -nt 화일2
만약 화일1 이 (수정일에 의거하여) 화일2보다 최근에 생겼다면 참. 
화일1 -ot 화일2
만약 화일1 이 화일2보다 오래된 것이면 참. 
화일1 -ef 화일2
만약 화일1 과 화일2 이 같은 장치, 같은 아이노드 번호를 갖는다면 참. 
-z 문자열 
만약 문자열의 길이가 0 이면 참. 
-n 문자열 
string
문자열 의 길이가 0 이 아니라면 참. 
문자열1 = 문자열2
두 문자열이 같으면 참. 
문자열1 != 문자열2
두 문자열이 같지 않으면 참. 
! 표현식 
표현식 이 거짓이면 참. 
표현식1 -a 표현식2
표현식1 과 표현식2 가 둘 다 참이면 참. 
표현식1 -o 표현식2
표현식1 또는 표현식2 둘 중 하나라도 참이면 참. 
인수1 OP 인수2 
여기서 OP 는 다음 중 하나이다. -eq, -ne, -lt, -le, -gt, 또는 -ge. 이러한 수치 이항 연산자들은 각각 만약 인수1이 인수2보다 같거나, 같지 않거나, 작거나, 작거나 같거나, 크거나, 크거나 같을 때 참을 반환한다. 인수1 와 arg2 는 양의 정수, 음의 정수 또는 문자열 의 길이를 평가하는 -l 문자열 표현식이 될 수 있다. 

옵션
GNU test 가 단 한 개의 인수로 시작하면 다음 옵션이 인식된다: 
--help 
표준출력으로 사용법을 출력하고 정상적으로 종료한다. 
--version 
표준출력으로 버전정보를 출력하고 정상적으로 종료한다.

[출처] [리눅스 명령어] test|작성자 holyruby

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

sysctl 명령어  (2) 2012.02.15
insmod, rmmod, lsmod, modprobe  (3) 2012.02.14
at 와 crond 명령어  (2) 2012.02.14
grep 명령어 와 활용  (7) 2012.02.13
ln 명령어 심볼릭,하드  (4) 2012.02.13
Posted by GUCCI
, |

1. at

특정 시간에 특정 job을 자동으로 실행하고자 할 때 사용

at [-m] [-r job] [-t time] [date]

-m : job 이 끝난 후 사용자에게 메일을 보냄

-r : queue 에서 전에 스케쥴되었던 job을 제거

-t time : 명령어를 실행할 시간 지정

date : 명령어를 실행할 날짜 지정

 

# date
Wed Mar  4 10:16:32 KST 2009

#
# at 10:16 am 2009-03-05        // 2009년 3월 5일 오전 10시 16분에 at 작업 등록
at> touch /mylinux/attest1
at> <EOT>                          // ^D
job 4 at 2009-03-05 10:16
#

# at 15:00 2009-03-05            // 2009년 3월 5일 오후 3시에 at 작업 등록
at> touch /mylinux/attest2
at> <EOT>
job 5 at 2009-03-05 15:00
#

# atq         // at 작업 확인
5       2009-03-05 15:00 a root
4       2009-03-05 10:16 a root
#
# at -r 4    // at 작업 중 4번 작업 삭제
# atq
5       2009-03-05 15:00 a root

#
# atrm 5    // at 작업 중 5번 작업 삭제. at -r 과 동일
# atq
#

 

/etc/at.deny (솔라리스에선 /etc/cron.d/at.deny)

at를 실행하는 사용자를 제한할 수 있다.

at.deny 에 등록된 사용자가 at 를 사용할 경우 다음의 메시지를 뿌리며 사용을 제한한다.

 

$ at 10:00 pm
You do not have permission to use at.

 

/etc/at.allow (/etc/cron.d/at.allow)

이 파일은 존재하진 않지만 root가 이 파일을 만들어 특정 사용자에게만 at를 실행할 수 있도록 할 수 있다.

at.allow, at.deny 가 둘다 존재할 경우 at.allow를 먼저 읽은 후 at.deny를 읽는다.

 

at.deny, at.allow 파일 둘다 존재하지 않을 경우 root 만이 at 작업을 실행할 수 있다.

 

2. crond

일정한 시간에 정기적인 작업을 수행하고자 할 때 사용

6개의 필드로 구성되어 있으며 각 필드는 Spacebar 나 tab으로 구분

minute hour day month weekday command

-> 10 3 * * 0 /usr/lib/newsyslog

-> 매주 일요일 3시 10분에 /usr/lib/newsyslog 실행

minute : 0-59 | hour : 0-23 | day : 1-31 | month : 1-12, January-December | weekday : 0-6 (0 : sunday)

 

# crontab -e           // crontab 을 추가하기 위해 실행
no crontab for root - using an empty one
30 * * * * echo "crontab test no 1" > /mylinux/crontest
30 */2 1-10 3,4,5 * echo "crontab test no 2" >> /mylinux/crontest
crontab: installing new crontab
#
# crontab -l           // 등록된 crontab 확인
30 * * * * echo "crontab test no 1" > /mylinux/crontest
30 */2 1-10 3,4,5 * echo "crontab test no 2" >> /mylinux/crontest
#

# vi /var/spool/cron/root       // 등록한 crontabl 이 저장된 파일. 개별적으로 crontab을 지울 땐 여기서 지우면 된다.
30 * * * * echo "crontab test no 1" > /mylinux/crontest
30 */2 1-10 3,4,5 * echo "crontab test no 2" >> /mylinux/crontest
# crontab -r           // 등록된 crontab 을 모두 삭제
# crontab -l
no crontab for root

 

/etc/cron.deny (솔라리스 : /etc/cron.d/cron.deny)

root 가 /etc/cron.allow 파일을 만들어 특정 사용자에게 crontab 명령을 실행할 수 있도록 제한할 수 있다.

cron.deny 파일이 비어 있고, cron.allow 파일이 없다면 모든 사용자에게 crontab 을 허용하게 된다.

# vi /etc/crond.deny

ikssun

wq!

# su ikssun
$ crontab -e
You (ikssun) are not allowed to use this program (crontab)
See crontab(1) for more information

 

만약 crontab 을 아무 인수(-e, -l, -r) 없이 실행했을 경우 ctrl+c 를 눌러 종료해야 한다.

ctrl+d 를 눌러 종료했을 경우 기존의 crontab 파일이 빈 파일로 overwrite 되기 때문이다.

[출처] [Linux] at 와 crond|작성자 토토로

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

sysctl 명령어  (2) 2012.02.15
insmod, rmmod, lsmod, modprobe  (3) 2012.02.14
test 명령어  (3) 2012.02.14
grep 명령어 와 활용  (7) 2012.02.13
ln 명령어 심볼릭,하드  (4) 2012.02.13
Posted by GUCCI
, |

grep 명령어는 지정한 파일 내에서 특정 문자열을 검색할 때 사용하는 명령어 입니다.

 

명령어 위치 : /bin/grep

 

사용형식 : grep [옵션] 검색할문자열

 

예1) 지정된 파일 내에서 특정문자를 찾기

httpd.conf 파일안에서 root 라는 단어를 찾아보겠습니다.

#grep root httpd.conf

  #httpd as root initially and it will switch.

위 와같은 결과가 출력되고 출력된 행안에 root 라는 단어가 포함되어 있는것을 확인 할 수 있습니다.

 

 

 

예2) 지정된 파일 내에서 특정문자가 포함된 행의 개수 출력하기

 특정문자가 포함된 행을 보여주는 것이 아니라 특정문자를 포함하고있는 행의 개수를 알고 싶다면

 -c 옵션을 사용하면 됩니다.

 httpd.conf 파일 내에 root 라는 단어를 포함하고 있는 행의 개수를 출력해 보겠습니다.

#grep -c root httpd.conf

 1

위의 결과를 보듯이 httpd.conf 파일 내에는 root를 포함하고 있는 행의 개수가 1개 임을 알 수 있습니다.

 

 

 

예3) 지정된 파일 안에서 특정문자가 포함되지 않은 행만 검색하기

지정된 파일안에서 특정문자가 포함되지 않은 행을 검색하려면 -v 옵션을 사용하면 됩니다.

test1.txt 에서 windows 라는 문자를 포함하지 않는 행을 검색해 보도록 하겠습니다.

우선 tset1.txt 파일 안의 내용을 살펴보도록 하겠습니다

#cat test1.txt

Centos linux
user name
system123

microsoft windows

 

test1.txt 파일에서 windows라는 문자가 존재하지 않는 행만 검색하고 싶다면 다음과 같이 하면 됩니다.

#grep -v windows test1.txt

Centos linux
user name
system123

위의 결과처럼 windows라는 문자가 존재하는 행을 제외한 모든행이 출력 되었습니다.

 

 

 

예4) 지정된 파일 내에서 대소문자 구분없이 특정문자 검색하기

리눅스시스템에서는 기본적으로 대소문자를 구분합니다. 하지만 대소문자의 구분 없이 검색하고 싶다면 -i 옵션을 사용하면 됩니다.

-i 옵션을 설명하기 위해서 test2.txt 라는 파일을 사용하도록 하겠습니다

우선 test2.txt 파일안의 내용을 살펴보도록 하겠습니다.

#cat test2.txt

I am system engineer
Linux is open source software

test2.txt 파일은 위와 같은 두행을 가지고 있습니다.

-i 옵션을 사용하지 않고 linux라는 단어를 검색해 보도록 하겠습니다.

#grep linux test2.txt

 

위와같이 아무런 결과가 나오지 않습니다.

이번엔 -i 옵션을 사용해보도록 하겠습니다.

#grep -i linux test2.txt

Linux is open source software

linux라는 문자를 검색했지만 -i 옵션을 사용하였기 때문에 Linux 가 포함된

Linux is open source software 라는 행이 출력 됩니다.



개인적으로 보통 grep 명령어를 아래와 같이 특정 문서를 출력하면서 연결 명령어로 주고 사용했었다.

 

cat [파일명] | grep [찾고자하는 문자열]

 

이러면 통상 아래와 같이 출력된다.

 

[찾고하는 문자열을 포함하는 라인의 문자열]

...

 

그런데 다른 사람들의 사용법을 보니 내가 사용하는 사용법보다 더 유용한 것같아 여기 정리해본다.

 

특정 폴더내에서

grep -i [찾고자하는 문자열] [디렉토리경로/*]

 

여기서 -i 옵션은 대소문자 구분을 무시하는 명령어이다.

 

디렉토리 경로는 지정하지 않으면 해당 경로내의 파일들만 검색한다.

 

[검색된 파일명]:[찾고하는 문자열을 포함하는 라인의 문자열]

...

 

아래와 같이 사용해도 유사한 검색 결과를 얻을 수 있다.

 

find . -type f -print | xargs grep [찾고자하는 문자열]

 

위와 같이 하면 해당 경로와 하위 경로내의 파일들을 검색하여 해당 문자열이 있는 파일을 보여준다.

 

아마 find 명령어때문에 해당 경로내의 모든 하위 경로의 파일을 검색해주는 것 같습니다.

 

[검색된 파일명]:[찾고하는 문자열을 포함하는 라인의 문자열]

...


 

[출처] grep 명령어 활용|작성자 영화5사랑

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

sysctl 명령어  (2) 2012.02.15
insmod, rmmod, lsmod, modprobe  (3) 2012.02.14
test 명령어  (3) 2012.02.14
at 와 crond 명령어  (2) 2012.02.14
ln 명령어 심볼릭,하드  (4) 2012.02.13
Posted by GUCCI
, |
ln 명령은 파일을 링크할 때 사용하는 명령입니다.

리눅스 시스템 상에는 심볼릭링크와 하드링크 두가지의 링크가 있습니다.

 

심볼릭링크는 원본파일을 가리키도록 링크만 시켜둔 것으로 윈도우의 바로가기와 같다고 보시면 됩니다. 심볼릭링크는 원본파일이 삭제되면 링크파일은 작동하지 않게 됩니다.

 

하드링크는 원본파일과 이름은 다르지만 동일한 파일입니다. 하드링크에서는 원본파일이나 링크파일 둘중의 하나가 삭제되더라도 나머지 하나는 그대로 남아 정상 동작 합니다. 또한 하드링크는 원본파일의 내용이 변경될 경우에 링크파일의 내용도 자동으로 변경됩니다.

 

명령어 위비: /bin/ln

사용형식 : ln [옵션] 원본파일 대상파일

             ln [옵션] 원본파일 대상디렉토리

옵션

-b, --backup : 대상파일이 이미 존재할 경우 백업파일을 만든 후에 링크파일을 생성

-d, -F, --directory : 디렉토리에 대한 하드링크파일 생성을 가능하게함

-f : 대상파일이 존재할 경우 대상파일을 지우고 링크파일을 생성

-i : 대상파일이 존재할 경우 대상파일을 지울 것인가 확인하게함

-s : 심볼릭링크파일을 생성

-S : 만약에 대상이 이미 있어서 백업을 해야 할 경우에 그 백업파일에서 사용 할 파일이름의

      접미사(suffix)를 지정할 수 있음

-t, --target-directory=DIRECTORY : 링크파일을 생성할 디렉토리를 지정

 

예1) ln 명령어를 사용하여 하드링크 생성하기

우선 hard_source 파일을 hard_link 파일로 하드링크 시킨 후 두 파일의 내용을 확인해 보도록 하겠습니다.

 

#ln hard_source hard_link

#

#ls -l

합계 12
-rw-r--r-- 2 root root 15  7월 19 21:54 hard_link

-rw-r--r-- 2 root root 15  7월 19 21:54 hard_source

 

#cat hard_source

linux

network

windows

 

#cat hard_link

linux

network

windows

 

위에서 보시는 것과 같이 두파일의 내용이 동일하다는 것을 알 수 있습니다.

이번에는 원본파일 내용의 첫행을 지운뒤 링크파일과 비교해 보도록 하겠습니다.

 

#cat hard_source

network

windows

 

#cat hard_link

network

windows

 

위와 같이 원본파일만 수정했는데도 링크된 파일의 내용도 같이 수정됨을 확인 할 수 있습니다.

 

 

예2)심볼릭링크 사용하기

심볼릭링크를 사용하기 위해서는 -s 옵션을 사용해야 합니다.

sym_source 파일을 만든뒤 sym_link 파일로 심볼릭링크 시키도록 하겠습니다.

 

#ln -s sym_source sym_link

#ls -l

lrwxrwxrwx 1 root root 14  7월 19 22:09 sym_link -> sym_source

-rw-r--r-- 1 root root 22  7월 19 22:09 sym_source

 

여기서 확인하고 넘어가야 할 부분은 심볼릭링크된 파일의 퍼미션이 하드링크일때와는 다르게

lrwxrwxrwx 이라는 것과 -> 로 원본을 가리켜 심볼릭링크된 파일이라는 것을 확인 할 수있게 해줍니다.

[출처] ln 명령어|작성자 김동훈

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

sysctl 명령어  (2) 2012.02.15
insmod, rmmod, lsmod, modprobe  (3) 2012.02.14
test 명령어  (3) 2012.02.14
at 와 crond 명령어  (2) 2012.02.14
grep 명령어 와 활용  (7) 2012.02.13
Posted by GUCCI
, |

Linux Hotplug

리눅스 / 2012. 2. 10. 10:28

LinuxHotplug 를 사용하기 위한 준비 


  • 리눅스 커널 2.4 이상 

  • 커널 설정에서 General setup -> Support for hot-pluggable devices 옵션이 켜져있어야 한다.
  • hotplug 스크립트 

  • [http]Linux Hotplugging에서 받아서 설치한다.
  • hotplug가 가능한 하드웨어 

  • usb, ieee1394, pci, pcmcia(2.6.13이상) hotplug장치 등등. 

LinuxHotplug 동작방식 


  • hotplug를 지원하는 장치가 연결된다.
  • 연결되면 장치의 클래스 드라이버에서 /proc/sys/kernel/hotplug에 등록된 프로그램을 호출한다. (주로 /sbin/hotplug ) 

  • hotplug의 인자로 장치클래스의 이름이 붙는다. (ex: usb, ieee1394 ...)
  • /sbin/hotplug에서는 /etc/hotplug.d/장치클래스/*.hotplug 와 /etc/hotplug.d/default/*.hotplug 스크립트를 수행한다. 

  • 각각의 스크립트를 hotplug agent라고 부른다.
  • /etc/hotplug.d/default/default.hotplug는 linux-hotplug.sf.net에서 제공하는 것으로 해당 장치가 필요로 하는 커널 모듈을 적재하는 역할을 한다.
  • /etc/hotplug.d/default/udev.hotplug는 리눅스 2.6에서 동작하는 것으로 기존의 devfs를 교체하고 유연한 장치이름을 제공한다.
  • /etc/hotplug.d/default/hal.hotplug는 HAL Daemon에 해당장치가 연결되었다는 것을 dbus를 통해 알려준다.
  • 각 스크립트에서 환경변수를 참조해서 장치에 대한 작업을 수행한다.
  • 환경변수는 다음과 같다.

Linux 2.4 


  • USB
    ACTION=%s [add or remove] 
    DEVPATH=%s
    PRODUCT=%x/%x/%x 
    INTERFACE=%d/%d/%d [ for interface 0, if TYPE=0/*/* ] 
    TYPE=%d/%d/%d 
    


  • IEEE1394
    ACTION=%s [add or remove] 
    VENDOR_ID=%x [24 bit vendor id]
    GUID=%x [64 bit globally unique id]
    SPEFICIER_ID=%x [24 bit id of owner of specification]
    VERSION=%d.%d [version of specification]
    


  • PCI
    ACTION=%s [add or remove] 
    PCI_CLASS=%06X 
    PCI_ID=%04X:%04X 
    PCI_SLOT_NAME=%s 
    PCI_SUBSYS_ID=%04X:%04X
    


Linux 2.6 


  • 리눅스 커널 2.6 에서는 장치의 클래스드라이버가 아닌 kobject수준에서 hotplug스크립트를 호출한다.
  • 더불어 각 장치에 대해 대응되는 sysfs의 경로가 함께 환경변수로 넘어온다.
  • SCSI, SCSI_HOST, SCSI_DEVICE, BLOCK, INPUT, NET 

ACTION=%s [add or remove]
DEVPATH=/%s/%s...

[edit]

LinuxHotplug의 실제 활용예 


gphoto2 

  • gphoto2는 여러 Unix시스템에서 쓸 수 있는 디지털카메라 관리 프로그램이다.
  • gphoto2를 설치하면 /etc/hotplug/usb/usbcam 스크립트가 등록된다.
  • usbcam스크립트는 gphoto2에서 지원하는 카메라가 연결되었을 때 현재 console을 쓰는 사용자에게 디지털카메라에 접근할 수 있는 허가권을 준다.

'리눅스' 카테고리의 다른 글

start-stop-daemon  (1) 2012.02.15
portmap 데몬  (2) 2012.02.15
리눅스 부팅 과정  (2) 2012.02.10
/dev/null 2>&1 의 의미  (1) 2012.02.10
Vi/Vim 단축키 모음 키보드그림  (4) 2012.02.09
Posted by GUCCI
, |

리눅스 부팅 과정

리눅스 / 2012. 2. 10. 09:10

■ 시스템 부팅 과정

 

▶ 개 요

 - Bootstrapping 이란 '컴퓨터를 시동하기'를 뜻한다. 컴퓨터가 처음 시동될 때에는 아직 OS가 작동가능한 상태가 아니므로 컴퓨터는 스스로 OS를 메모리에 로드하고 여러 초기화 작업을 수행해야 한다. 이 과정을 bootstrapping, 줄여서 booting이라고 한다.
Booting 중에 있는 시스템은 취약하다. 설정의 오류, 장치의 부재, 잘못된 파일 시스템등에 의해 시스템은 잘 booting 되지 않을 수 있다. 시스템 관리자는 처음 시스템을 설치하게 되면, 시스템의 환경에 맡게 적절한 시스템 설정을 해주어야 한다.

시스템은 자동 또는 수동으로 booting 할 수 있다. 자동 모드에서는 외부로부터의 조작없이 시스템이 스스로 모든 booting 과정을 끝낸다. 수동 모드에서는 시스템이 싱글 유저 모드 단계까지만 booting 과정을 진행하고, 이 후는 관리자가 직접 부팅 과정을 수행한다.

⇒Boot PROM
각 W/S는 Kernel을 load하기 전에 시스템 운용을 제어하는 monitor program이내장된 PROM Chip을 가지고 있다. 또한 PROM은 시스템에 접속된 장치들을 확인하고 access할 수 있는 내장 device driver를 가지고 있다. 

⇒Boot Blocks
시스템의 첫 번째 boot 프로그램은 bootstrap 과정에서 사용되는데, 이것은 두번째 boot program을 load 하는데 사용된다.
두 번째 boot program은 "installboot" 명령어에 의해 root File system에 install된다. 

⇒Run Level
Run Level은 시스템 서비스들을 설정하는 System Software Configuration이다.

⇒Run Control Scripts
File system Check 및 mount와 여러 Daemon Process를 시작하고 중지시키는 rc script들을 제공한다.

⇒Kernel Modules
Small static core와 dynamically loadable module로 구성된다.

▶ 시스템 Booting 절차

   1) 부팅의 과정은 여섯단계로 나누어진다.

  • 커널의 로딩과 초기화
  • 장치 인식과 설정
  • 자발적인 시스템 프로세스의 생성
  • 관리자 제어(싱글 유저 모드에서만)
  • 시스템 startup scripts 실행
  • 다중 사용자 모드 진입

   2) 상세한 절차 표현

     ① Boot PROM(1. 시스템 설정 banner의 표시(Model 및 Keyboard type, HostID, 
         PROM revision Number, Ethernet Address) 
         →2. 자기지단 → 3. PROM에 설정된 Boot 장치에서 boot program을 찾는다. 
         →4. Boot Program의 load(/platform/sun4m/ufsboot)
     ② Boot Program(5. ufsboot 프로그램을 load한 후 boot PROM은 kernel을 load한다.)
     ③ Kernel 초기화 단계(6. Kernel 자기자신을 초기화한 후 ufsboot program을 이용하여          moduleemf을 load 한다.)
     ④ /sbin/init(7. Kernel은 사용자 process 한 개를 생성하고 /sbin/init program을실행

        시킨   다. 
         →8. /sbin/init program은 /etc/inittab 파일에 기록된 내용을 실행한다.)

 

OBP Basic Element's Relationship to NVRAM and CPU

 

 

▶ System Run Levels

Run Levels

기 능

0

PROM Monitor Level

1

시스템 관리상태(몇 개의 파일시스템이 mount되어지고 login 환경을 지원하지 않는 Single-user)

2

자원을 공유할 수 없는 Multiuser 상태

3

자원을 공유할 수 있는 Multiuser 상태

4

현재는 사용되지 않음

5

Halt와 대화형 Boot(boot -a)

6

Reboot to default run level 3

S,s

시스템 관리상태(몇 개의 파일시스템이 mount되어지고 login 환경을 지원하지 않는 Single-User 상태

※ Run level은 who -r로 확인

▶ Run Control Scripts

 - 모든 Run level들은 시스템 상태에 대하여 기능별로 start 또는 stop할 수 있는특정 shell script를 가지고 있다. 이러한 shell script들은 각 run level 관련 디렉토리 안에 있는 실행 가능한 형태의 명령어 파일을 수행시킨다.
이 명령어 파일들은 /etc/init.d 디렉토리에 link되어 사용된다

명령어

run control script

run level directory

/sbin/init0

/sbin/rc0

/etc/rc0.d

/sbin/initS

/sbin/rcS

/etc/rcS.d

/sbin/init1

/sbin/rc1

/etc/rc1.d

/sbin/init2

/sbin/rc2

/etc/rc2.d

/sbin/init3

/sbin/rc3

/etc/rc3.d

/sbin/init5

/sbin/rc5

 

/sbin/init6

/sbin/rc6

 

 

▶ Run Control Script의 요약

Script Name

주요 기능

/sbin/rcS

- diskless/dataless client 지원을 위한 network setup

- root와 user File system의 check 및 mount

- device 생성 및 Link

/sbin/rc0

- PROM level로 System Down

- 시스템의 서비스와 모든 프로세스의 중지

- 모든 File system의 mount

/sbin/rc1

- Run level 1(Single user Mode)로 system down

/sbin/rc2

- run level 2의 Multiuser 상태 
- 모든 File system의 mount 
- NFS File system Sharing을 제외한 모든 network service의 수행

/sbin/rc3

- 모든 자원의 공유가 이루어지는 run level 3의 Multiuser 상태
- syslogd daemon start
- NFS, RFS server Process Start

/sbin/rc5

- 시스템 Halt와 대화형 Booting의 실행
- 모든 시스템 프로세스와 서비스의 중지
- File System의 umount

/sbin/rc6

- 시스템의 Halt와 Reboot 
- /etc/rc0.d/K* stop 수행 
- 시스템 프로세스와 서비스의 중지
- File system의 umount 
- Booting하여 /etc/inittab파일의 initdefault 수행

 

 

▶ System Run Level의 변경

1) boot 명령어

-PROM monitor level의 boot 명령어는 다른 run level로 변경 실행 시킬 수 있다.

 

    ok boot [device_name] [option]

 

option

설 명

-a

 interactive boot

-r

 reconfiguration boot

-s

 Singel mode run level로 boot

-v

 상세한 boot 메시지를 print

-w

 File system을 쓰기 가능하게 boot

 

2) who 명령어

- 현재 시스템의 상태를 알 수 있다.

option

설 명

-a

 all

-b

 boot time

-d

 dead process

-l

 login process

-p

 process other than getty or user

-r

 run level

-T

 status of tty(++writable, -not writable, ?hung)

-u

 useful information

 

3) /sbin/init 명령어

- init 명령어는 system run level을 변경하기 위하여 shutdown 명령어 대신 사용할 수 있다.

그러나, init 명령어는 경고 메시지를 보내지는 않는다.

option

설 명

0

 PROM Monitor level

1

 Single-User level

2

 Multi-User level(no resource shared)

3

 Multi-User level(resource shared)

5

 Interactive Boot

6

 Halt and reboot Default run level3

S,s

 Single-User level

Q,q

 init 프로그램이 /etc/inittab 파일을 re-read

 

4) /sbin/init 프로세스

- 시스템이 booting할 때 /etc/inittab File의 "initdefault"에 의하여 첫 번째 run level이 설정된다.

/sbin/init 프로세스의 중요한 역활

① Scheduler 와 Page Daemon 등과 같은 모든 프로세스의 부모 프로세스 역할 
② 시스템을 default run level로 설정하기 위한 프로세스들을 생성
③ /etc/inittab 파일을 참조하여 run level 간의 변화를 조절
④ Service Access Control(SAF)를 구동시키며 Port Service를 관리한다.

 

5) /sbin/rc* Script

- 시스템 환경의 초기화를 수행

  • File system Check 및 Mounting
  • Network 환경 구축
  • Device Configuration 및 Link
  • Start Daemon Process

 

6) /etc/init.d Directory

- rc script는 /sbin 안에 존재하며 /etc 디렉토리 안의 file과 symbolic link 되어 있다. 
/etc/init.d 안에는 run control file들이 존재하는데 process를 start 시키거나, 또는 kill 시키는 script 들이 존재한다. 
실질적인 file은 이 디렉토리 안에 존재하지만 /etc/rc* 디렉토리와 hard link 되어있다.
만약, 어떤 script를 첨가하고 싶으면 /etc/init.d 디렉토리에 해당 script를 첨가하면 된다.

 

7) /etc/inittab File

- run level과 어떤 action을 취하는지의 정보를 기록하고 init process에 의해 생성된다.
init 프로세스는 run level이 변화할 때의 signal을 받으면 /etc/inittab file에 등록된 프로세스에 따라 시스템 환경을 처리한다.

 

8) Adding Run Control Files

- run control file을 추가하고자 할 경우의 procedure 이다.
① /etc/init.d/README file을 참고한다.
② 해당 file을 /etc/rc*.d의 어느 디렉토리에 link 할 것인지 결정한다. 
그리고 그 script가 start 인지 kill인지 결정한다.
③ /etc/init.d에 file을 만든 후 /etc/rc*.d에 링크 한다.
ex) # more /etc/init.d/sample 
echo 'Hello Soalris'
# cd /etc/rc3.d
# in /etc/in


'리눅스' 카테고리의 다른 글

portmap 데몬  (2) 2012.02.15
Linux Hotplug  (6) 2012.02.10
/dev/null 2>&1 의 의미  (1) 2012.02.10
Vi/Vim 단축키 모음 키보드그림  (4) 2012.02.09
RPM( Redhat Package Manager)  (1) 2012.02.09
Posted by GUCCI
, |

최근에 달린 댓글

글 보관함