학습자료/리눅스 2015. 3. 24. 11:43

크론탭이 작동하지 않는 세가지 이유.


1. 잘못된 크론탭 표기법

2. 권한 문제

3. 환경변수


이중 대부분의 문제는 3. 환경변수 문제일듯 하다


환경변수 

SHELL

등록된 프로그램을 실행시킬 쉘프로그램을 지정한다. 정의 하지 않을 경우 /bin/sh이 쉘 프로그램으로 지정된다.

PATH

cron은 별도로 쉘을 띄우귀 때문에, 쉘에서 프로그램을 찾기 위한 PATH도 지정해줄 필요가 있다. 왜냐하면 로그인을 해서 shell을 실행시키지 않으므로, 로그인과정에서의 PATH변수를 사용할 수 없기 때문이다.

MAILTO

cron이 수행한 작업의 결과를 mail로 보낼 수 있다. 위의 경우 root유저에게 메일을 전송한다. 만약 MAILTO를 설정하지 않으면 crontab의 실행유저에게 메일이 전송된다.

HOME

cront의 home 디렉토리(:12)경로를 설정한다. 기본적으로는 crontab의 실행유저의 홈디렉토리로 /etc/passwd에 설정된 경로를 따른다. 


환경변수 등록방법 예

SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ * * * * * env > /tmp/env.output


해결법

예를 들어 파이썬모듈을 동작시키는데 동작하지 않았다.


import sys

print sys.path


구동시키려는 스크립트에서 위의 구문으로 사용자의 모듈경로를 모두 읽어서,

crontab -e 를 실행하여


PATH=  <-- 이곳에 모두 기입하자. 그러니 파이썬 모듈이 크론탭에서 제대로 구동하였다.

HOME= <-- 이곳을 작업path로 설정하지 않을 시, 매우 삽질을 할수 있음. 파일관리를 한다던지..하는


ex)

PATH=/home/min/workspace/test:/usr/lib/python2.7:/usr/lib/python2.7/plat-x86_64-linux-gnu:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages;/usr/lib/python2.7/dist-packages;/usr/lib/python2.7/dist-packages/PILcompat;/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/python2.7/dist-packages/ubuntu-sso-client

HOME=/home/min/workspace/test

* * * * * /usr/bin/python /home/min/workpace/test/tt.py



참고.

크론탭이 작동하지 않는 세가지 이유.

http://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work

crontab은 유저의 환경 변수를 가져오지 않는다

http://ohgyun.com/227  

crontab이 작동 안하는 이유는 뭘까

https://kldp.org/node/59859  

파이썬 스크립트 crontab으로 오픈시 모듈 경로 미설정 문제 해결하기.

http://makekr.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-crontab%EC%9C%BC%EB%A1%9C-%EC%98%A4%ED%94%88%EC%8B%9C-%EB%AA%A8%EB%93%88-%EA%B2%BD%EB%A1%9C-%EB%AF%B8%EC%84%A4%EC%A0%95-%EB%AC%B8%EC%A0%9C-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0






posted by cozyboy
:
학습자료/리눅스 2014. 11. 18. 16:42

apt-get install terminator

 


ctrl + shift + e 세로분할
ctrl + shift + o 가로분할
ctrl + shift + w 닫기
ctrl + shift + q 종료


posted by cozyboy
:
학습자료/리눅스 2014. 6. 18. 14:31

리눅스 여러 파일 내 문자열 치환

1. 현재 경로로부터 하위 폴더까지의 파일들 내에 "lion"이란 문자열을 "tiger"로 변경하는 경우

find . -exec perl -pi -e 's/lion/tiger/g' {} \;


2. 현재 경로로부터 하위 폴더까지의 "cpp"파일들 내에 "lion"이란 문자열을 "tiger"로 변경하는 경우

find . -name "*.cpp" -exec perl -pi -e 's/lion/tiger/g' {} \;



3. 현재 경로로부터 하위 폴더까지의 파일들 내에 "//#define"이란 문자열을 "#define"(즉, "//"를 제거)으로 변경하는 경우 

find . -exec perl -pi -e 's/\/\/#define/#define/g' {} \;

