개요

find와 locate는 동일한 결과를 보인다고 생각할 수 있는데 왜 두개의 명령으로 나눠뒀는지 궁금해할 수 있다.

 

1. find는 물리적으로 search를 한다. 그래서 항상 최신의 정보이다. 옵션을 더 세밀하게 사용할 수 있다.

 

2. locate는 updatedb command에 의해 리스팅된 상태의 정보를 통해 search를 한다. 예전 버전의 정보일 수 있다. cron을 통해 매일 하루에 한번씩 이 정보도 업데이트된다. 이름만 옵션으로 줄 수 있다.

 

속도

# time find / -name *.arc

.... 

real    0m5.323s
user    0m0.074s
sys     0m2.040s


# time locate /*.arc

real    0m0.236s
user    0m0.213s
sys     0m0.004s 

 

최신 데이터와 old data

# cd ~

# touch ddd.arc
# locate *.arc | grep ddd       <- 아무 결과도 출력되지 않음

# find ~/ -name *.arc

/root/ddd.arc

# updatedb                         <- 수동으로 file list를 업데이트해준다.

# locate *.arc | grep ddd
/root/ddd.arc

 

cron.daily의 등록여부 확인

 

# cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

 

# cd /etc/cron.daily/

# grep updatedb *
mlocate.cron
:/usr/bin/updatedb -f "$nodevs"

매일 4시 2분에 cron.daily가 실행되며, 그 안의 mlocate.cron을 실행하여 updatedb를 수행함을 알 수 있다.

 

주의사항

간혹 이 updatedb 명령이 nfs로 마운트된 영역을 검색하면서 느려질 경우가 수 있고 DB가 설치된 환경이라면 조정이 필요할 수 있다.

예를 들어 nfs 영역에 archive나 trace file을 저장하도록 설정하였는데 로그 스위치가 자주 발생하여 아카이브 로그 파일이 많이 생성되거나  trace파일이 엄청나게 생성되었을 경우 updatedb 명령시에 부하가 발생하게 된다.

이때 만약 RAC환경에서 nfs영역에 voting disk가 위치한다면 최악의 경우 eviction까지 이루어질 수 있다(매우 rare하다).

그래서 nfs는 주로 updatedb에서 제외하는 것을 권장하고 있다.

 

# cat /etc/updatedb.conf
PRUNEFS = "auto afs gfs gfs2 iso9660 sfs udf vmhgfs"
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/spool/cups /var/spool/squid /var/tmp"

위가 기본값이다.

 

PRUNEFS: df에서 확인할 수 있는 file system으로 제외한다. 이곳에 nfs를 추가하면 nfs 파일시스템은 updatedb 수행시 제외한다.

PRUNEPATHS: 경로를 지정하여 제외한다.

 

Posted by neo-orcl
,

cp /etc/DIR_COLORS ~/.dir_colors 

Posted by neo-orcl
,

유용한 스크립트로 생각된다.

 

#!/bin/sh
tail -fn0 로그파일명 | \
while read line ; do
        echo "$line" | grep "액션하고자하는문자열"
        if [ $? = 0 ]
        then
                액션스크립트혹은명령어
        fi
done

이후 실행은 nohup ./action.sh &

Posted by neo-orcl
,

snmp 기본설정

Knowledge/OS 2015. 6. 24. 13:57

cacti용으로 centos에서 주로 쓰는 기본 설정

 

com2sec local 127.0.0.1 커뮤니티값
com2sec mynetwork 192.168.0.0/16 커뮤니티값
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
view all included .1 80
view systemview included system
#       group          context sec.model sec.level prefix read       write  notif
access  MyROGroup      ""      any       noauth    exact  all        none none

 # disk used #
# disk /
# disk /log
# disk /usr
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat

Posted by neo-orcl
,

간혹 부팅 도중 centos나 rhel 부팅이 너무 느릴 때가 있다.

그때 보면 콘솔에 starting sendmail service .... 과정에서 1분~20분 정도를 잡아먹는데

