SEARCH
TOOLBOX
LANGUAGES
LinuxTips

LinuxTips

From Chaehyun

(Difference between revisions)
Jump to: navigation, search
(특정 도메인 먼저 검색)
(ubuntu에 apache php5 설치)
 
(10 intermediate revisions not shown)
Line 221: Line 221:
== bash 팁 ==
== bash 팁 ==
 +
* #!/bin/bash
* 현재 스크립트의 디렉토리 : SCRIPT_HOME=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
* 현재 스크립트의 디렉토리 : SCRIPT_HOME=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
* 상위 디렉토리 : SCRIPT_HOME=$(readlink -f $(dirname $(readlink -f ${BASH_SOURCE[0]}))/..)
* 상위 디렉토리 : SCRIPT_HOME=$(readlink -f $(dirname $(readlink -f ${BASH_SOURCE[0]}))/..)
Line 255: Line 256:
* ~/.ssh/id_dsa.pub 파일을 복사한 다음,  
* ~/.ssh/id_dsa.pub 파일을 복사한 다음,  
* 원하는 서버로 접속하여 ~/.ssh/authorized_keys 에 추가 (한 줄에 하나 씩 여러 개도 가능)
* 원하는 서버로 접속하여 ~/.ssh/authorized_keys 에 추가 (한 줄에 하나 씩 여러 개도 가능)
-
* 혹시 안될 경우
+
* 혹시 안될 경우 (CentOS)
** sudo vim /etc/ssh/sshd_config  
** sudo vim /etc/ssh/sshd_config  
** StrictModes no
** StrictModes no
Line 285: Line 286:
* sudo apt-get install phpmyadmin
* sudo apt-get install phpmyadmin
* sudo apt-get install php5-mysql
* sudo apt-get install php5-mysql
 +
* sudo apt-get install php5-curl
* sudo /etc/init.d/apache2 restart
* sudo /etc/init.d/apache2 restart
Line 348: Line 350:
** ClientAliveCountMax 3
** ClientAliveCountMax 3
* sudo /etc/init.d sshd restart
* sudo /etc/init.d sshd restart
 +
== 랜덤하게 라인 고르기 random line sampling ==
 +
* awk 'BEGIN {srand()} !/^$/ { if (rand() <= .01) print $0}'
 +
* cat fancy.txt | awk 'BEGIN { srand() } rand() >= 0.998 { print;  }' > fancy_sample_date.txt
 +
 +
== sed recursive하게 적용하기 ==
 +
* find . -type f -print0 | xargs -0 sed -i 's/<title>SKPOP Open Platform/<title>Code Sprint 2012/'
 +
 +
== mysqldump를 이용한 mysql 백업 ==
 +
<pre>
 +
#!/bin/bash
 +
filename=$(date +%Y%m%d%H%M)
 +
mysqldump -ucodesprint -p codesprint > /mnt/backup/tmp/$filename.sql
 +
tar czfP /mnt/backup/mysql/$filename.tar.gz /mnt/backup/tmp/$filename.sql
 +
rm -f /mnt/backup/tmp/$filename.sql
 +
find /mnt/backup/mysql/ -ctime +3 -exec rm -f {} \;
 +
</pre>
 +
 +
== 어느 명령어가 실행되나? ==
 +
* which python
 +
 +
== 메모리 사용량 기록하기 ==
 +
* top -p 7518 -d 3600 -n 24 | grep java > java_log.txt &

Latest revision as of 06:54, 25 April 2014

Contents

리눅스 명령어 정리

명령어 reference

아파치

  • 재시작
    • /usr/sbin/apachectl -k restart
    • /usr/sbin/apachectl -k graceful
    • /etc/rc.d/init.d/httpd start

mysql

  • /etc/init.d/mysqld start
  • /etc/rc.d/init.d/mysqld start
  • php 5.2 버전 업을 하기 위해서는
    • /etc/yum.repos.d/centos-test.repo 파일을 생성하고 아래 구문 추가
[c5-testing]
name=CentOS-5 Testing 
baseurl=http://dev.centos.org/centos/5/testing/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
    • yum update php