비슷하게 큰따옴표(")와 같은 기호는 \" 와 같이 써서 검색어로 쓸 수 있다. 


[펌] http://soharang.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%97%AC%EB%9F%AC-%ED%8C%8C%EC%9D%BC-%EB%82%B4-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B9%98%ED%99%98



'학습자료 > 리눅스' 카테고리의 다른 글

[linux] crontab 에러  (0) 2015.03.24
다중 터미널  (0) 2014.11.18
cifs mount/unmount  (0) 2014.05.30
[linux] Ubuntu nginx + php + php5-fpm + sqlite 설정 (+ pdo sqlite)  (0) 2014.04.10
ubuntu 인터페이스 ip없이 사용하기.  (0) 2013.11.06
posted by cozyboy
:
학습자료/리눅스 2014. 5. 30. 13:55


  • mount 

mount -t cifs -o user='사용자이름',password='패스워드' //서버주소/공유폴더 마운트경로

사용자 이름 : testuser
패스워드 : 1234
서버주소 : 192.168.0.2
공유폴더 : cifs-test
마운트 경로 : /mount-test

mount -t cifs -o user='testuser',password='1234' //192.168.0.2/cifs-test /mount-test


  • lazy unmount 

sudo umount -a -t cifs -l


posted by cozyboy
:
학습자료/리눅스 2014. 4. 10. 18:10
  • nginx 설정
  1. vim /etc/nginx/site-available/myweb

server {

        access_log /var/log/nginx/myweb.access.log;

        error_log  /var/log/nginx/myweb.error.log;

        listen 8800;

        root /var/www/myweb/;

        index info.php index.php index.html index.htm;


        ## PHP codeigniter(for rewrite)

        if (!-e $request_filename) {

                rewrite ^(.*)$ /index.php last;

        }


        location ~ \.php$ {

# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini


# With php5-cgi alone:

#               fastcgi_pass 127.0.0.1:8598;

# With php5-fpm:

                fastcgi_pass unix:/var/run/php5-fpm.sock;

                fastcgi_index index.php;

#       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

                include fastcgi_params;

        }

}

위 설정에서

listen : 접속 포트

root : 웹 페이지 도큐먼트 루트

fastcgi_pass : php-fpm은 리눅스 소켓을 사용한다.

 



2. ln -s /etc/nginx/site-enabled/




  • 필요 패키지 설치 

sudo apt-get install php5 l php5-fpm php5-sqlite



  • nginx 재구동(설정을 바꿀 시엔 nginx를 재구동 해야한다)

sudo service nginx 




  • 테스트 운용 (php 설정 정보 페이지)

vim /var/www/info.php

<?php

phpinfo();

?>



  • 웹페이지 접속
접속 : http://serverip:port

만약 제데로 세팅이 되었다면 php 설정정보 페이지가 뜰것이다.




php5에선 pdo가 기본으로 설정이 되어있다. 하지만 pdo가 없는 경우가 생겼다.

그때는 pecl를 통해서 php extention을 해야 한다. 


과정은 다음과 같다.


sudo apt-get install php-pear

sudo pecl install pdo

sudo pecl install pdo_sqlite






[참고]

php, fpm 설치 연동 : http://blog.beany.co.kr/archives/2665


php codeigniter 란 http://gyuha.tistory.com/258


nginx codeigniter(rewrite) 설정 http://codeigniter-kr.org/qna/view/10076/page/2/q/


php5 에서 pdo가 기본이라는 문서 : http://www.php.net/manual/en/ref.pdo-sqlite.php


pecl 이란? : http://www.php.net/manual/kr/install.pecl.intro.php


우분투 sqlite pdo 설치 : http://gregk.me/2011/installing-pdo-sqlite3-support-on-ubuntu/







posted by cozyboy
:
학습자료/리눅스 2013. 11. 6. 11:48

(ubuntu interface no IP address on the network)

 

vlan 구성 중, eth0에 이전에 사용하던 ip가 사라지지 않았다.

그때 interfaces 파일에 아래와 같이 기입하면 된다. 

 

 

$vim /etc/network/interfaces

auto eth0
iface eth0 inet manual
       up ifconfig $IFACE 0.0.0.0 up
       up ip link set $IFACE promisc on
       down ip link set $IFACE promisc off
       down ifconfig $IFACE down

 

$sudo ifdown eth0.20

$sudo ifdown eth0

 

$service networking restart

 

 

 

이전에 사용하는 interface를 down시켜 놓고 재시작하여야 적용된다.

 

[참고] http://www.cyberciti.biz/faq/setting-up-an-network-interfaces-file/

posted by cozyboy
:
학습자료/리눅스 2013. 11. 6. 10:39

만약 daum 의 ubuntu 저장소를 추가하고 싶다면

echo deb http://ftp.daum.net/ubuntu/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/daum.list

 

명령을 내려라.

 

현재 내 우분투 버전에서는 아래와 같이 입력된다.

 

deb http://ftp.daum.net/ubuntu/ raring main

 

내 우분투의 버전이 raring 이기 때문이다. lsb_release -sc 는 내 리눅스의 패키지 버전을 나타내준다.

 

위 방법은 저장소를 추가하는 방법이다. apt-get install 로 설치시 daum 사이트로 연결될지는 장담못한다.

 

 

 

저장소를 아예 바꾸고 싶다면 vi 로 /etc/apt/sources.list 를 열고

 

:%s/kr.archive.ubuntu.com/ftp.daum.net/g 명령을 통해 저장소위치를 치환해버려라.

 

혹은 sed -i 's/kr.archive.ubuntu.com/ftp.daum.net/g' /etc/apt/sources.list


[펌] oncellboy.tistory.com


posted by cozyboy
:
학습자료/리눅스 2013. 8. 22. 11:00

펌 : http://blog.outsider.ne.kr/346

apt-get(Advanced Packaging Tool)은 우분투(Ubuntu)를 포함안 데비안(Debian)계열의 리눅스에서 쓰이는 팩키지 관리 명령어 도구입니다. 우분투에는 GUI로 되어 있는시냅틱 꾸러미 관리자도 있기는 하지만 이런 저런 개발관련 패키지를 설치할 때는 커맨드기반인 apt-get이 더 편하기도 합니다. sudo는 superuser권한으로 실행하기 위함입니다.



패키지 인덱스 인덱스 정보를 업데이트 : apt-get은 인덱스를 가지고 있는데 이 인덱스는 /etc/apt/sources.list에 있습니다. 이곳에 저장된 저장소에서 사용할 패키지의 정보를 얻습니다.

sudo apt-get update

설치된 패키지 업그래이드 : 설치되어 있는 패키지를 모두 새버전으로 업그래이드 합니다.
sudo apt-get upgrade
의존성검사하며 설치하기
sudo apt-get dist-upgrade

패키지 설치
sudo apt-get install 패키지이름

패키지 재설치
apt-get --reinstall install 패키지이름

패키지 삭제 : 설정파일은 지우지 않음
sudo apt-get remove 패키지이름
설정파일까지 모두 지움
sudo apt-get --purge remove 패키지이름

패키지 소스코드 다운로드
sudo apt-get source 패키지이름

위에서 받은 소스코드를 의존성있게 빌드
sudo apt-get build-dep 패키지이름

패키지 검색
sudo apt-cache  search 패키지이름

패키지 정보 보기
sudo apt-cache show 패키지이름

패키지 버전 보기

sudo apt-cache policy 패키지이름

패키지 특정버전 다운

sudo apt-get install firefox=7.*


apt를 이용해서 설치된 deb패키지는 /var/cache/apt/archive/ 에 설치가 됩니다.

 

posted by cozyboy
:
학습자료/리눅스 2013. 7. 8. 11:08

-OS 버전 정보

cat /etc/issue


-리눅스 정보

uname -a


-커널 버전

cat /proc/version



http://blog.naver.com/jwc44?Redirect=Log&logNo=140181833891

posted by cozyboy
:
학습자료/리눅스 2013. 6. 13. 17:56

설치과정을 진행 중 디스크 방식 설정 후 아래와 같은 에러를 만났다

Disk sda contains BIOS RAID metadata, but is not part of any recognized BIOS RAID sets. Ignoring disk sda

그냥 진행해보면 파티션 설정 부분에서 에러가 나면서 설치가 종료된다.

 

방법1.


콘솔로 가서 아래 명령을 입력하거나

# dmraid -r -E /dev/sdc

 

 

방법2.

부팅중 선택 화면에서 <TAB> 키를 누르면 커널 옵션을 선택할 수 있다.

가장 뒷 부분에 nodmraid 를 입력해준다.

그리고 <ENTER>를 누르면 설치가 진행된다.

 

 

 

[출처] http://gentooboy.tistory.com/174

posted by cozyboy
:
학습자료/리눅스 2013. 4. 22. 11:18

 

  •  XFS
    - 대용량 파일 시스템 : 64비트 파일 시스템으로 900만 TB까지 지원
    - 저널링(신속한 복구) : 파일 수에 관계없이 예상치 못한 상황으로부터 신속한 복구 및 재시작
    - 신속한 트랜잭션 : 읽기/쓰기
    - 높은 확장성
  • XFS 파일시스템 장점
    1) 64Bit Filesystem 이다
    2) 이론상 64Bit OS에서 900만 TB까지 지원한다. 32Bit OS에선 16TB까지 지원
    3) 사용가능한 inode 수가 많다. 같은 용량에서 EXT3에 비해 8배 많은 inode 생성 가능
    4) xfs_growfs 유틸을 통해 마운트된 상태에서도 파일시스템 확장이 가능하다.
    5) 매우빠른 파일시스템생성(포맷)속도.
    6) 파일시스템 체크속도가 사용중인 inode만을 대상으로 하기 때문에 빠르다.
    EXT3의 경우 사용하지 않는 부분까지 체크한다.
    7) 동일조건의 파일 삭제시간 또한 EXT3에 비해 2.5배 가량 빠르다.
    8) 안정적이다. 많은 상용 사이트에서 검증 되었다.

 

  • XFS 파일시스템 단점
    1) 작은 사이즈의 파일에서 느리다. 자잘한 파일은 JFS 파일시스템이 더 좋은성능을 발휘.
    2) 파일시스템 확장은 가능하나 축소는 안된다.
    어짜피 데이터 무결성을 위해 백업을 해야하므로 다른 파일시스템에서도 축소는 무의미하다.
    3) 주류 파일시스템이 아니다보니 이식성이 좀 떨어진다.
    4) 파일시스템에 문제가 생겼을경우 커널메시지가 제대로 안올수있다.
    6) 디버그 옵션 없음. 따라서 삭제된 파일은 복구가 불가능.
    7) 별도의 데몬이 관리를 한다.

 

  • xfs 사용하기

