쉘스크립트로 특정 날짜 이후에 생성된 파일 찾기

리눅스/OS 일반|2014. 12. 31. 00:07
반응형

1. 찾고자 하는 시간의 기준이 되는 파일을 생성한다.
2. 위에서 생성한 파일보다 최신의 파일을 찾는다.


예) 2011년 07월 25일 18:00 이후에 만들어진 파일을 찾고자 할 경우 

1. 특정 시간(2011년 07월 25일 18:00)에 생성된 파일 만들기
$ touch -t 201107251800 start.lucky

2. 특정 시간(2011년 07월 25일 18:00)에 생성된 파일보다 나중에 만들어진 파일 찾기
$ find ./ -name *.class -type f -newer start.lucky


[출처] 얕고 좁은 지식들 | 뽀기 (http://jnylove.tistory.com/371)


반응형

댓글()

YUM 설치시 에러 [Errno 4] Socket Error: timed out

리눅스/OS 일반|2014. 12. 31. 00:05
반응형

Centos 5 에서 테스트 했습니다.


Reading repository metadata in from local files
primary.xml.gz            100% |=========================| 544 kB    00:30
http://srl.cs.jhu.edu/YUM/fedora/extras/5/i386/repodata/primary.xml.gz: [Errno 4] Socket Error: timed out
Trying other mirror.
primary.xml.gz                                                  1.9 MB 00:04
ftp://ftp.funet.fi/pub/mirrors/ftp.redhat.com/pub/fedora/linux/extras/5/i386/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
primary.xml.gz            100% |=========================| 1.9 MB    00:04
ftp://fedora.mirrors.tds.net/pub/fedora-core-extras/5/i386/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
Trying other mirror.
primary.xml.gz            100% |=========================| 1.9 MB    00:02


위와 같은 식으로 모든 mirror를 돌며 다운로드를 받고 결국엔 체크섬에러를 내고 재시도를 반복..

네트워크 문제일줄알고 이것저것 만이 손봐 보고 rpm만 최신버전으로 깔아봤는데도 해결이 안되더군요

옵션등을 찾아보다가 결국엔


yum clean metadata


으로 해결했습니다. 이후 update 진행이 정상적으로 되는군요

 

[출처] 과학과 이성에 대한 극히 주관적인 관점 (http://poorpuppet.egloos.com/4104257)

반응형

댓글()

screen 명령어 활용 (ssh 화면 공유)

리눅스/OS 일반|2014. 12. 31. 00:04
반응형

screen 명령어로 userA 와 userB 가 ssh 화면을 공유하여 서로의 작업화면을 모니터링 할 수 있습니다.

 

[userA 할일]

공유할 screen 을 만들어 놓습니다.

 

screen -S sysdocu    // sysdocu 이라는 이름의 screen 을 만들어 놓음

  

[userB 할일]

screen -ls    // 만들어놓은 screen 리스트 확인
There is a screen on:
        32152.sysdocu      (Attached)
1 Socket in /var/run/screen/S-root.

 

다음 명령어로 screen 을 공유합니다.

screen -r 32152.sysdocu -x

반응형

댓글()

리눅스 커널 다운로드 URL

리눅스/OS 일반|2014. 12. 31. 00:03
반응형

http://www.kernel.org/pub/linux/kernel/v2.6/

 

위 URL 접속 후 원하는 버전을 다운로드 받으면 됩니다.

2.6 이외 버전은 뒤 버전을 수정하여 접속하면 됩니다.

반응형

댓글()

리눅스 tar.gz 분할 압축하기

리눅스/OS 일반|2014. 12. 31. 00:03
반응형

아래 예제를 따라서 압축하면 됩니다.

 

# tar cvzf - /home/sysdocu | split -b 100m - sysdocu.tar.gz

 

- /home/sysdocu : 압축할 디렉토리

- 100m : 분할 압축 단위 (100 mega byte)

- test.tar.gz : 파일명

 

결과 : 아래와 같이 파일이 나뉘어 생성됩니다.

sysdocu.tar.gzaa

sysdocu.tar.gzab

sysdocu.tar.gzac

반응형

댓글()

CENTOS 5.3에서 GFS 구성하기

리눅스/OS 일반|2014. 12. 31. 00:02
반응형

< CENTOS 5.3에서 GFS 구성하기 >

 

이런거 정리해도 될라나.. ..

 

아래는 node1과 node2 두대의 서버에서 gfs2로 구성하는 세부 방법이다.

[root@]# uname -a
Linux VM1.test.co.kr 2.6.18-128.1.10.el5.xs5.5.0.51xen #1 SMP Fri May 29 07:20:04 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux


>>>GFS 구성을 위한 패키지 설치

 

 

yum groupinstall "Cluster Storage"
 yum groupinstall "Clustering"
 

 

 

 기존 5.3버젼에 openais에 버그가 있어서 
 service cman start시에 아래와 같은 오류가 나타난다. 이는 버그이므로 아래의 버젼으로 다운그레이드 해서 재설치 해야한다.
  Starting cman... failed
  /usr/sbin/cman_tool: aisexec daemon didn't start

 

 

 rpm -e --nodeps openais-0.80.3-22.el5
 wget http://people.centos.org/z00dax/misc/c53/x86_64/RPMS/openais-0.80.6-8.el5.x86_64.rpm
 rpm -ivh openais-0.80.6-8.el5.x86_64.rpm


 

>>> cluster 설정파일을 만든다.
우선 한대의 노드에서 system-config-cluster를 이용하여 만들 수 있따.

 

 

[root@]# cat /etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster alias="cluster112" config_version="5" name="cluster112">
        <fence_daemon post_fail_delay="0" post_join_delay="30"/>
        <clusternodes>
                <clusternode name="vm1.test.co.kr" nodeid="1" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="mf1" nodename="vm1.test.co.kr"/>
                                </method>
                        </fence>
                </clusternode>
                <clusternode name="vm2.test.co.kr" nodeid="2" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="mf1" nodename="vm2.test.co.kr"/>
                                </method>
                        </fence>
                </clusternode>
        </clusternodes>
        <cman expected_votes="1" two_node="1"/>
        <fencedevices>
                <fencedevice agent="fence_manual" name="mf1"/>
        </fencedevices>
        <rm>
                <failoverdomains>
                        <failoverdomain name="fd_domain" ordered="0" restricted="0">
                                <failoverdomainnode name="vm1.test.co.kr" priority="1"/>
                                <failoverdomainnode name="vm2.test.co.kr" priority="1"/>
                        </failoverdomain>
                </failoverdomains>
                <resources/>
        </rm>
</cluster>


만드는 방법은 system-config-cluster에서 cluster이름을 넣고, 노드들을 만들고, fence device를 지정하고, resource와 서비스는 만들지 않고 저장하고 나온다.
보다 상셍한 것은 
http://kbase.redhat.com/faq/docs/DOC-4293 를 참고한다.
위의 파일과 같이 한대에 만들어 지면, 다른 노드의 /etc/cluster/cluster.conf 파일로 복사한다.
잘 모르겠으면 위의 메뉴얼 팬스로 사용한 것을 그냥 복사한다.


>>>gfs2 파일시스템의 생성
 5.3부터 gfs2 가 들어가 있으므로 gfs2 파일시스템으로 만들 수 있다.

 
 1. gfs로 쓸 파티션을 lvm으로 만든다. (공유 스토리지가 /dev/sda일 경우, 이 디스크는 node1과 node2에서 동시에 보여야 한다.)

  pvcreate /dev/sda
  vgcreate volGFS /dev/sda
  lvcreate  -L 8G volGFS
  pvscan
  vgscan

 

 2. gfs 파티션으로 포맷 (혹시 몰라서 저널은 3개로 넣었다. 이 값은 gfs의 node 개수를 의미한다.)

  mkfs.gfs2 -p lock_dlm -t cluster112:gfs1 -j 3 /dev/volGFS/lvol0

 

 3. gfs 파티션을 마운트
  

mount -t gfs2 -o upgrade /dev/volGFS/lvol0  /mnt/gfs

 

 4. /etc/fstab 에 마운트정보 삽입 

 /dev/volGFS/lvol0       /mnt/gfs                gfs2    defaults        0 0

 

 

>>>서비스의 시작과 설정
 양쪽노드에서 서비스를 하나씩 실행해서 마운트 한다.

 service cman start
 service clvmd start
 service gfs2 restart


 chkconfig cman on
 chkconfig clvmd on
 chkconfig gfs2 on
 chkconfig acpid off


>>>서비스의 확인

 

[root@VM1 mnt]# cman_tool nodes
 Node  Sts   Inc   Joined               Name
    1   M     12   2009-10-19 20:17:01  vm1.test.co.kr
    2   M     16   2009-10-19 20:17:01  vm2.test.co.kr


 [root@VM1 mnt]# cman_tool status
 Version: 6.2.0
 Config Version: 5
 Cluster Name: cluster112
 Cluster Id: 41720
 Cluster Member: Yes
 Cluster Generation: 16
 Membership state: Cluster-Member
 Nodes: 2
 Expected votes: 1
 Total votes: 2
 Quorum: 1
 Active subsystems: 8
 Flags: 2node Dirty
 Ports Bound: 0 11
 Node name: vm1.test.co.kr
 Node ID: 1
 Multicast addresses: 239.192.162.155
 Node addresses: 192.168.0.192

 


>>>주의 사항
 1. /etc/hosts 안에는 두 노드간 통신할 수 있는 ip가 사설로 되어 있어야 하며, 이 ip를 gigabit으로 연결되는 구성이어야 한다.
 /etc/hosts 내에 
 192.168.0.11 vm1.test.co.kr
 192.168.0.12 vm2.test.co.kr
 위와 같은 형태 여야 한다.

 2.두 노드에서 /etc/sysconfig/network 에는 hostname이 fqdn으로 vm1.test.co.kr 과 같이 설정되어 있어야 한다.
 3. acpid는 off되어 있어야 한다.

 

 

[출처] RedHat X 엔지니어 기술공유 까페 | 가우스 (http://cafe.naver.com/redhatx/1)

반응형

댓글()

쉘스크립트 암호화 (바이너리 파일로 변환) - shc, bash-obfuscate

리눅스/OS 일반|2014. 12. 31. 00:01
반응형

[방법1]

# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz

# tar zxvf shc-3.8.7.tgz

# cd shc-3.8.7

# make

# ./shc -r -v -T -f script.sh

 

최근에 (2021. 11) 확인해보니 간단히 레포지토리에서 받아올 수 있었습니다.

# yum install shc

 

* 참고

- script.sh.x 라고 생성된 파일이 바이너리 파일입니다.

- 스크립트 상단에 반드시 #!/bin/bash 가 있어야 변환됩니다.

- 스크립트 구동 가능 날짜 제한

# shc -e 31/12/2016 -m "The end" -f script.sh

// 2016년 12월 13일 이후에는 "The end" 라는 메세지가 출력되며 구동이 되지 않습니다.

* 단점 : sleep 등 스크립트 내 지연 작업이 있는경우 ps 명령으로 소스가 노출 됨

 

 shc-3.8.7.tgz

 

[방법2]

CentOS 8 에서 테스트 하였습니다.

# npm install -g bash-obfuscate
# bash-obfuscate script.sh -o script_new.sh

 

실제로는 바이너리 파일로 변환하는게 아니고 문자열을 쪼개서 변수에 넣고 변수를 조합하는 식으로 난독화 합니다.

변환 된 파일을 쉘스크립트 처럼 구동 하면 됩니다.

# sh script_new.sh

 

 

반응형

댓글()

iconv 로 파일 캐릭터셋 일괄 변경하기

리눅스/OS 일반|2014. 12. 31. 00:00
반응형

아래 내용으로 파일을 만들어 실행하면 됩니다.

 

#!/bin/sh
files=$(find . -type f -name "*.php")
for file in $files; do

iconv -c -f euckr -t utf8 $file > $file.tmp

mv -f $file.tmp $file

done

exit 0

 

[출처] 곽범생's Blog | 곽범생 (http://kwakyc87.tistory.com/102) 내용

반응형

댓글()

apr-1.4.2 및 apr-util-1.3.9 설치

리눅스/OS 일반|2014. 12. 30. 23:59
반응형

1. apr-1.4.2 설치

 

# cd /usr/local/src

# wget http://archive.apache.org/dist/apr/apr-1.4.2.tar.gz
# tar xvzf apr-1.4.2.tar.gz
# cd apr-1.4.2

# ./configure

 

[./configure 시 에러출력]

config.status: executing libtool commands
rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
config.status: include/apr.h is unchanged
config.status: include/arch/unix/apr_private.h is unchanged
 

위와 같은 에러 출력시 아래처럼 파일을 복사해주고 진행을 계속 합니다.

# cp -arp libtool libtoolT
# ./configure

# make

 

[make시 에러 출력]

make[1]: Entering directory `/usr/local/src/APM_setup/apr-1.4.2'
/bin/sh /libtool --silent --mode=compile gcc -g -O2 -pthread   -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE   -I./include -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I./include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include/arch/unix -I/usr/local/src/APM_setup/apr-1.4.2/include  -o passwd/apr_getpass.lo -c passwd/apr_getpass.c && touch passwd/apr_getpass.lo
/bin/sh: /libtool: No such file or directory
make[1]: *** [passwd/apr_getpass.lo] Error 127
make[1]: Leaving directory `/usr/local/src/APM_setup/apr-1.4.2'
make: *** [all-recursive] Error 1
 

위와 같은 에러가 나온다면 아래처럼 심볼릭 링크를 걸어주고 진행을 계속 합니다.

# ln -s /usr/bin/libtool /

# make clean

# make

# make install

 

2. apr-util-1.4.2 설치

 

# cd ..

# wget http://archive.apache.org/dist/apr/apr-util-1.3.9.tar.gz
# tar xvzf apr-util-1.3.9.tar.gz
# cd apr-util-1.3.9
# ./configure --with-apr=/usr/local/apr
# make
# make install

반응형

댓글()

64bit 에서 컴파일 오류. -fPIC 가 필요할때

리눅스/OS 일반|2014. 12. 30. 23:59
반응형

64비트에서 설치되지 않는 프로그램이 있습니다.

컴파일시 오류가 나면서 -fPIC 옵션을 같이 주어 설치하라는 메세지도 보이는데

이경우 아래와 같이 'CC=gcc -m64 -fPIC' 옵션을 주어 설치시킬 수 있습니다.

 

예)

./configure --enable-auth-module=mysql --enable-tcprules-prog=/usr/local/bin/tcprules --enable-logging=y --disable-many-domains --enable-domainquotas 'CC=gcc -m64 -fPIC'

반응형

댓글()

tar 파일 내용보기

리눅스/OS 일반|2014. 12. 30. 23:58
반응형

# tar -tvf 파일명.tar.gz

반응형

댓글()