./configure 2>&1 | tee out.txt
configure 결과를 화면에 뿌리고 텍스트 파일에 저장한다

Read from an input and write to a standard output and file.

Syntax

tee [OPTION]... [FILE]...

-a
--append Append to the given FILEs, do not overwrite.
-i ignore interrupt signals.
--help Display the help screen.
--version Display the version.
Examples

ls *.txt | wc -l | tee /dev/tty count.txt

In the above example the ls command would list all .txt files in the current directory, take a word count (wc) by the amount of lines (-l) and the output displayed to the /dev/tty (terminal) will be sent to the count.txt.

Note: Because the above example did not take advantage of the -a or append option if the count.txt file already existed it would have been overwritten.

Related commands

cat


iPhone 에서 작성된 글입니다.
Posted by code cat
int is_little_endian()
{
    long val = 1;
    char *c = (char *) &val;
    return (*c == 1);
}

'리눅스 > 스크립트/유틸' 카테고리의 다른 글

dd (주로 빈 파일 만들기, loopback 마운팅 할 때 쓰임)  (0) 2011.08.02
tee 커맨드  (0) 2011.06.19
busybox cross-compile  (0) 2011.06.01
mount 옵션비교 atime, noatime, relatime  (0) 2011.06.01
xargs 사용법  (0) 2011.04.24
Posted by code cat
설정
make menuconfig 실행
컴파일
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
(Makefile 안에 CROSS_COMPILE 수정해도 된다)
인스톨
make CONFIG_PREFIX=target_directory ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- install

 

(static 컴파일)make CONFIG_PREFIX=target_directory ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-  CFLAGS=--static LDFLAGS=--static  install

 


확인
file busybox 로 크로스컴파일 잘 되었나 확인
 busybox: ELF 32-bit LSB executable, ARM ...
 
Posted by code cat
atime, noatime, relatime는 ext2, ext3와 같은 파일 시스템을 위한 마운트 옵션이다.  Debian 계열에선 default로 atime으로 설정되어 있다.

 참고로 안드로이드에서는 system과 data 이미지를 yaffs2로 마운트 할 때 noatime 옵션을 쓴다.


atime
이 옵션을 설정할 경우, 리눅스는 특정 파일이 마지막으로 엑세스되었던 때를 기록한다. sysadmins이나 메일 프로그램같은 프로그램에서 유용하게 쓰일 수 있다.  하지만 항상 엑세스 할때마다 write을 해주어야 하므로(기록을 해야 하므로), 퍼포먼스 이슈가 있다.

noatime
이 옵션을 사용시, atime처럼 파일이 엑세스될때마다 기록하는 것과 달리 파일이 변하거나 쓰기 오퍼레이션시에만 디스크에 기록된다. 비록 시스템 퍼포먼스를 크게 이끌어 올릴 수 있으나, 간혹 특정 프로그램이 제대로 동작하지 않는 경우가 있다.

relatime
이 옵션을 사용한 파일 시스템은 파일에 대한 엑세스 타임이 파일이 변환된 타임보다 오래 됬을경우에만 업데이트 한다. atime과 noatime 의 중간이다.

결론: relatime 을 활용하자.

'리눅스 > 스크립트/유틸' 카테고리의 다른 글

dd (주로 빈 파일 만들기, loopback 마운팅 할 때 쓰임)  (0) 2011.08.02
tee 커맨드  (0) 2011.06.19
엔디안 처리하는 함수  (0) 2011.06.06
busybox cross-compile  (0) 2011.06.01
xargs 사용법  (0) 2011.04.24
Posted by code cat
리눅스/커널2011. 5. 1. 01:24
커널의 선점조건
예전에는 커널은 비선점형이었으나 2.6 버젼부터 선점형으로 바뀌었다. 그러기 위해서 각 프로세스 스택의 thread_info에 preempt_count 라는 변수를 추가하였고, 이 값은 락의 숫자가 증가함에 따라 증가하고 감소하면 같이 감소한다. preemt_count 값이 0일 때에 비로서 선점이 가능하다. 락이 해제될 시 preemt_count 값이 0 이면 락을 푸는 코드는 need_resched() 를 통하여 스케쥴이 필요한지 체크한다. 한편 커널은 태스크가 커널 블록내에 있거나 단도직입적으로 schedule() 를 호출시에도 선점 가능하다.

'리눅스 > 커널' 카테고리의 다른 글

Documentation/arm/booting  (0) 2011.09.25
Linux 3.0 Kernel  (0) 2011.07.31
커널 스레드  (0) 2011.05.01
커널 초기화  (0) 2011.04.20
시스템콜 (미완성)  (0) 2011.04.18
Posted by code cat
리눅스/커널2011. 5. 1. 01:23
커널 스레드와 일반 프로세스와 다른 점 중 가장 두드러진 부분은 커널 스레드는 어드레스 스페이스가 없다는 것이다(mm 포인터 = NULL)

커널 스레드는 커널 스페이스에서만 실행되며 유저공간으로 컨텍스트 스위칭 하지 않는다. 하지만 일반 프로세스와 같이 스케쥴되고 선점 가능하다.

대표적인 커널 스레드로는 flush 와 ksoftirqd가 있으며 ps -ef 로 커널 스레드 리스트를 확인할 수 있다. 커널 스레드는 오직 다른 커널 스레드만이 생성 할 수 있다


iPhone 에서 작성된 글입니다.

'리눅스 > 커널' 카테고리의 다른 글

Linux 3.0 Kernel  (0) 2011.07.31
커널선점  (0) 2011.05.01
커널 초기화  (0) 2011.04.20
시스템콜 (미완성)  (0) 2011.04.18
asmlinkage 에 대한 설명  (0) 2011.04.15
Posted by code cat
1. rootdir1 라는 특정 폴더 아래 특정 파일들을 rootdir2라는 폴더 아래, 나머지 패스가 같은 형태로 카피하고 싶을 때,

