Linux 하위 디렉토리 파일 벌크 처리

Ubuntu,Cent..등 공통

.svn 디렉토리 삭제 방법

방법1

$ find . -name .svn -print0 | xargs -0 rm -rf

pint0와 xarts-0 의 0는 모두 숫자 0(Zero) 입니다. 서브디렉토리까지 알아서 찾아 가면서
모두 삭제해 줍니다. ^^

방법2

$ find . -type d -name .svn
(이렇게 하면 .svn이라는 디렉토리만 검색을 합니다)
$ rm -rf `find . -type d -name .svn`
(검색되는 것들을 다 삭제)

ShellScript로 만들기

#!/bin/sh
echo "recursively removing .svn folders from"
pwd
rm -rf `find . -type d -name .svn`

방법3

위에서 한거 방향바꾸기

find -name "\.svn" -exec rm rf {} \;

find . -type f -iname '*.cpp' -exec mv -t ./test/ {} \+

find . -type f -exec rm -Rf {} \;
find . -type f -exec mv {} . \;

쓰다보면 익숙해지겠지…

파일 sudo로 카피

sudo find . -type f -name kor*.png | sudo xargs -i cp {} ~/testimg/

 

샘플코드 보다보면 외워짐

파일개수가 너무 많으면 다음과같은 메세지를 보게된다.

Argument list too long

http://www.linuxjournal.com/article/6060

이렇게 되면 처리가 힘들다.

mv나 cp소스코드를 편집해야할까….?

linux files in sub directory bulk action

MySql view current open connections 열린 커넥션 확인하기

다음 명령어로 서버에 접속use this command to connect mysql server
mysql -u {accountname} -p {password} -h {hostname}

mysql> SHOW STATUS WHERE variable_name = 'Threads_connected';
mysql> show processlist;
mysql> select {databasename};

이렇게 입력해서 몇번 해보면 뭐가뭔지 다 알 수 있겠지just type it

좋은자료 올려주신 양키분들께 감사thanks..

MySQL License 사용권한 문서

1.   GPL 듀얼 라이선스 정책

무료사용시에는 GPL 정책을 따르며 제품을 구매하면 구매한 라이선스에 따라 자유롭게 이용이 가능합니다.

①    MySQL Commercial License

상용 라이센스는 사용자 어플리케이션의 소스 코드가 공개되는 것을 원하지 않는 조직과 Oracle Corporation 사이의 계약입니다. 상용 라이센스를 가진 사용자는 그에 상응하는 서비스를 보증받습니다. 또한 상용 라이센스를 가진 사용자가 어플리케이션을 오픈소스로 만드는 데에는 아무런 제약이 없습니다. 사용자의 어플리케이션이 무료 소프트웨어로 등록된 GPL에 상응하는 무료 소프트웨어 라이센스가 아니거나, OSI호환이 아닌 경우에 MySQL을 배포하고자 한다면, 먼저 MySQL 제품에 대한 상용 라이센스를 획득해야 합니다.

MySQL을 배포하는 대표적인 예는 다음을 포함합니다.

MySQL을 포함하고 있는 소프트웨어를 고객에게 팔아 그 소프트웨어를 고객이 소유한 장비에 설치하는 경우

고객이 소유한 장비에 기본적으로 MySQL을 설치해야하는 소프트웨어를 파는 경우

MySQL을 포함하고 있는 하드웨어 시스템을 고객에게 팔아서 고객이 있는 곳에 설치하는 경우

상용 라이센스는 사용자 어플리케이션의 소스 코드가 공개되는 것을 원하지 않는 조직과 Oracle Corporation 사이의 계약입니다. 상용 라이센스를 가진 사용자는 그에 상응하는 서비스를 보증받습니다. 또한 상용 라이센스를 가진 사용자가 어플리케이션을 오픈소스로 만드는 데에는 아무런 제약이 없습니다

 

②    비영리 교육기관 개인적인 사용

만일 사용자가 비영리 단체나 교육기관에 속해 있다면, 사용자의 어플리케이션이 오픈소스/GPL 라이센스를 사용하는 무료 소프트웨어 프로젝트임을 공개할 것을 권장합니다.
그렇게하면 GPL라이센스에 의해 MySQL 소프트웨어를 무료로 자유롭게 사용할 수 있습니다.
만일 사용자가 GPL 등록을 하지 않을 중요한 이유가 있다면, 상용 라이센스를 구입해야 합니다.
비영리 기관이 개방적으로 보증되는 상용 라이센스를 자유롭게 선택할 수 있다는 것을 유념하십시오.