mkfs.xfs 설치           - yum install xfs*     

xfs 포맷                  - mkfs.xfs /dev/sda  (원하는 디스크를 사용한다.)

# 강제 옵션 -f force
mkfs.xfs -f /dev/sda

파티션 나누기         - fdisk /dev/sda

마운트                    - mount -t xfs /dev/sda /home2

  

mount 중 파일시스템 확장

x                xfs_growfs /dev/nbd0

 


[설명]

http://faq.hostway.co.kr/index.php?mid=Linux_ETC&page=4&document_srl=1578

 

[사용하기]

http://istyles.tistory.com/entry/Centos-%EA%B8%B0%EB%B0%98-XFS%EC%82%AC%EC%9A%A9

posted by cozyboy
:
학습자료/리눅스 2013. 4. 15. 19:59
  • dd란?

dd 커맨드의 설명은 다음과 같다.

 

dd copies a file (from standard input to standard output, by default) with a changeable I/O block size, while optionally performing conversions on it

dd는 가변적인 I/O block size의(디폴트로는 표준입력부터 표준출력까지) 파일의 변환을 수행하는 동안 카피한다.

 

 

  • 디스크 속도 측정하기 (or  Disk IO 부하주기)

예)

dd if=/dev/zero of=/disk1/t1 bs=65536 count=2000 oflag=direct
while true;do sudo dd if=/dev/zero of=testfile bs=10M count=100;done

결과)

2000+0 records in

2000+0 records out

131072000 byte (131 MB) copied, 0.658386 s, 199 MB/s

원래는 카피용으로 쓰는 커맨드인데, 카피 시간과 속도가 함께나와 디스크 속도 측정으로도 많이 쓰는것 같다.

 