find . -name "*.c" | xargs -t -i cp {} {}

-t: xargs를 통해 구성된 명령어를 표준 에러로 출력
-i: xargs에 전달된 라인 전체를 뒤에 나오는 명령어의 인자로 사용
디폴트로 라인 전체를 의미하는 기호는 {}



출처: http://blog.naver.com/siyang6?Redirect=Log&logNo=30047770322


2. xargs를 이용한 복수의 command를 처리하기(update)

find . -name "*.c" | xargs -I {} sh -c 'echo -n {} >> c_files.txt; stat -c %Y {} >> c_files.txt'

위와 같이 하면 하위 폴더 내에서 모든 C로 끝나는 파일들을 찾아, 파일이름과, 파일의 날짜를 c_files.txt파일에 저장한다.


Posted by code cat
리눅스2011. 4. 22. 09:11


가끔 Ubuntu에서 make menuconfig 할 일이 생긴다.
그때 ncurses 를 설치하라고 하는데, 설치해봐도 안된다고 불평한다.

그럴땐, sudo apt-get install libncurses5-dev 를 해보자.
make menuconfig가 잘 될 것이다. 

 


'리눅스' 카테고리의 다른 글

Linux: umask  (0) 2012.01.03
JBD error message "barrier-based sync failed"  (0) 2011.08.17
EXT4 파일 시스템 굽기  (0) 2011.08.02
VMWare virtual machine cannot resume c0000006 에러  (0) 2011.06.27
/opt, 리눅스 패키지 설치  (0) 2011.04.20
Posted by code cat
리눅스2011. 4. 20. 23:15

이 디렉토리는 기본적으로 인스톨 되는 것을 제외한 모든 소프트웨어 및 애드온 패키지를 위해서 준비된 디렉토리이다.  여기에 설치될 어떤 패키지 간에, /opt/'package' 혹은 /opt/'provider' 디렉토리에 따로 정적 파일들을 두어야 한다.(package는 소프트웨어 패키지 이름이고, provider는 제공자의 LANANA(Linux Assigned Names and Numbers Authority)에 등록된 이름이다)


보통의 배포버젼들은 /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, /opt/man을 안 만들지만, 로컬 시스템 관리자를 위해서 준비되어 있으며, 패키지들은 'front-end' 형식의 파일들로 이 디렉토리들에 놓여질 파일들을 제공한다.(만약 이러한 디렉토리들이 없다해도 작동하는데는 문제가 없어야 한다.)


유저에 의해 사용될 프로그램들은 /opt/package/bin에 위치한다.  만약 여기 있는 패키지가 UNIX manual pages를 가지고 있다면, /opt/package/man 에서 찾을 수 있다.  이 곳의 구조는 /usr/share/man 안의 서브구조와 같은 형태를 지녀야 한다.  variable한 패키지 파일들은 /var/opt에 설치 되어야 한다.


호스트 특정 설정 파일들은 /etc/opt에 설치된다.

어떤 사항에서도(파일 시스템의 특정 위치에 위치해야만 작동하는 특수 경우를 제외한 예) /var/lock /dev의 디바이스 락 파일 ) 다른 패키지 파일들은 /opt, /var/opt, 그리고 /etc/opt 외에 존재해서는 안된다.  배포판들은 /opt에 소프트웨어를 설치할 수도 있으나, 로컬 시스템 관리자에 의해 설치된 소프트웨어들을 지우거나 변형시키면 안된다.


/opt를 add-on 소프트웨어 형태로 사용하는 방법은 UNIX 커뮤니티에 이미 널리 알려진 방법이다.  The System V Interface 와 Intel Binary Compatibility Standard에 기반을 둔 The System V 애플리케이션 바이너리 인터페이스는 위에 서술된 형태와 매우 유사한 /opt를 제공한다.


일반적으로 말해서, 패키지를 지원할 모든 데이터들은 /opt/'package'에 위치해야 하며 이는 /etc/opt/'package'와 /var/opt/'package' 및 /opt에 예약 된 디렉터리에 카피되어질 파일들도 포함한다.  설치된 배포판과 설치된 소프트웨어간의 충돌을 피하기 위해 /opt를 이용한 배포판에 대한 약간의 제약 사항은  필요할 수 밖에 없다.  특히 이는 몇몇 바이너리 소프트웨어에서 볼 수 있는 고정된 path 이름에 큰 영향을 받는다.

/opt/'provider' 밑의 디렉터리의 구조는 소프트웨어 패키지에 달려 있으며, 패키지들은 /opt/'provider'/'package'에 설치되고 /opt/package 또한 유사한 구조를 따르는 걸 권장한다.  이 외에 방법 중 유효한 것은 /opt/'provider'/lib 혹은 /opt/'provider'/bin 에 설치 된 파일들을 가진 패키지 지원이 있겠다.


Posted by code cat
리눅스/커널2011. 4. 20. 08:53



다음은 커널 이미지를 만드는 과정이다.


부트로더와 부트스트랩은 다르다. 부트가 첫단계 스테이지라고 생각한다면 부트스트랩은 두번째단계로 리눅스커널 이미지를 올려준다.

'리눅스 > 커널' 카테고리의 다른 글

Linux 3.0 Kernel  (0) 2011.07.31
커널선점  (0) 2011.05.01
커널 스레드  (0) 2011.05.01
시스템콜 (미완성)  (0) 2011.04.18
asmlinkage 에 대한 설명  (0) 2011.04.15
Posted by code cat