.bash_profile과 .bashrc의 차이점은...
.bash_profile은 login시 적용되고, .bashrc는 non-login시 적용된다.
로그인 상태에서 새로운 터미널을 오픈할때가 대표적인 non-login의 예이다.
이를 구분하는 이유는 로그인시마다 시스템의 상태를 검사하는 루틴을 실행하고자 할 경우, .bash_profile과 .bashrc파일이 분리되어 있지않다면 터미널이 오픈될때마다 매번 시스템 상태를 점검하는 루틴이 실행될 것이다.
2011년 6월 6일 월요일
2011년 6월 5일 일요일
Virtualization
* kvm으로 vm 만들기
- sudo apt-get install qemu kvm
- sudo apt-get install libvirt-bin - qemu-img create machine_name.img -f raw 1G - kvm -m 512 -cdrom /home/user/ubuntu-10.10-server-amd64.iso -boot d machine_name.img * Network/etc/network/interface
----------------------------------------------------------------------------------
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
bridge_maxwait 0
----------------------------------------------------------------------------------
* 실행하기 - sudo /usr/sbin/brctl addbr br0 - sudo qemu-system-x86_64 -hda /path/to/hda.img -net nic,macaddr=$macaddress -net tap (or kvm -no-acpi -m 512 machine_name.img) :$macaddress = 임의의 MAC 주소 * Redirecting- qemu-systems-x86_64 –m 400 –hda fedora.img –redir tcp:2222::22
* Bridge STP (Spanning Tree Protocol) Enabling- brctl show
- brctl stp <bridge-name> on
rsyoung@descartes:~$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.2226c7f7ac47 yes tap1
virbr0 8000.000000000000 yes
virbr1 8000.000000000000 yes
rsyoung@descartes:~$ * tap 생성 - check /dev/net
- $ mknod /dev/net/tun c 10 200 - setup the tap0 interface with an ip address (e.g. 192.168.0.1)
- tap0 interface creation
* $ sudo tunctl - ip assign
* $ sudo ifconfig tap0 192.168.100.1 up
2011년 1월 24일 월요일
유용한 리눅스 명령어...(업데이트중..)
* sticky bit
“Sticky” means that even if multiple users have write permission on a directory,
only the owner of a file can delete the file within a sticky directory.
* list up partitions
$ cat /proc/partitions
* partition editor
$ gparted
* mpeg4 --> mp3 conversion
$ ffmpeg -i <mpeg4 file> -b 192k <mp3-filename.mp3>
* NFS Client version & Stat
Client rpc stats:
calls retrans authrefrsh
25530 0 0
Client nfs v3:
null getattr setattr lookup access readlink
0 0% 6864 26% 25 0% 832 3% 2054 8% 1 0%
read write create mkdir symlink mknod
15272 59% 43 0% 9 0% 0 0% 0 0% 0 0%
remove rmdir rename link readdir readdirplus
12 0% 0 0% 1 0% 4 0% 2 0% 105 0%
fsstat fsinfo pathconf commit
278 1% 26 0% 0 0% 0 0%
* Remote NFS version check
program 100003 version 2 ready and waiting
program 100003 version 3 ready and waiting
[rsyoung@ui01 CDF]$ whereis nfs
* Filesystem Block Size
dumpe2fs 1.39 (29-May-2006)
Block size: 4096
[root@wn1038 ~]#
* condor queue에 있는 모든 job을 강제로 종료하기
awk 'print $1}'`; condor_rm -forcex $g;done
* worker node retrieving using "seq"
$(seq -f wn20%02g.rsyoung.org 01 12) ; \
do echo "[ $sv ]"; ssh $sv 'df -h /tmp' ; done
* onevm list에 나오는 uniq한 사용자 축출
awk -F " " '{print $2}' | sort | uniq | wc -l
* History Command
$ !4 <-- 4번째 명령실행
* Ubuntu Firewall Enable/ Disable
: ufw = uncomplicated firewall
* Ubuntu에서 nologin Account 생성하기
$ sudo useradd -s /usr/sbin/nologin <account_name>
* 큰파일 여러조각으로 만들고 복원하기
$ split --bytes = 1m /path/to/large/file
/path/to/output/file/prefix
/path/to/output/file/prefix
$ cat prefix* > xyz
* ip 주소만 축출하기
ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'* 특정시간이 이전에 수정된 파일 찾아 지우기
find . -ctime +0 -exec rm -f {} \;
* 특정 파일보다 이후에 생성된 파일 찾기
touch -t 201103010000 <filename> find . -type f -newer ../20110301 -exec ls -l {} \;
ip address del 192.168.0.100 dev eth0
* pdf 파일 잘라내기
vim /etc/modprobe.d/blacklist.conf
* 특정 파일보다 이후에 생성된 파일 찾기
- 찾은 후 파일크기 총합 구하기
cat files.txt | awk -F " " '{sum += $5} END {print sum}' * ip 주소 삭제하기
* pdf 파일 잘라내기
pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf
* modprobe blacklist
vim /etc/modprobe.d/blacklist.conf
2011년 1월 3일 월요일
ARM에서 clean, flush, invalidate
Kernel Study중 나왔던 질문에 대해 정리한 내용입니다.
- ARM Developer's Guide에 나온 설명을 기반으로 말씀드리면, Cache에 쓰이는 용어가 flush/ invalidate/ clean이라고 보면되고, Write Buffer에 사용하는 용어가 Drain이라고 일단 구분하면 되겠습니다. Cache에서 Flush란 Cache Line의 Dirty Bit를 0으로 reset 시키는 것입니다. 메모리에 반영은 없습니다. 반면 Clean은 Dirty Bit가 1로 Set된 것을 모두 메모리에 반영시키는 것입니다. 반영시킨다는 것은 Write Buffer가 존재하면 WB에 쓰기가 수행될 것입니다. 그럼 Cache Line에서 Clean을 통해 메모리에 반영하기 위해 WB에 썼다면 WB의 내용을 모두 메모리에 반영해야 할 것입니다. 이를 Drain이라고 정리하면 될 것 같습니다. (여기서 주의할 사항은 ARM Cache에 쓰이는 Flush라는 용어가 우리가 흔히 사용하는 Flush와는 다른 것이고 오히려 Clean과 의미가 유사합니다.)
- 한가지 주의 깊게 보아야 할 용어가 Invalidate입니다. 커널 소스와 책을 통해서 느낀 점은 Invalidate가 두가지 의미로 사용된 다는 점입니다. 첫번째는 Cache Flush와 같은 의미로 사용될 때가 있습니다. 즉 Dirty Bit를 무효화 (Invalidate) 시킨다는 의미로 사용될 때가 있고, Cache Line에서 Valid Bit를 무효화 (Invalidate) 시킨다는 의미로 사용될 때가 있습니다. 후자의 경우는 Cache Line 전체를 활성화 비활성화 시킨다는 점에서 Flush와는 완전 다른 개념입니다. 따라서, 이 부분들을 잘 고려하고 문맥을 파악해서 Invalidate이 어떤 의미로 사용되었는지 파악하면 될것 같습니다. 책의 설명을 빌리자면 "메모리를 설정할 때 변경된 것을 지원할 경우, 캐시의 모든 영역이나 일부 영역을 플러시할 필요가 생길 수 있다. "Invalidate"란 용어가 "flush"라는 용어 대신 사용된다."
피드 구독하기:
글 (Atom)