~/.bashrc 에 다음을 추가.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
~/.bashrc 에 다음을 추가.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "
mysql이 자꾸 죽으면서 워드프레스가 DB연결을 못하고 자꾸 에러를 띄운다.
InnoDB memory pool size가 기본으로 128M로 되어 있는데, 이걸 할당을 못하고 죽는 것 같다.
64M로 줄이자.
# vi /etc/mysql/conf.d/innodb.cnf [mysqld] innodb_buffer_pool_size = 64M
죽으면 사실 그냥 service mysql restart 해주면 되는데, 요거도 귀찮으니까 돌려서 죽으면 실행하게 스크립트를 만들자
# vi mysqlmon.sh #!/bin/bash linecount=`ps -aux | grep /usr/sbin/mysqld | wc -l` if [ "$linecount" = "2" ]; then echo "`date`: Working well" >> /var/log/mysqlmon/mysqlmon.log; else echo "`date`: Trying to recover..." >> /var/log/mysqlmon/mysqlmon.err; service mysql restart; echo "`date`: Done" >> //var/log/mysqlmon/mysqlmon.err; fi
crontab에 등록하자
# crontab -e */5 * * * * /root/mysqlmon.sh
log파일을 관리하도록 [Linux] logrotate 설정 글의 예제처럼 logrotate를 설정하자.
Windows에서 명령줄을 띄워서 작업할 때, 어떤 에러 메시지 등을 google에서 찾아보고 싶은 경우 같은 때, 나오는 메시지의 언어를 바꾸고 싶을 때가 있다. 이럴 때 “LANG” 환경 변수 등을 바꾸어도 그대로 에러 메시지 등이 우리말로 나온다. 요건 mingw 같은 환경에서 shell을 써도 마찬가지. 한국판 Windows를 깔면 기본이 CP949로 설정되어 에러 메시지 등이 우리말로 나오는 것인데, 다음과 같이 CHCP 명령을 이용하면 된다. 65001은 UTF-8이다.
CHCP 65001
참고: https://superuser.com/questions/269818/change-default-code-page-of-windows-console-to-utf-8
금 시세 기록을 위해 만든 python 스크립트
1. BeautifulSoup을 설치하자.
$ sudo apt-get install python-bs4
2. 네이버 금시세를 얻어와서 출력하자. Text file로 만들거니까..
# gold.py import requests from bs4 import BeautifulSoup page = 1 while (1): reqstr = 'http://info.finance.naver.com/marketindex/goldDailyQuote.nhn?page=' + str(page) req = requests.get(reqstr) html = req.text soup = BeautifulSoup(html, 'html.parser') my_date = soup.select( 'body > div > table > tbody > tr > td:nth-of-type(1)' ) my_values = soup.select( 'body > div > table > tbody > tr > td:nth-of-type(2)' ) if (len(my_values) <= 0): break row = 0 for title in my_values: print(my_date[row].text + '\t' + title.text) row = row + 1 page = page + 1
3. 매일 실행시키려면, crontab 등록을 위해 shell script를 하나 만들자
#/bin/sh python /home/dasomoli/src/gold.py > /mnt/NAS/Data/Gold/`date +%F`.txt
4. crontab에 등록하자
$ crontab -e
0 1 * * * /home/dasomoli/src/record_gold.sh
DB만들어서 기록하면, 한번 요청으로 끝나겠지만 귀찮고, 육아로 시간이 없으므로 오늘은 여기까지!
http://blog.naver.com/hyunsung1026/80145257300 에 정리가 잘 되어 있네요~ ^^
자주 쓰는 명령 몇 개만 정리하자.
adb shell [명령] : shell 또는 명령 실행(‘cat /proc/kmsg’ 라던가..)
adb reboot : reboot
adb reboot [bootloader | recovery] : reboot & [fastboot | recovery]모드 들어가기
adb logcat [TAG:LEVEL] [*:S] : logcat, 특정 TAG를 LEVEL(S,V,I,D,…)로 보기, *:S 넣으면 나머지는 Silent.
adb root : root 로 adbd 재실행
adb remount : system 파티션을 rw로 remount
adb push, pull : 파일 넣기, 빼오기, read/write 시스템 콜 이용으로도 사용 가능.
adb wait-for-devices [명령] : adb 연결 기다렸다 명령 실행
adb devices : 붙었나?
adb sideload <파일이름.zip> : OTA패키지인 파일이름.zip 을 adb 를 통해 업데이트. JB부터 추가
fastboot flash <파티션 이름> <파일명> : 파티션 이름에는 bootloader, boot, zimage, ramdisk, system, userdata, cache, recovery 등이 올 수 있다.
fastboot wait-for-devices : 윈도우즈는 그냥 명령 주면 대기하므로 필요없다. 리눅스용에서 사용.
fastboot [-w] flashall : 윈도우즈에서는 “set ANDROID_PRODUCT_OUT=D:\out\target\product\crespo” 해두고 하면 된다. -w 옵션주면 userdata 등 파티션 날리고 모두 flash
fastboot [-w] update <zip 파일이름> : update용 zip 파일(make updatepackage로 생성)로 업데이트, 역시 -w 옵션 주면 나머지 날림.
fastboot reboot-bootloader : fastboot 모드로 reboot
fastboot reboot : reboot.
fastboot getvar <Variable> : Variable 을 얻어옴. 전체는 all(“fastboot getvar all”)
fastboot devices : 붙었나?
참고에 매우 자세히 잘 정리되어 있다. 감사.
문자열 길이 구하기
${#string}
문자열 추출
${string:position}
${string:position:length}
문자열 조각 삭제
${string#substring}
string의 앞에서부터 가장 짧게 일치하는 substring 제거
${string##substring}
string의 앞에서부터 가장 길게 일치하는 substring 제거
${string%substring}
string의 뒤에서부터 가장 짧게 일치하는 substring 제거
${string%%substring}
string의 뒤에서부터 가장 길게 일치하는 substring 제거
이용 가능한 SMTP가 있는 경우 shell 에서도 메일을 보낼 수 있다. 쉘 스크립트 상에서 메일을 보내거나 할 때 유용하다. 가장 편한 방법이 sendemail 을 이용하는 것 같다.
다음과 같이 하면 된다. 아래 예제는 무인증 SMTP를 이용할 경우의 예제이다.
$ sendEmail -f “보내는이@메일” -s <SMTP 서버 주소> -t “받는이@메일” -u “메일 제목” -m “메일 내용”
Perl script 를 이용해서도 간편히 보낼 수 있는데, 예제는 다음과 같다.
한글 메일을 보내고 싶으면 perl 스크립트로 아래와 같이 MIME::Lite 를 사용하면 된다.
$ sudo apt-get install libmime-lite-perl
참고 :
http://nixcraft.com/shell-scripting/11895-shell-script-send-email-via-smtp-username-password.html
http://caspian.dotconf.net/menu/Software/SendEmail/
http://perldoc.perl.org/Net/SMTP.html
http://search.cpan.org/~rjbs/MIME-Lite-3.028/lib/MIME/Lite.pm
처음 시작은
#!/bin/sh
Perl 처음 시작은
#!/usr/bin/perl -w
argument는 $0 $1 $2 …
argument 처리는 아래 형식.
Perl에서 Argument 처리는
$ARGV[0], $ARGV[1], $ARGV[2]… $#ARGV 는 argument 개수
공백으로 나눠진 파라미터 프린트
gawk ‘{print $1}’
/로 나눠진 마지막 파라미터 프린트. cut 도 사용가능
gawk -F / ‘{print $NF}’
파일명 얻기는
basename 경로명
디렉토리명 얻기는
dirname 경로명
절대경로 얻을 때는
readlink -e 상대경로
특정 문자열 치환은
sed -e “s/문자열/문자열/g”
if는 이런 형식. 비교식은 http://www.gnu.org/s/bash/manual/bash.html#Bash-Conditional-Expressions 참고
elif
명령;
else
명령;
fi
for each 는 이런 형식
case는 위의 argument 처리 참고.
명령의 결과 저장은 `명령`
변수의 값으로 치환한 문자열은 “$변수 포함 문자열”
그냥 그대로 문자열은 ‘문자열’
끝에만 자를 땐
tail -n 숫자
앞에만 자를 땐
head -n 숫자
문자열 있는 줄만 얻고 싶을 땐
grep “문자열”
정규식으로 찾은 문자열 포함된 줄만 얻고 싶을 땐
grep -P “^문자열[0-9a-zA-Z-_/]*$”
basic http 인증은 https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+clients 참고
html 얻어올 때는
curl “주소”
MSDN : Creating Shell Extension Handlers
The Complete Idiot’s Guide to Writing Shell Extensions
Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9
Shell Extension Context Menu Sample
Registry에 등록하는 건 Post-Build Step 에서 Regsvr32를 이용해서 등록한다. 커맨드는 다음과 같다.
Registry에 등록을 해제하는 건 다음과 같은 커맨드로 가능하다.
Registry 등록 관련 절차는 ShellExtReg.cpp 내의 RegisterFileMenu() 와 UnregisterFileMenu() 내부를 참고하면 좋다.