초당 199 MB를 읽고 쓸수 있다.  설명은 아래 옵션 설명 이용.

 

  • 옵션 설명

if=file  : 표준입력 대신에 지정한 file을 입력 대상으로 한다.

of=file : 표준출력 대신에 지정한 file을 출력 대상으로 한다.

bs=byte : 한번에 bytes 씩 읽고 쓴다.  (ibs, obs 값 무시)

count=blocks : 출력 시작에서 bolcks 단위 만큼 ibs 크기를 건너띈다.

oflag=flag : 표준출력 파일에 사용되는  flag 옵션

(flag가 direct 시, output 파일에 buffer cache를 사용하지 않고 다이랙트로 I/O를 한다)

 

direct flag 옵션 원문

Use direct I/O for data, avoiding the buffer cache. Note that the kernel may impose restrictions on read or write buffer sizes. For example, with an ext4 destination file system and a linux-based kernel, using ‘oflag=direct’ will cause writes to fail with EINVAL if the output buffer size is not a multiple of 512.

 

 

 

 

  • 간단 추가 설명

ibs=bytes : 한번에 bytes 바이트씩 읽는다.

obs=bytes : 한번에 bytes 바이트씩 쓴다.

bs=bytes : 한번에 bytes 바이트씩 읽고 쓴다.

cbs=bytes : 한번에 bytes 바이트씩 변환한다.

 

위와같이 옵션에 따라 다양하게 결과값을 낼수 있다.



  • disk io 부하주기
dd if=/dev/zero of=testfile bs=1M

 


 

  • 참고 내용 :

1. 옵션 별 설명 : http://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html

 

2. man 페이지 보셔도 나옴니다.

 

 

 * (심심하면, )dd & hdparm 사용법 설명 : http://zzara.tistory.com/12



 

 

 

 

 

posted by cozyboy
:
학습자료/리눅스 2013. 4. 12. 16:36

~/.bash_profile를 열면 아래와 같은 것이 써있을 것이다.

PATH=$PATH:$HOME/bin

 

 

  • path 등록

PATH에 필요폴더를 추가 하면 굳이 해당폴더 이동필요 없이,

tab으로 그위치의 파일에 접근할 수있다.

PATH=$PATH:$HOME/bin:[원하는 폴더 위치] 

 

  • 적용

source ~/.bash_profile

 

 

 

'학습자료 > 리눅스' 카테고리의 다른 글

[linux] xfs 간단 설명, 장단점, 사용하기  (0) 2013.04.22
[linux] disk 속도 측정(dd)  (0) 2013.04.15
extend a partition  (0) 2013.02.01
rpm 명령어  (0) 2013.02.01
[리눅스] /proc 파일 시스템 - 링크  (0) 2012.11.13
posted by cozyboy
:
학습자료/리눅스 2013. 2. 1. 17:53

만약 LVM 을 통해 기존에 있던 Logical volume 을 lvresize 나 lvextend 혹은 lvreduce 를 통해 크기를 변경했을 때

lvdisplay 로 확인했을 때는 크기가 확장되거나 줄었는데 실제 mount (df) 를 통해 보면 이전하고 크기가 바뀌지 않았을 경우가 있다.

루트(/) 쪽을 물리 볼륨확장 하였으나,

lvdisplay 에는 확장되었다고 나오고

df로는 적용이 되지 않은 량이 표시되었다.

 

그때

resize2fs extends the filesystem to the partition's size로 해결

 

 

http://en.positon.org/post/Resize-an-ext3-ext4-partition

 

posted by cozyboy
:
학습자료/리눅스 2013. 2. 1. 14:01

명령어 : rpm


1) 패키지가 설치 되어 있는지 확인

rpm -qa | grep <package name>

-qa 명령어만 사용하면 전체 설치 리스트를 가지고 오는데 여기에서 특정 이름만 추출하기 위해서 사용합니다.

rpm -qa | grep tftp-server // tftp-server 라는 패키지가 설치되어 있는지 확인


2) 패키지 제거하기

rpm -e tftp-server // tftp-server 패키지 제거

의존성 무시하고 강제 삭제를 원하는 경우

--nodeps 옵션을 추가하면 됩니다.


3) 패키지 설치 및 업그레이드

-i : 설치

-U : 업그레이드

-v : 설치 진행 상황 보여주기

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

질의 옵션 (-q 또는 --query 옵션과 함께 사용):
-c, --configfiles 모든 설정 파일을 나열합니다
-d, --docfiles 모든 문서 파일을 나열합니다
--dump 기본 파일 정보를 보여줍니다
-l, --list 패키지 안의 파일을 나열합니다
--queryformat=QUERYFORMAT 다음의 질의 형식을 사용하십시요
-s, --state 나열된 파일의 상태(state)를 보여줍니다
-a, --all 모든 패키지에 대해 질의/검증합니다
-f, --file 파일이 들어있는 패키지에 대해 질의/검증 합니다
-g, --group 그룹 안의 패키지를 질의/검증 합니다
-p, --package query/verify a package file
--specfile spec 파일에 대해 질의합니다
--whatrequires 의존성을 필요로 하는 패키지에 대해 질의/검증 합니다
--whatprovides 의존성을 제공하는 패키지에 대해 질의/검증 합니다