screen

  • .screenrc 샘플
screen -h 10000 -t xlos 2
screen -h 10000 -t xlos 1
screen -h 10000 -t xlos 0

bind c screen -t xlos
bind ^C screen -t xlos

bindkey "\033[15~" select 0
bindkey "\033[17~" select 1
bindkey "\033[18~" select 2
bindkey "\033[19~" select 3
bindkey "\033[20~" select 4
bindkey "\033[21~" select 5
bindkey "\033[23~" prev
bindkey "\033[24~" next

vbell off

defscrollback 10000
caption always "%{kg}%?%-Lw%?%{wb}%n*%f %t%?(%u)%?%{kg}%?%+Lw%?"

파일 묶기

  • tar : tape archive 에서 따온 말
  • tar -xzvf tmp.tar : 묶은 파일 풀기
    • x : extract
    • z : gzip
    • v : verbose (장황한)
    • f : file
  • tar -cvzf mt.tar mt : 파일 묶기
    • c :create
    • v : verbose
    • f : file
  • tar -tvf mt.tar : 리스트만 보기
    • t : list

압축

  • gzip garbage.txt : 압축하기
  • gzip -l garbage.txt.gz : 압축 정보 보기
  • gunzip garbage.txt.gz : 압축 해제
    • gunzip -N garbage.txt.gz : 원본 파일로 압축 해제
  • ls -laR $HOME | gzip > filelist.gz : 홈 디렉토리 아래 존재하는 모든 파일 목록을 압축
  • gunzip -c filelist.gz | more : 파일을 삭제하지 않고, 결과를 stdout 으로 출력 (=zcat 과 동일)