만일 사용자가 개인적으로 자신의 어플리케이션 용으로 MySQL 소프트웨어를 사용한다면, 그것을 배포하지 않는 한 무료입니다. 만약 그것을 배포한다면, 상용 라이센스나 GPL중 양자 택일하여야 합니다.

사용자가 자신의 어플리케이션을 무료 데모 버전으로 배포하는 경우에도 위의 규칙이 그대로 적용된다는 것을 인지하십시오.

 

 

2.  Community 버전을 상용으로 사용할 경우

 

①    GPL라이선스를 가진 소프트웨어를 개작하거나 새로운 프로그램에 포함시킨 경우의 상업적 배포 방법

  1. 개작한 프로그램을 상업적으로 판매하는 것은 가능합니다.
  2. 단, 이 경우 개작된 소프트웨어의 소스코드를 GNU GPL에 따라 공개해야하고 제3자가 이 소스코드를 GPL라이선스하에 새로운 프로그램을 만들고 재배포하는 것이 허용되어야 합니다.
  3. http://www.gnu.org/licenses/gpl-faq.ko.html#TOCLinkingWithGPL

②    GPL소스가 포함된 실행파일을 프로그램 내에서 exec, fork등을 이용해 실행하는 경우

  1. 이 경우에는 plug-in형태로 보아서, 내가 만든 것은 GPL을 적용하지 않아도 됩니다.
  2. http://www.gnu.org/licenses/gpl-faq.ko.html#GPLAndPlugins
  3. 링킹해서 사용하는 경우는 프로그램이 같은 메모리를 사용하는 것이고, exec와 fork의 경우에는 서로 다른 메모리 영역에 사용되는 것입니다.
  4. 파이프와 소켓, 명령행 인자 등은 두개의 독립된 프로그램간의 통신을 위해서 사용되는 매커니즘으로 모듈들이 이러한 형식을 사용한다면 모듈들은 독립적인 프로그램으로 볼 수 있습니다.

③    GPL은 영어 전문만을 인정하고 다양한 해석과 편법이 있을 수 있습니다. GPL 라이선스는 번역을 허용하지 않고 영어 전문만을 법적으로 인정하기 때문에 세부적인 파악을 위해서는 링크된 전문을 참고하시기 바랍니다.

  1. GNU General Public License (version 2) or proprietary EULA
    http://en.wikipedia.org/wiki/GNU_General_Public_License
  2. http://www.gnu.org/licenses/gpl.html
  3. MySQL 규정 : http://www.mysql.com/about/legal/

 

 

3.  MySQL 상용 라이선스 구입 정보

①    가격정보

  1. CPU소켓 개수당으로 가격이 책정된다

https://shop.oracle.com/pls/ostore/f?p=dstore:2:2102507919736081::NO:RIR,RP,2:PROD_HIER_ID:58095029061520477171389

Product Type Price
MySQL Cluster Carrier Grade Edition Subscription (1-4 socket server)The industry’s leading real-time, highly available database combining the flexibility of a relational database. Support ₩934,375 – ₩33,637,500

세부정보보기

MySQL Cluster Carrier Grade Edition Subscription (5+ socket server)The industry’s leading real-time, highly available database combining the flexibility of a relational database. Support ₩1,868,750 – ₩67,275,000

세부정보보기

MySQL Enterprise Edition Subscription (1-4 socket server)Most comprehensive set of MySQL production, backup, monitoring, modeling, development, administration tools, and support. Support ₩467,188 – ₩16,818,768

세부정보보기

MySQL Enterprise Edition Subscription (5+ socket server)Most comprehensive set of MySQL production, backup, monitoring, modeling, development, administration tools, and support. Support ₩934,375 – ₩33,637,500

세부정보보기

MySQL Standard Edition Subscription (1-4 socket server)Enables the delivery of high-performance and scalable Online Transaction Processing (OLTP) applications. Support ₩186,875 – ₩6,727,500

세부정보보기

MySQL Standard Edition Subscription (5+ socket server)Enables the delivery of high-performance and scalable Online Transaction Processing (OLTP) applications. Support

 

4.  MySQL을 이용한 프로그램 오픈소스로 공개시 준수사항

①    GPL 규정에 따라 사용자들이 쉽게 소스코드를 다운받을 수 있도록 소스코드가 홈페이지나 공개 커뮤니티에 공개되어야 한다.