검증 옵션 (-V 또는 --verify 옵션과 함께 사용):
--nomd5 파일의 MD5 축약(digest)을 검사하지 않습니다
--nofiles 패키지 안의 파일을 검사하지 않습니다
--nodeps 패키지의 의존성을 검사하지 않습니다
--noscript don't execute verify script(s)
-a, --all 모든 패키지에 대해 질의/검증합니다
-f, --file 파일이 들어있는 패키지에 대해 질의/검증 합니다
-g, --group 그룹 안의 패키지를 질의/검증 합니다
-p, --package query/verify a package file
--specfile spec 파일에 대해 질의합니다
--whatrequires 의존성을 필요로 하는 패키지에 대해 질의/검증 합니다
--whatprovides 의존성을 제공하는 패키지에 대해 질의/검증 합니다


서명 옵션:
--addsign sign package(s) (identical to --resign)
-K, --checksig verify package signature(s)
--import import an armored public key
--resign sign package(s) (identical to --addsign)
--nodigest don't verify package digest(s)
--nosignature don't verify package signature(s)


데이터베이스 옵션:
--initdb 데이터베이스를 초기화 합니다
--rebuilddb 설치된 패키지 헤더에서 상반된 목록(inverted lists)의 데이터베이스를 재구축 합니다


설치/업그레이드/삭제 옵션:
--aid add suggested packages to transaction
--allfiles 특정 파일을 생략하기 위한 설정이 적용된
경우에도, 패키지 안의 모든 파일을 설치합니다
--allmatches <패키지> 이름과 일치하는 패키지는 모두
제거합니다 (<패키지>에 여러개의 패키지를 동시에

지정할 경우에는 오류가 발생합니다)
--badreloc relocate files in non-relocatable package
-e, --erase=<패키지>+ 패키지를 (제거) 삭제합니다
--excludedocs 패키지에 포함된 문서 파일을 설치하지 않습니다
--excludepath=<경로> <경로>로 시작되는 파일은 설치하지 않습니다
--fileconflicts detect file conflicts between packages
--force --replacepkgs 와 --replacefiles 옵션을 동시에 사용합니다
-F, --freshen=<패키지파일>+ 기존에 설치된 패키지를 업그레이드 합니다
-h, --hash 패키지 설치를 해시마크(#)로 표시합니다 (-v 옵션과 함께 사용하는 것이 좋습니다)
--ignorearch 패키지의 아키텍쳐를 검사하지 않습니다
--ignoreos 패키지의 운영체제를 검사하지 않습니다
--ignoresize 패키지를 설치하기 전에 디스크 공간을 검사하지 않습니다
-i, --install install package(s)
--justdb 파일시스템을 변경하지 않고, 데이터베이스를 갱신합니다
--nodeps 패키지의 의존성을 검사하지 않습니다
--nomd5 파일의 MD5 축약(digest)을 검사하지 않습니다
--noorder 의존성이 있는 패키지를 설치하도록 재요구하지 않습니다
--nosuggest do not suggest missing dependency resolution(s)
--noscripts 패키지 스크립틀릿(scriptlet)을 실행하지 않습니다
--notriggers 이 패키지에 의해 생성되는(triggered) 어떠한 스크립틀릿(scriptlet)도 실행하지 않습니다
--oldpackage 이전 버전의 패키지로 다운그레이드 합니다
(--force 옵션을 사용시에는 이 옵션이 자동으로 적용됩니다)
--percent 패키지 설치를 퍼센트(%)로 표시합니다
--prefix=<디렉토리> 재배치 기능이 있는 패키지의 경우, 지정한<디렉토리>로 재배치하여 설치합니다
--relocate=<이전경로>=<새로운경로> <이전경로>에서 <새로운경로>로 파일을 재배치 합니다
--repackage 재패키징(repackaging)으로 인해 삭제되는 패키지 파일을 저장합니다
--replacefiles ignore file conflicts between packages
--replacepkgs 패키지가 이미 설치되어 있는 경우에도 설치합니다
--test 패키지를 설치하지 않고, 제대로 설치되는지만 확인합니다
-U, --upgrade=<패키지파일>+ 패키지를 업그레이드 합니다


모든 rpm 모드에서의 일반적인 옵션:
-D, --define='MACRO EXPR' define MACRO with value EXPR
-E, --eval='EXPR' print macro expansion of EXPR
--macros=<FILE:...> read <FILE:...> instead of default file(s)
--nodigest don't verify package digest(s)
--nosignature don't verify package signature(s)
--rcfile=<FILE:...> read <FILE:...> instead of default file(s)
-r, --root=ROOT use ROOT as top level directory (default: "/")
--querytags 질의 태그를 보여줍니다
--showrc 현재 설정되어 있는 rpmrc의 내용과 매크로를 보여줍니다
--quiet 자세한 출력을 제공합니다
-v, --verbose 아주 상세한 출력을 제공합니다
--version 현재 사용되고 있는 rpm 버전을 표시합니다


Options implemented via popt alias/exec:
--scripts list install/erase scriptlets from package(s)
--setperms set permissions of files in a package
--setugids set user/group ownership of files in a package
--conflicts list capabilities this package conflicts with
--obsoletes list other packages removed by installing this package
--provides list capabilities that this package provides
--requires list capabilities required by package(s)
--info list descriptive information from package(s)
--changelog list change logs for this package
--triggers list trigger scriptlets from package(s)
--last list package(s) by install time, most recent first
--filesbypkg list all files from each package
--fileclass list file names with classes
--filecolor list file names with colors
--fileprovide list file names with provides
--filerequire list file names with requires
--redhatprovides find package name that contains a provided
capability (needs rpmdb-redhat package installed)
--redhatrequires find package name that contains a required
capability (needs rpmdb-redhat package installed)
--buildpolicy=<policy> set buildroot <policy> (e.g. compress man pages)
--with=<option> enable configure <option> for build
--without=<option> disable configure <option> for build


Help options:
-?, --help Show this help message
--usage Display brief usage message

[출처] rpm 사용 옵션|작성자 해안선

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

 

posted by cozyboy
:
학습자료/리눅스 2012. 11. 13. 17:31

요약 - 리눅스의 proc 파일시스템은 프로세스의 정보뿐만 아니라 커널이 실행되면서 작성된 각종 정보들을 역시 파일로 관리하고 있다.

 

간단한 내용이 아니니, 잘 정리하신 분들 글(joinic, ibm 글)을 봅자. 

 


글의 일부

기본적으로 proc 파일 시스템은 커널이 가지고 있는 여러가지 데이타 구조체를 시스템 사용자(프로그래머 혹은 시스템 관리자)에게 쉽게 전달하기 위해서 사용하는 목적으로 만들어져 있다. 이 /proc 파일시스템 을 이용하게 됨으로써 좀더 쉽게 각종 시스템 정보를 얻어올수 있으며, 여러가지 커널옵션을 특별한 프로그래밍 과정없이 단지 파일의 정보변경 만을 통해서 쉽게 변경할수 있도록 도와준다.

 

파일 내용
apm Advanced power management 정보
bus bus 관련정보
cmdline 커널 실행옵션
cpuinfo 사용cpu 정보
device 사용가능한 디바이스(블럭/문자 장치)
dma 사용하고 있는 DMS 채널
filesystems 지원되는 파일시스템
driver/rtc 드라이버 정보
execdomains execdomains, 보안과 관련
fb 프레임버퍼 디바이스
ide IDE 장치에 대한 정보 디렉토리
interrupts 인터럽트 사용율
iomem 메모리지도
ioports 사용중인 입출력포트
isapnp pnp 정보
kcore 커널 core 이미지
kmsg 커널메시지
ksyms 커널 심볼 테이블
loadavg 최근 1,5,15 분의 평균 load
locks kernel locks 정보
meminfo 메모리 정보
misc 기타등등
modules 실행중인(load) 모듈 목록, lsmod로 나오는 정보다
mounts 마운트된 파일시스템 정보
net 네트워킹 정보
partitions 파티션 정보
pci PCI 버스 정보
scsi SCSI 정보
slabinfo Slab pool 정보
swaps swap 파일시스템 사용정보
sysvipc SysVIPC 자원정보(메시지큐, 세마포어, 공유메모리등)
tty tty 드라이버 정보
uptime 시스템 가도시간
version 커널버젼

 

 

 

사이트

http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/proc/GetSMSInfo

http://www.ibm.com/developerworks/kr/library/l-proc.html#downloads

 

'학습자료 > 리눅스' 카테고리의 다른 글

extend a partition  (0) 2013.02.01
rpm 명령어  (0) 2013.02.01
[리눅스] 날짜 시간 변경, 동기화  (0) 2012.10.29
개발자 vim 기초 + tip + plugin(tag list, ctags, 자동완성 기능)  (0) 2012.10.19
[링크] systemctl  (0) 2012.09.21
posted by cozyboy
:
학습자료/리눅스 2012. 10. 29. 14:09

http://blog.naver.com/shw20319?Redirect=Log&logNo=20136369737

 

 

시간확인  :

 date

 

날짜/시간 변경 :
> date 122213002000
# 12월 22일 13시 00분 2000년


 

시간 동기화 :

rdate -s time.bora.net (시스템 시간 동기화) 

clock -w (CMOS 시간에 적용)

 

그냥 date, rdate, clock 명령어만 기억하고

--help 옵이나 man page 보자.

 

posted by cozyboy
:
학습자료/리눅스 2012. 10. 19. 13:38

▶ 기초

리눅스와 좀 더 친해지기....


리눅스는 직접 경험해 봐야 익숙해지고 알 수 있게 된다.

 


1. 여러 파일을 편집하는 방법

vi file1.c file2.c file3.c /*file1, file2, file3 열기*/


vi *.c *.h /*c파일과 헤더파일 열기*/

:ls 열린 파일 리스트 보기
:b[N] ex):b2 버퍼 2(file2.c)로 이동
:bw[N] N버퍼 삭제(N없으면 현재 버퍼)
:bp[N] 이전 버퍼 이동(N번)
:bn[n] 이후 버퍼 이동(N번)


