Category Archives: Linux / Unix

diff , patch 사용방법

간단한건데 안쓰니까 자꾸까먹네 ;;

이름        diff – 두 파일의 차이점을 비교한다.
사용법     diff [options] from-file to-file
옵션으로는 자주쓰는게
       -u     unified 출력 형식을 사용한다.
       -r     두 디렉토리를 비교할 때, 모든 하위 디렉토리는 재귀적으로(recursively) 비교한다.
       -N    –new-file    디렉토리 비교에서, 어떤 파일이 한 디렉토리에만 있다면 다른 디렉토
리에는 비어었는 파일이 있는 것처럼 비교한다. (간단하게 디렉토리내 새파일도 비교)
NAME       patch – apply a diff file to an original
SYNOPSIS       patch [options] [originalfile [patchfile]]
                      but usually just
                      patch -pnum <patchfile
이게 다인거같다 ㅇㅇ…
옵션으로 들어가는 -p는 patchfile 내 경로를 ‘ / ‘ 를 기준으로 하나를 벗겨낸다.
             /u/howard/src/blurfl/blurfl.c
          setting -p0 gives the entire file name unmodified, -p1 gives
             u/howard/src/blurfl/blurfl.c
          without the leading slash, -p4 gives
             blurfl/blurfl.c
man page 너무 잘되있다zz

시그널

 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX


시그널 이름 설명
SIGHUP 터미널을 읽어버렸을때 발생한다.
SIGABRT 프로그램의 비정상종료시 발생한다.
SIGINT Control-C 나 DELETE 키를 입력했을때 발생한다.
SIGIO 비동기적인 입출력이 발생했을때
SIGKILL 프로세스를 죽이기 위해서
SIGPIPE 단절된 파이프에 write 할경우 발생
SIGSEGV 잘못된 메모리 참조(주로 포인터를 잘못 썼을때)
SIGSTOP 프로세스의 일시중단 (Ctrl+z)
SIGSUSR1 사용자를 위해 정의된 시그널



SIGNULL …. 은 아니고 SIGNAL (시그날 인가 ;)
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/Signal/SignalHow
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/Signal/SignalHow2
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/1/kill

런레벨 runlevel

1. 런레벨 확인 방법

Code:
runlevel
N 2

또는

Code:
who -r
        실행-수준 2 2010-02-01 12:40


2. 런레벨 변경  (실행중 바뀌므로 주의)

Code:
telinit N (N은 런레벨 숫자)

출처 : http://www.debianhelp.co.uk/runlevels.htm


3. 데비안/우분투 런레벨 구조

Quote:
* 0 – Halt
* 1 – Single
* 2 – Full multi-user with display manager (GUI) 기본값
* 3 – Full multi-user with display manager (GUI)
* 4 – Full multi-user with display manager (GUI)
* 5 – Full multi-user with display manager (GUI)
* 6 – Reboot

출처 : http://zoobave.blogspot.com/2007/08/deb … ittab.html

4. 레드헷 계열 런레벨 구조

Quote:
0 – 시스템 중지(halt)
1 – 단일 사용자 모드
2 – NFS를 제외한 다중 사용자 모드(만 네트워크와 연결되어 있지 않으면 런레벨
3과 같다)
3 – 모든 기능이 작동하는 다중 사용자 모드(default)
4 – 사용하지 않음
5 – X 윈도우 부팅(xdm, gdm)
6 – 리부팅(reboot)

출처 : http://debianusers.org/seminar/seminar5 … ervice.txt

 
우분투에서 왜 자꾸 런레벨이 2로 뜨는지 몰랐다…(2년동안쓰면서 !)
http://ubuntu.or.kr/viewtopic.php?p=4209

한글 zip 파일 풀기

9.04 까지만해도

unzip 명령어에 -O 라는게 있어서
unzip -O cp949 파일명
이런식으로 한글파일도 깔끔하게 풀수있었다 ..
근데 9.10에서는 이게 사라졌다!!..(그냥은 안된다 뭐 옵션줘서 컴파일해야되는거로앎)
우분투 채널 보니까 스크립트를 만들어서 쓰더라 (인코딩변환후 리네임방법)
perl과 ruby 스크립트중
 ruby가 맘에들어 ruby를 쓰기로했다.
#!/usr/bin/ruby
# libzip-ruby1.8 패키지를 설치한 후 사용할 수 있습니다.
# 사용법: $ ruby unzip_cp949_to_utf8 zipfile.zip
require 'fileutils'
require 'zip/zip'
require 'zip/zipfilesystem' # ruby 1.8.x
require 'iconv'

def unzip
   Zip::ZipFile.open(ARGV[0]) do |zipfile|
      zipfile.each do |f|
         # libzip-ruby1.9 아직 없음. 그래서 아래 문장 주석 처리
         #utf_string = f.name.encode("utf-8") # for ruby1.9 or higher
         # cp949 파일 이름을 utf-8로 변환
         utf_string = Iconv.conv("UTF-8", "CP949", f.name) # for both ruby1.8.x and ruby1.9.x
         FileUtils.mkdir_p(File.dirname(utf_string))
         zipfile.extract(f, utf_string)
         puts utf_string
      end
   end
end
unzip

unzip

그냥은 안된다 …
sudo apt-get install rubygems  로 루비 gem을 설치후
gem install zip/zip  으로 zip 라이브러리를 설치해준다
그다음에 네번쨋 줄쯤에 require rubygems 를 해주면 잘된다
삽질하고나서 읽어보니까 libzip-ruby 한방이면 되는거같기도하다 ;..(설명서를 읽자!)
http://ubuntu.or.kr/viewtopic.php?p=44412#p44412
Debian 8, ruby 2.1 에서는
sudo gem install zip iconv
가 필요
————————————-
업데이트
루비 2.1
#!/usr/bin/ruby
require 'fileutils'
require 'zip'

def unzip
	Zip::File.open(ARGV[0]) { |zipfile|
		zipfile.each  {|f|
			# cp949 파일 이름을 utf-8로 변환
			utf_string = f.name.force_encoding("CP949").encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "_") # for ruby1.9 or higher
			FileUtils.mkdir_p(File.dirname(utf_string))
			#zipfile.extract(f,utf_string)
			f.extract(utf_string)
			puts utf_string
		}
	}
end
unzip

 

ubuntu samba 설정

sudo apt-get install samba

/etc/samba/smb.conf 수정
# 동작하는 그룹명
   workgroup = WORKGROUP
# 시스템 설명
   server string = %h server (Samba, Ubuntu)
# 예제파일을 참고하여
;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700
#공유폴더 생성
[Share]   #폴더명
comment “WebShare”
valid users = Only
path = /home/smb
read only = yes
browsable = yes
유저 추가
sudo smbpasswd -a Only
유저 삭제
sudo smbpasswd -x Only
삼바 재시작