현재 디렉토리만 출력하는 명령어

  1. echo ${PWD##*/}
    • PWD는 현재 path를 가지고 있는 환경변수
    • ##*/ : */를 만날 때 까지 모든 스트링을 제거하라
    • 결국 현재 디렉토리만 남는다
  2. pwd | rev | awk -F \/ '{print $1}' | rev
    • pwd : 현재 디렉토리 출력
    • rev : string 반전
    • awk -F : 다음 delimiter를 사용해서 문자열 나누기

디렉토리 분류

/ 루트 디렉토리
/bin 기본 명령어
/dev 장치를 쓸 때 필요한 특수 파일 위치
/etc 환경 설정 파일 위치
/home 일반 사용자의 홈 디렉토리
/lib 공유 라이브러리와 커널 모듈
/lost+found 부팅할 때 파일 시스템에 이상이 있는지 진단, fsck 명령어에 의해 사용 파일 시스템 복구 후, 복구된 파일이 저장됨
/mnt cd-rom과 플로피 장치에 대한 마운트 포인트 제공
/opt 크기가 큰 리눅스 패키지 설치함
/root 시스템 관리자 홈 디렉토리
/sbin 시스템 운영에 필요한 명령어 위치
/tmp 임시 파일을 저장하는 위치
/usr 패키지 설치 시 이 디렉토리에 설치됨
/var 가변 자료가 저장, 메일, 로그 등
/usr/bin 응용프로그램 설치 시 일반 사용자 명령어가 추가됨
/usr/sbhin 응용프로그램 설치 시 관리자 명령어가 추가됨
/var/log 시스템 로그 파일
/var/spool/mail 서버의 메일 임시 보관 장소


shareable unshareable
static /usr

/opt

/etc

/boot

variable /var/mail

/var/spool/news

/var/run

/var/lock

       /bin       Essential command binaries                                 
       /boot      Static files of the boot loader                            
       /dev       Device files                                               
       /etc       Host-specific system configuration                         
       /lib       Essential shared libraries and kernel modules              
       /media     Mount point for removeable media                           
       /mnt       Mount point for mounting a filesystem temporarily          
       /opt       Add-on application software packages                       
       /sbin      Essential system binaries                                  
       /srv       Data for services provided by this system                  
       /tmp       Temporary files                                            
       /usr       Secondary hierarchy                                        
       /var       Variable data   

파이프 라인

  1. | : 왼쪽 명령의 표준 출력 (stdout)을 오른 쪽 명령의 표준 입력 (stdin)으로 사용
    • who | tr -s " " | cut -f3 -d " "
    • ps -ef | more
  2. 리다이렉션
    • stdin : 0, stdout : 1, stderr : 2
    • 대부분 파이프의 리다이렉션은 명령 라인의 끝에서 출력 방향을 다시 지정하여 파이프 라인의 필터된 출력을 파일이나 화면 상에 출력한다.
    • grep user /etc/pass*d | sort > sort.out
    • grep user < /etc/pass*d 2> grep.err | sort > sortd.user 2> sort.err
      • grep할 때 에러가 발생하면, grep.err 파일로 저장하고, sort한 경과를 sortd.users 파일로 저장하는데, 에러가 발생하면 sort.err 파일로 저장

출처 : http://rockdrumy.tistory.com/entry/Linux-Pipes%ED%8C%8C%EC%9D%B4%ED%94%84-%EB%AA%85%EB%A0%B9

환경 변수

  • .bashrc : bash가 실행될 때 마다 수행됨
  • .bash_profile : bash가 login shell로 사용될 때 (처음 login할 때) 수행됨
  • 보통은 .bash_profile에서 .bashrc 를 부르는 형태

인증키 사용

  • 참고글1
  • 참고글2
  • 개인키 : 각 사용자들만 가지고 있는 키
  • 공개키 : 서버에 심을 키. 유출 해도 상관 없음
  • 각 사용자는 개인키/공개키 쌍을 만든 다음, 공개키를 서버에 복사해두면, 개인키로 접근할 수 있다.
    • 정리 : 내가 가지고 있는 거 : private key, 서버가 가지고 있는 거 : public key
    • server에서 ssh-copy-id -i $HOME/.ssh/id_rsa.pub hduser@skp004 한 번 더해줘야 함??

sed (stream editor)

  • 참고글
  • ed 명령어와 grep 명령어를 합친 명령어
  • sed는 라인을 하나 씩 읽고, 수정하고, 출력하므로 기억장치 안의 버퍼를 사용하지 않는다. --> 매우 큰 파일을 처리할 때 주로 사용됨
  • cat /etc/sudoers | sed /'hello world$'/d > /tmp/sudoers.tmp
    • /etc/sudoers 파일에서 hello world로 끝나는 라인을 삭제하고, 나머지 라인들을 /tmp/sudoers.tmp 파일에 저장

chattr

  • chattr - change file attributes on a Linux second extended file system
  • A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

bash 팁

  • #!/bin/bash
  • 현재 스크립트의 디렉토리 : SCRIPT_HOME=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
  • 상위 디렉토리 : SCRIPT_HOME=$(readlink -f $(dirname $(readlink -f ${BASH_SOURCE[0]}))/..)

squid 실행

  • /etc/rc.d/init.d/squid start

screenrc 설정 파일

screen -h 10000 -t xlos 2
screen -h 10000 -t xlos 1
screen -h 10000 -t xlos 0

bind c screen -t xlos
bind ^C screen -t xlos

bindkey "\033[15~" select 0
bindkey "\033[17~" select 1
bindkey "\033[18~" select 2
bindkey "\033[19~" select 3
bindkey "\033[20~" select 4
bindkey "\033[21~" select 5
bindkey "\033[23~" prev
bindkey "\033[24~" next

vbell off

defscrollback 10000
caption always "%{kg}%?%-Lw%?%{wb}%n*%f %t%?(%u)%?%{kg}%?%+Lw%?"

ssh 암호 없이 로그인하기

  • ssh-keygen -t rsa
  • ~/.ssh/id_dsa.pub 파일을 복사한 다음,
  • 원하는 서버로 접속하여 ~/.ssh/authorized_keys 에 추가 (한 줄에 하나 씩 여러 개도 가능)
  • 혹시 안될 경우 (CentOS)
    • sudo vim /etc/ssh/sshd_config
    • StrictModes no
    • sudo /etc/init.d/sshd restart

maven 설정

  • mvn -Declipse.workspace=/home/1000649/Works eclipse:add-maven-repo
  • project directory에서
    • mvn test-compile

network 속도 측정

nslookup

  • dig @8.8.8.8 naver.com
  • nslookup (엔터)
    • server 8.8.8.8
    • skp000.reople.com
  • /etc/resolve.conf
    • 이 설정은 서비스 재시작을 하지 않아도 적용이 됩니다.

ubuntu에 apache php5 설치

  • http://www.rain9.com/wp/?p=501
  • sudo apt-get install apache2
  • sudo apt-get install php5 libapache2-mod-php5
  • sudo apt-get install mysql-server
  • sudo apt-get install phpmyadmin
  • sudo apt-get install php5-mysql
  • sudo apt-get install php5-curl
  • sudo /etc/init.d/apache2 restart

apache 경로

  • /etc/apache2 (apache2 설정 경로)
  • /etc/apache2/apache2.conf (아파치 설정 파일)
  • /etc/apache2/mods-available (모듈 설정 파일 경로)
  • /etc/apache2/mods-enabled (모듈 설정 파일 enabled 경로, mods-available 경로의 실제 모듈 설정 파일을 심볼릭 링크파일로 걸어놓아야 작동됨)
  • /etc/apache2/conf.d (아파치 conf 파일 경로, charset, phpmyadmin.conf, security)
  • /etc/apache2/sites-available (site 설정 경로, virtualhost 설정도 여기에 파일로 생성)
  • /etc/apache2/sites-enabled (site 설정 enabled 경로, sites-available 설정 파일을 심볼릭 링크 파일을 sites-enabled 경로에 만들어놔야 작동됨)

centOS 에서 apache 실행

  • /etc/init.d/httpd restart

jar 만들기

password 한 번에 바꾸기

  • echo -e "linuxpassword\nlinuxpassword" | passwd linuxuser

ubuntu에서 python-mysql 설치하기

  • apt-get install mysql-server python-mysqldb

ubuntu에서 SunJDK Sun Java 설치하기

scp 사용법

  • scp -P 22 -r /programming/ftp [email protected]:/home/jaemng
    • src 먼저, dest
    • -r 옵션은 recursive
  • scp -P 22 [email protected]:/home/jaemng/.emacs .
    • 원격지에 있는 파일을 가져오는 것도 가능

mysql csv file import

  • LOAD DATA LOCAL INFILE '/mnt/users/chaehyun/data/user-reactiontag-to-things.out' INTO TABLE `userhistory` FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n'

ubuntu에서 php 설치 경로

  • /etc/php5/apache2/php.ini

비번 없이 sudo 사용하기

  • vi /etc/sudoers
    • hadoop ALL=(ALL) NOPASSWD: ALL

특정 도메인 먼저 검색

  • domain name
  • sudo vim /etc/resolv.conf
    • search reople.com 을 제일 첫 줄에 넣어주면, 항상 reople.com 을 붙여서 먼저 검색하게 됨

ssh 끊김 방지

  • /etc/ssh/sshd_config 에 추가
    • ClientAliveInterval 600
    • ClientAliveCountMax 3
  • sudo /etc/init.d sshd restart

랜덤하게 라인 고르기 random line sampling

  • awk 'BEGIN {srand()} !/^$/ { if (rand() <= .01) print $0}'
  • cat fancy.txt | awk 'BEGIN { srand() } rand() >= 0.998 { print; }' > fancy_sample_date.txt

sed recursive하게 적용하기

  • find . -type f -print0 | xargs -0 sed -i 's/<title>SKPOP Open Platform/<title>Code Sprint 2012/'

mysqldump를 이용한 mysql 백업

#!/bin/bash
filename=$(date +%Y%m%d%H%M)
mysqldump -ucodesprint -p codesprint > /mnt/backup/tmp/$filename.sql
tar czfP /mnt/backup/mysql/$filename.tar.gz /mnt/backup/tmp/$filename.sql
rm -f /mnt/backup/tmp/$filename.sql
find /mnt/backup/mysql/ -ctime +3 -exec rm -f {} \;

어느 명령어가 실행되나?

  • which python

메모리 사용량 기록하기

  • top -p 7518 -d 3600 -n 24 | grep java > java_log.txt &