tip>


코딩을 하는 사람이라면, 이 방법보다 플러그인을 활용한 Tlist를 사용할 수 있다.


여러 파일 편집과 아래의 키 매핑의 기능은 Tlist로 더욱 쉽게 사용 할 수 있다.

 



2. 키 매핑

map ,1 : b!1<CR> ~/.vimrc 파일 편집(추가)
map ,2 : b!2<CR>

  • map = 맵핑
  • ,1 : b!1 = ex모드(ESC 누른 상태)에서 ,1을 눌렀을 때 b!1<CR> 이 실행
  • b!1 = 파일을 수정중일때 경고 무시하고 강제로 창 전환
  • <CR>

주의> ",1" 누를 시 ','키 누르고 뗀 후 빨리 '1'키를 눌러야 인식

tip>
<F4>키로 Tlist를 실행 혹은 ,ma 키 입력으로 해당 줄의 함수의 man 페이지를 볼 수 있도록 할 수 있다.


3. 매크로 사용
: ex 모드에서 qb( q[네임레지스터명] ) 입력 시 하단에 '기록 중'글이 나온다. 이 후 누르는 키는 b 레지스터에 저장된다.

ex>^i//[space bar][ESC][ENTER]
^ : 행의 처음
i : 삽입
esc : ex모드
enter : 개행