그 이유는 /etc/hosts의 도메인을 탐색하기 때문이다.

/etc/hosts에 FQDN(fully qualified domain name)이 적혀있지 않아 발생한다.

해결법은 /etc/hosts의 내용을 변경하는 방법 혹은 sendmail 서비스를 시작하지 않게 하는 방법이다.

1. /etc/hosts

# vi /etc/hosts

기존: 192.168.1.2 localhost

변경: 192.168.1.2 localhost.test.com

 

2. sendmail 서비스 시작 비활성화

# chkconfig --list | grep send

sendmail        0:해제  1:해제  2:활성  3:활성  4:활성  5:활성  6:해제

# chkconfig --level 2345 sendmail off

 

※chkconfig 사용법 간략

chkconfig --list [name]
chkconfig --add name
chkconfig --del name
chkconfig [--level levels] name <on|off|reset>
chkconfig [--level levels] name

'Knowledge > OS' 카테고리의 다른 글

로그파일에 특정 문자열 발생시 액션 스크립트  (0) 2015.06.24
snmp 기본설정  (0) 2015.06.24
ssh 접속이 id 입력 후 느린 경우 해결(centos)  (0) 2015.01.16
cp 주의사항  (0) 2015.01.14
mount directory to directory  (0) 2015.01.14
Posted by neo-orcl
,

1. Open the config file of sshd

# vi /etc/ssh/sshd_config

 

2. Change "UseDNS Yes" to "UseDNS no" and save the file

#UseDNS Yes

=>

UseDNS no

 

3. Restart the sshd

# service sshd restart

stopping sshd :                                           [  OK  ]
starting sshd :                                             [  OK  ]

'Knowledge > OS' 카테고리의 다른 글

snmp 기본설정  (0) 2015.06.24
centos 부팅 과정중 sendmail 서비스 시작 늦게 되는 현상  (0) 2015.01.19
cp 주의사항  (0) 2015.01.14
mount directory to directory  (0) 2015.01.14
lsof command 간단 사용법  (0) 2014.12.31
Posted by neo-orcl
,

cp 주의사항

Knowledge/OS 2015. 1. 14. 13:31

cp 진행시 권한과 오너가 바뀐다

이를 방지하려면 -a 혹은 --preserve=all 을 사용한다.

 

       -a, --archive
      same as -dR --preserve=all

       --preserve[=ATTR_LIST]
      preserve the   specified   attributes (default:  mode,owner-
      ship,timestamps), if possible  additional attributes:  context,
      links, xattr, all

Posted by neo-orcl
,

다른 디렉토리를 링크(ln -s)를 통해 연결시 ftp에서 제대로 접근할 수 없는 문제가 있다.

마운트를 통해 설정하면 이 문제가 없어진다.

 

1. 마운트

mount --bind <source_dir> <dest_dir>

 

2. /etc/fstab 수정

/sourcedir           destdir      none bind 0 0

'Knowledge > OS' 카테고리의 다른 글

ssh 접속이 id 입력 후 느린 경우 해결(centos)  (0) 2015.01.16
cp 주의사항  (0) 2015.01.14
lsof command 간단 사용법  (0) 2014.12.31
Cacti Installation by yum on CentOS5  (0) 2014.07.22
RHEL 4 or 5 recommended kernel parameters  (0) 2013.08.12
Posted by neo-orcl
,

1. lsof 파일명

해당 파일에 접근하고 있는 프로세스들의 정보를 확인

 

lsof /root/jdk1.6.0_38/bin/java
COMMAND  PID USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
java    5768 root txt    REG  253,0    50794 2362680 /root/jdk1.6.0_38/bin/java
java    6868 root txt    REG  253,0    50794 2362680 /root/jdk1.6.0_38/bin/java

 

2. lsof 디렉토리명

해당 디렉토리에 접근하고 있는 프로세스 정보 확인
일반 디렉토리는 아무것도 출력되지 않는 경우가 많다.
/proc 이나 /dev 등은 정상 출력된다.

 