②    MySQL을 이용한 프로그램 개발시 GPL라이선스 예외상황

  1. GPL은 소프트웨어를 타인에게 배포할 때 발생한다. 해당 소프트웨어를 이용하여 서비스를 하는 경우(자체구축)에는 영향을 받지 않는다.
  2. PHP 웹 프로그램의 경우 소켓을 이용한 통신을 하기 때문에 GPL 규정으로부터 안전하다.
  3. MySQL컨넥터를 별도 모듈로 분리시킬 경우 소프트웨어의 본체는 GPL 규정에 영향을 받지 않는다. – MySQL과 함께 다른 DB를 사용 가능하도록 만든 프로그램을 배포하고 사용자가 MySQL을 선택하는 경우, GPL로부터 안전하다..
  4. 위의 예외상황은 언제든지 변경될 수 있으며 Oracle사의 정책에 따라 다르게 해석될 수 있습니다.

 

 

 

 

참고자료

MySQL KOREA 라이선스 설명 : http://www.mysqlkorea.co.kr/sub.html?mcode=product&scode=08

MySQL 라이선스 관련 QnA : http://teratec.co.kr/mysql/m_faq.htm

GNU GPL라이선스 규정 해설 : http://www.gnu.org/licenses/gpl-faq.ko.html

WIKI GNU라이선스 : GNU General Public License (version 2) or proprietary EULA
http://en.wikipedia.org/wiki/GNU_General_Public_License

GNU라이선스 : http://www.gnu.org/licenses/gpl.html

MySQL 규정 : http://www.mysql.com/about/legal/

 

Python 리눅스 배포하기

파이썬 이외 파일 다 지우고, 모두 다 컴파일 후, py소스코드 파일 지우기

find -not -name "*.py" -delete 
python -m compileall .
find -name "*.py" -delete

파이썬 소스코드 배포하면 안될경우 이렇게 한다.

단, 이렇게 하려면… .실행시킬 때 python main.py가 아닌 python main.pyc로 명령어를 만들어놔야한다.

 

Linux Tomcat 실행 스크립트

d

#!/bin/bash
#
# tomcat7     This shell script takes care of starting and stopping Tomcat
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat7
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Release implementation for Servlet 2.5 and JSP 2.1
# Short-Description: start and stop tomcat
### END INIT INFO

## Source function library.
#. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/java/default
export JAVA_OPTS="-Dfile.encoding=UTF-8 \
  -Dcatalina.logbase=/var/log/tomcat7 \
  -Dnet.sf.ehcache.skipUpdateCheck=true \
  -XX:+DoEscapeAnalysis \
  -XX:+UseConcMarkSweepGC \
  -XX:+CMSClassUnloadingEnabled \
  -XX:+UseParNewGC \
  -XX:MaxPermSize=128m \
  -Xms512m -Xmx512m"
export PATH=$JAVA_HOME/bin:$PATH
TOMCAT_HOME=/usr/share/tomcat7
SHUTDOWN_WAIT=20

tomcat_pid() {
  echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}

start() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ] 
  then
    echo "Tomcat is already running (pid: $pid)"
  else
    # Start tomcat
    echo "Starting tomcat"
    ulimit -n 100000
    umask 007
    /bin/su -p -s /bin/sh tomcat $TOMCAT_HOME/bin/startup.sh
  fi

  return 0
}

stop() {
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Stoping Tomcat"
    /bin/su -p -s /bin/sh tomcat $TOMCAT_HOME/bin/shutdown.sh

    let kwait=$SHUTDOWN_WAIT
    count=0;
    until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
    do
      echo -n -e "\nwaiting for processes to exit";
      sleep 1
      let count=$count+1;
    done

    if [ $count -gt $kwait ]; then
      echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
      kill -9 $pid
    fi
  else
    echo "Tomcat is not running"
  fi

  return 0
}

case $1 in
start)
  start
;; 
stop)   
  stop
;; 
restart)
  stop
  start
;;
status)
  pid=$(tomcat_pid)
  if [ -n "$pid" ]
  then
    echo "Tomcat is running with pid: $pid"
  else
    echo "Tomcat is not running"
  fi
;; 
esac    
exit 0

d

python 프로세스 목록 얻기, 숫자세기

파이썬으로 멀티스레드 대신 OS에 프로세스를 돌리는 프로그램을 만들게 된다면… 쓰게되는 코드

#리눅스에서 실행중인 프로세스 목록 프린트하기
from subprocess import Popen, PIPE
for line in Popen(['ps', 'aux'], shell=False, stdout=PIPE).stdout:
    print line
import os
data = [(int(p), c) for p, c in [x.rstrip('\n').split(' ', 1) \
    for x in os.popen('ps h -eo pid:1,command')]]

How to get the active process list on a Linux machine using python

http://stackoverflow.com/questions/1091327/processlist

http://stackoverflow.com/questions/884650/how-to-spawn-parallel-child-processes-on-a-multi-processor-system

http://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=214

http://www.seobangnim.com/zbxe/?document_srl=836

나중에 정리해놔야지 라고 하지만…언제할지…