@b 혹은 5@b 형태로 사용 가능 하며 자동으로 주석처리를 하게 된다.

4. 다중 창 사용
: 터미널을 분할하여 효율적으로 사용 한다.

[분할]

ctrl+w n (new)가로 분할
ctrl+w s (split)동일한 파일을 복사, 가로 분할
ctrl+w v (vertical)동일한 파일 복사, 세로 분할

분할된 창에서 파일 로드 ==> :e[파일명]

[창 이동]

ctrl+w w 창전환
ctrl+w h/j/k/l 왼쪽, 위, 아래, 오른쪽으로 이동
ctrl+w 화살표 위와 동일
ctrl+w t (top) 가장 위의 창으로
ctrl+w b (bottom) 가장 아래 창으로


[크기 변환]

ctrl+w _ 수평분할일때 현재 창 최대로
ctrl+w | 수직분할일때 현재 창 최대로
ctrl+w = 모든창을 동일한 크기로
ctrl+w [N]+ or [N]- 수평분할일때 해당 창 n씩 크기 변동
(n이 없을 시 1크기만큼 변동)
ctrl+w [N]> or [N]< 수직분할일때 해당 창 n씩 크기 변동


5. 마킹 이동
: 코딩을 하다가 기억해야 하는 위치가 있을 때 마킹을 사용하면 해당 위치로 복귀가 가능하다.

전역마킹(A - Z) : 서로 다른 파일간에서도 이동 가능
지역마킹(a - z) : 현재 파일 내에서만 이동 가능

마킹 ex모드, ma or mb
마킹된 행의 처음으로 이동 ex모드, :'a
마킹 테이블 보기 ex모드, :marks



6. 쉘명령어 사용
: 편집 중 쉘을 잠시 써야 하는 일이 발생할 때, 번거롭게 새 터미널을 켜거나 vim을 종료 하지 않고 이용 할 수 있다.

:!ls ls가 실행되고 다시 vim으로 복귀
:!bash, :sh, :shell 잠시 쉘로 이동, 쉘에서 exit로 vim 복귀

7. 문자 치환

:패턴s/기존문자열/바꿀문자열/옵션

:%s/기존/바꿀/g

예를들어 첫줄부터 끝줄까지의 index를 dex로 바꾸려면 다음과 같이 쓰면 된다.

:%s/index/dex/g

옵션 c : 바꿀때마다 묻기


8. 복사/붙이기/잘라내기/삭제

복사 - yy(현재 행 복사), 10yy 10개의 행 복사

붙이기 - p

잘라내기 - x

삭제 - dd(현재 행 삭제)

9. 되돌리기/되살리기

되돌리기 - u

되살리기 - ctrl+r


10. 주석 

// 블록만큼 주석 하기
1. Ctrl + v 로 원하는 만큼 블록지정
2. Shift + i 
3. // 입력
4. ESC 2번 누름

// 블록만큼 주석 지우기
1. Ctrl + v 로 원하는 만큼 블록지정
2. x

 

11. 탭 끼워넣기/제거

v 키로 블럭을 잡고 '>' 또는 '<' 키로 탭을 넣기/제거 할 수 있다


-sw(shift width) : < 또는 >로 탭 사이즈를 조절할때 표시 크기. 

:set sw=4  #vim설정


▶ tip + plugin


1. 파일 탐색 기능 - 디렉토리 브라우징과 선택열기가 가능하다.

:20vs ./

 

2. 빠른 괄호 이동 - if, while 문의 범위가 어디까지인지 한번에 확인 할 수 있다.

'{' 기호에서 %를 누르면 쌍을 이루는 괄호로 이동.

 

3. 폴딩기능

함수 시작부위 '{' 위에 커서를 두고 명령모드에서 v]}zf

혹은 ./vimrc 에 매핑시켜 사용가능 하다.

map <F1> v]}zf

 

4. 함수의 원형보기, 지역변수 선언 부분 바로 이동

함수 원형 보기 -[i

선언부분 바로 이동 -gd

 

5. 흐트러진 소스 정렬

v로 블록 지정후, '=' 키

 

6.파일에서 다른 부분 비교하기 - 다른 부분의 라인이 색깔표기되어 알기쉽다

vimdiff a.txt b.txt

 

7. header 파일 바로 읽기 - ~/.vimrc에서 지정되있는 path에서 파일을 찾기때문에, 만약 열리지 않는 헤더파일이 있다면, 그 곳의 path를 지정해주어야 한다.

일고자 하는 헤더에 커서 위치 -> ctrl+wf (창이 수평분할 되며 헤더파일이 열린다)

path 지정 - set path=/usr/include (.vimrc에)

 

8. plug in 사용(tag list, ctags, 자동완성, help page 세팅)

8.1. TagList

왼편에 추가된 것이 taglist이다.

구조체, 변수, 함수 등이 정리되어서 나오며 해당 위치로 바로 이동 가능하다.

창전환 : crtl +ww

창전환으로 tag쪽에 커서가 이동하면, 이동 하고픈 곳에서 엔터키를 눌러서 해당 라인으로 이동하게 된다.

설치법.

1. 우선 apt-get install ctags로 ctags를 설치 한다.

2. taglist 최신버전을 다운 받는다.

http://vim.sourceforge.net/scripts/script.php?script_id=273

3. 받은 파일의 압축을 풀면 doc/, plugin/ 폴더 두개가 있고 각각 폴더에 doc/taglist.txt, plugin/taglist.vim 파일이 존재한다.

그 파일들을 각각 아래 위치로 이동

/usr/share/vim/vim72/doc/

/usr/share/vim/vim72/plugin/

실행법.

1. 커맨드모드에서 :Tlist 입력

2. vimrc파일을 열어 단축키를 지정

map <F4> :Tlist<cr> //커맨드 모드에서 :Tlist 입력 과 같다.

 

8.2 ctags

소스원문에서 해당 함수로 이동할 수 있다.

 - 함수 들어가기 : ctrl+]

 - 이전 위치로 돌아오기 : ctrl + t

 