# lsof /proc
COMMAND     PID      USER   FD   TYPE DEVICE SIZE/OFF       NODE NAME
rsyslogd   1864      root    3r   REG    0,3        0 4026532043 /proc/kmsg
acpid      5840      root    3r   REG    0,3        0 4026531991 /proc/acpi/event
hald       5849 haldaemon   12r   REG    0,3        0 4026531983 /proc/mdstat
hald       5849 haldaemon   14r   REG    0,3        0      18330 /proc/5849/mounts
Xorg       6265      root    5w   REG    0,3        0 4026531963 /proc/mtrr
gnome-pow  6415       gdm   18r   REG    0,3        0 4026532038 /proc/stat

 

3-1. lsof -i

모든 네트워크와 연결되어있는 프로세스 정보 확인.
어떤 포트를 어느 프로세스가 사용하는지 확인할 때 유용하다.

 

# lsof -i
COMMAND     PID    USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
vsftpd     5974    root    3u  IPv4    18840      0t0  TCP *:ftp (LISTEN)
httpd     10961  apache    4u  IPv6 38110178      0t0  TCP *:http (LISTEN)
httpd     12015  apache    4u  IPv6 38110178      0t0  TCP *:http (LISTEN)
httpd     12402  apache    4u  IPv6 38110178      0t0  TCP *:http (LISTEN)
httpd     14208  apache    4u  IPv6 38110178      0t0  TCP *:http (LISTEN)

 

3-2. lsof -iTCP 혹은 lsof -iUDP

tcp나 udp를 필터링해서 확인

 

4. lsof -c 대몬명

해당 대몬과 연결되어 있는 프로세스와 파일 정보 확인

 

# lsof -c tnslsnr
COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
tnslsnr 3679 oracle  cwd    DIR                8,3     4096  554081 /home/oracle
tnslsnr 3679 oracle  rtd    DIR                8,3     4096       2 /
tnslsnr 3679 oracle  txt    REG                8,2   933484 3151962 /ORACLE/product/bin/tnslsnr
tnslsnr 3679 oracle  mem    REG                8,3   156872 1074448 /lib64/ld-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3    22536 1074455 /lib64/libdl-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3  1979000 1074449 /lib64/libc-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   141576 1074452 /lib64/libpthread-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   598800 1074450 /lib64/libm-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   113952 1074459 /lib64/libresolv-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   116368 1074488 /lib64/libnsl-2.12.so
tnslsnr 3679 oracle  mem    REG                8,2   228765 3150257 /ORACLE/product/lib/libclsra11.so
tnslsnr 3679 oracle  mem    REG                8,2 17319952 3150255 /ORACLE/product/lib/libhasgen11.so
tnslsnr 3679 oracle  mem    REG                8,2  3319072 3150259 /ORACLE/product/lib/libocrb11.so

 

5. lsof -p PID


해당 프로세스ID와 관련된 프로세스와 파일 정보 확인

 

# lsof -c tnslsnr
COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF    NODE NAME
tnslsnr 3679 oracle  cwd    DIR                8,3     4096  554081 /home/oracle
tnslsnr 3679 oracle  rtd    DIR                8,3     4096       2 /
tnslsnr 3679 oracle  txt    REG                8,2   933484 3151962 /ORACLE/product/bin/tnslsnr
tnslsnr 3679 oracle  mem    REG                8,3   156872 1074448 /lib64/ld-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3    22536 1074455 /lib64/libdl-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3  1979000 1074449 /lib64/libc-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   141576 1074452 /lib64/libpthread-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   598800 1074450 /lib64/libm-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   113952 1074459 /lib64/libresolv-2.12.so
tnslsnr 3679 oracle  mem    REG                8,3   116368 1074488 /lib64/libnsl-2.12.so
tnslsnr 3679 oracle  mem    REG                8,2   228765 3150257 /ORACLE/product/lib/libclsra11.so
tnslsnr 3679 oracle  mem    REG                8,2 17319952 3150255 /ORACLE/product/lib/libhasgen11.so
tnslsnr 3679 oracle  mem    REG                8,2  3319072 3150259 /ORACLE/product/lib/libocrb11.so

'Knowledge > OS' 카테고리의 다른 글

cp 주의사항  (0) 2015.01.14
mount directory to directory  (0) 2015.01.14
Cacti Installation by yum on CentOS5  (0) 2014.07.22
RHEL 4 or 5 recommended kernel parameters  (0) 2013.08.12
find: Argument list too long 해결  (0) 2013.06.14
Posted by neo-orcl
,

Test date: 2014.07.21

 

1. 필요 패키지 인스톨

# yum install mysql-server mysql php-mysql php-pear php-common\
php-gd php-devel php php-mbstring php-cli php-snmp php-pear-Net-SMTP\
php-mysql httpd

 

2. mysql 설정

# service mysqld start
# mysqladmin -u root password NEWPASSWORD

 

3. cacti를 위한 mysql DB를 생성한다.

# mysql -u root -p -e 'create database cacti'

 

4. mysql DB 사용자인 cacti를 생성하면서 비밀번호를 설정한다.

# mysql -u root -p

mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY '<password>';
mysql> FLUSH privileges;
mysql> \q

 

5. snmpd를 설치하고 설정한다.

# yum install net-snmp-utils php-snmp net-snmp-libs
# vi /etc/snmp/snmpd.conf

 

아래 내용 추가 및 변경

com2sec local     localhost           public
group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
view all    included  .1                               80
access MyRWGroup ""      any       noauth    exact  all    all    none
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root  (configure /etc/snmp/snmp.local.conf)
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat

 

5-1. 저장 후 snmpd 시작 및 자동시작 on

 

# /etc/init.d/snmpd start
# chkconfig snmpd on

 

5-2. 제대로 snmp가 동작하는지 확인한다.

# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
결과 예시:
IP-MIB::ipAdEntIfIndex.10.10.29.68 = INTEGER: 2
IP-MIB::ipAdEntIfIndex.67.yy.zz.eee = INTEGER: 3
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1

 

6. cacti 설치

# yum install cacti

 

안될 경우 rpmforge 인스톨 해야한다.
http://wiki.centos.org/AdditionalResources/Repositories/RPMForge

 

7. cacti table 생성

 

7-1. cacti.sql의 위치를 찾는다.

 

# rpm -ql cacti | grep cacti.sql

예시)
[root@11g ~]# rpm -ql cacti | grep cacti.sql
/var/www/cacti/cacti.sql

위에서 출력된 파일로 cacti 테이블을 생성한다.

# mysql -u cacti -p cacti < /var/www/cacti/cacti.sql

 

8. cacti 설정

8-1. 예전 버전 방법

# vi /etc/cacti/db.php

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "<password>";
$database_port = "3306";

 

8-2. 최근 버전 방법

# rpm -ql cacti | grep config.php
/var/www/cacti/include/config.php

 

# vi /var/www/cacti/include/config.php

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "<password>";
$database_port = "3306";

 

9. httpd 설정

# vi /etc/httpd/conf.d/cacti.conf

Allow 내용을 변경한다. all로 하던지, 네트워크 지정하던지.

Another option is create /usr/share/cacti/.htaccess file and password protect the directory. Finally, restart httpd:

# service httpd restart

 

10. cacti cronjob을 설정한다. 보통 기본으로 설정되어 있다

 

# vi /etc/cron.d/cacti

*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

 

11. Run cacti installer

설정한 http 주소로 들어간다.
http://ipaddress/cacti

설치 스탭을 따라간다. 기본 계정은 Admin/admin 이다.

 

※ SNMP data 수집 설정하기
=> Click on Devices
=> Select Localhost
=> Make sure SNMP options

 

※ SNMP 그래프 만들기
Click on "Create Graphs for this Host" link on top right side.
Select SNMP - Interface Statistics
Select a graph type (such as In/Out bytes with total bandwidth)
Finally, click on Create button.

Posted by neo-orcl
,