8.3. 자동완성기능


filetype plugin on

vim 7.? 버전 이상에선 위와 같이 적어주면 된다. tab ctrl+p로 자동완성이 가능하다.


set complets : 이것이 자동완성 기능이다.

c 소스를 vi로 연 후 (ctrl+p?) ctrl+space 를 눌러보자

 

 

이제 vim으로도 멋지게 코딩합시다.


8.4 plugin help page 세팅

doc 페이지 세팅

:helptags /usr/share/vim/vim73/doc/

다만 위의 폴더에 플러그인의 doc 문서가 존재해야 한다.


doc 페이지 보기

:help taglist (혹은 help tagli 까지만 해도 비슷한 류가 있다면 해당 doc 문서가 열린다)




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

ctags 더 자세한 내용 :

http://www.viper.pe.kr/cgi-bin/moin.cgi/ctags_%EC%99%80_vi_%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 


posted by cozyboy
:
학습자료/리눅스 2012. 9. 21. 14:58
posted by cozyboy
:
학습자료/리눅스 2012. 9. 20. 12:39

Identifying shared memory segment users using lsof

Lsof (list open files) is a really useful tool for troubleshooting open file decriptors which prevent a deleted file from being released or a shared memory segment from being removed.

Here’s a little situation on Linux where an Oracle shared memory segment was not released as someone was still using it.

$ ipcs -ma

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 393216     oracle    640        289406976  1          dest
0xbfb94e30 425985     oracle    640        289406976  18
0x3cf13430 557058     oracle    660        423624704  22

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0xe2260ff0 1409024    oracle    640        154
0x9df96b74 1671169    oracle    660        154

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

The bold line should have disappeared after instance shutdown, but it didn’t. From “natcch” (number of attached processes) column I see there is still some process using the shared memory segment. Thus the segment was not released and even ipcrm command did not remove it (just like with normal files if someone has them open).

So, I needed to identify which process was still using the memory segment. If that had been a normal existing file, I’d could have used /sbin/fuser command to see which process still holds it open, but this only works for existing files with existing directory entries.

However for deleted files, sockets and shared memory segments, you can use lsof command (it’s normally installed by default on Linux, but for Unixes you need to separately download and install).

The SHM ID of that segment was 393216 as ipcs -ma showed, so I simply run lsof to show all open file descriptors and grep for that SHM ID:

$ lsof | egrep "393216|COMMAND"
COMMAND     PID      USER   FD      TYPE     DEVICE       SIZE       NODE NAME
python    18811    oracle  DEL       REG        0,8                393216 /SYSVbfb94e30

See how the NODE column corresponds to SHM ID in ipcs output.

So I kill the PID 18811 which is still attached to the SHM segment:

$ kill 18811

$ ipcs -ma

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0xbfb94e30 425985     oracle    640        289406976  18
0x3cf13430 557058     oracle    660        423624704  25

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0xe2260ff0 1409024    oracle    640        154
0x9df96b74 1671169    oracle    660        154

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages


Now the shared memory segment is gone and its memory released.

Note that the lsof command is very useful for many other tasks as well. For example it allows you to list open sockets by network protocol, IP, port etc. For example you can determine to which client some server process is talking to, from OS level:

$ lsof -i:1521
COMMAND   PID   USER   FD   TYPE DEVICE SIZE NODE NAME
tnslsnr  6212 oracle   11u  IPv4  49486       TCP *:1521 (LISTEN)
tnslsnr  6212 oracle   13u  IPv4 276708       TCP linux03:1521->linux03:37277 (ESTABLISHED)
tnslsnr  6212 oracle   14u  IPv4 264894       TCP linux03:1521->linux03:41122 (ESTABLISHED)
oracle  22687 oracle   20u  IPv4 264893       TCP linux03:41122->linux03:1521 (ESTABLISHED)
oracle  25250 oracle   15u  IPv4 276707       TCP linux03:37277->linux03:1521 (ESTABLISHED)
oracle  25530 oracle   15u  IPv4 279910       TCP linux03:1521->192.168.247.1:nimsh (ESTABLISHED)

Unfortunately lsof is not installed by default in classic Unixes, but in some shops the sysadmins have chosen to install it. But even then, it may not work for regular users as lsof requires access to kernel memory structures through /dev/kmem or similar. If you can’t get access to lsof then there may be other tools available which can do some tricks lsof can do. For example on Solaris, there’s an useful command pfiles which can show open files of a process and since Solaris 9 ( I think ) it can also report the TCP connection endpoints of network sockets…

 

 

 

펌:http://blog.tanelpoder.com/2009/01/22/identifying-shared-memory-segment-users-using-lsof/

'학습자료 > 리눅스' 카테고리의 다른 글

개발자 vim 기초 + tip + plugin(tag list, ctags, 자동완성 기능)  (0) 2012.10.19
[링크] systemctl  (0) 2012.09.21
fstab[펌]  (0) 2012.06.15
리눅스 LVM[펌]  (0) 2012.06.15
[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
posted by cozyboy
: