질문 10가지.. -_-;; lilo와 rpm, process,pidof,시그널..등..

요즘 리눅스공부중입니다만... 여러가지 질문사항이 있읍니다..
낱개로 올리려니 게시판도 지저분해지고 답변주실분들도
짜증날것 같아서 이렇게 묶어서.. ^_^;;
나름대로 답을 찾아보려고 했지만 그다지....
아직 열심히 답을 궁리/찾아보는 중입니다...
답변드리는분께 미리 감사드리면서..10개입니다..
1)
LILO가 부팅때 lilo.conf를 참조한다는 얘기를 봤읍니다..
/boot/boot.b등도 참조한다는것 같았는데...
사실인가요? 그렇다면 어떻게 이게 가능하죠?
MBR에 설치된 lilo는 512byte도 되지 못하는 아주 작은 프로그램
이잖아요.. 부팅되기도 전인 그 시점에 어떻게 filesystem안에
있는 파일을 access할수 있다는건지???
2)
파이프를 쓰는것과 리다이렉션을 쓰는것은 뭐가 다른가?
파이프를 화일을 매개로한 몇개의 리다이렉션으로 나눠도
결국 과정은 같은데... 그렇담 파일처리부분이
Write-back등의 기능으로 캐쉬되므로.. 디스크에 직접 access가
없을수 있다고 본다면, 사실상 차이가 없지 않은지??
named pipe를 쓴다면 더더욱 차이가 없다고 보여진다..
맞는말인가?? 아니면, 내가 모르는 파이프와 리다이렉션을
구분짓는 차이점이 있는것인가??
3) rpm 설치하는데 의존성실패가 자꾸 걸린다..
libc.so.5 가 없다고 하는데, 나에겐 /lib/libc.so.6 이 있다...
암튼 그래서 cdrom에서부터 /lib/libc.so.5 를 구해서 복사를
했지만, 여전히 인식하지를 못한다..
rpm은 화일을 직접 확인하는게 아니라 rpm설치시에 자신이
구축하는 데이터베이스를 이용하는것인가??
그렇다면 우리는 항상, rpm단위로만 설치,운용을 해야한다는것인지??
그렇다면, 위와같이 화일 하나가 망가져서 그 화일만을 복사해넣었을
때와 같은 경우는 어떻게 rpm에다가 알려줘야하나??
또, 5와6은 버전같은데, 그냥 libc.so.6을 이름만 바꿔서 libc.so.5라고
복사해 넣어버리면 안되나?? 하위호환성은 보장될것 같은데??
- rpm의존성에 대한 좋은 자료등이 있으면 소개좀 부탁드립니다..
패키지 설치해보려는것마다 족족 의존성 실패로군요...
책에선 경험에 의존한다지만.. 이렇게 막막해서야.. -
4)
내 시스템을 보니 proc과 misc의 inode 번호가 1번으로 같더라...
어떻게 된일인가?? inode의 초반부 번호는 예약이 되어있는걸로
알고 있는데,.. 기억이 가물가물하지만.. inode1번은 bad sector이고
inode2번이 root인걸로 기억하는데..
어떻게 proc과 misc가 같은 1번이라는 번호를 가질수가 있나??
더구나 그 안의 내용물조차 틀리다... 어떻게된건가...
5) 디렉토리의 크기가 4K로 같은것 같다... 이건 어떤 의미가 있는건가?
실제로 그 디렉토리를 위한 크기가 맞는건가?
그러면 그 안의 파일등의 수가 많아지면 4K에서 더 늘어날수도 있는것인
지??
6) `` (따옴표 아닌 악센트 그레이브) 와 $( ) 의 차이는??
거의 같은것 같은데...
7) 어떤 process는 logout되면 세션과 함께 죽는데...보통..
헌데 어떤 process는 init으로 붙어서 계속 실행이 되더군요...mpg123같
은거.
nohup을 쓰지 않았어도 말입니다...
이런 차이점은 어디서 오는것입니까? 이건 해당 프로그램자체가 그렇게
설계가 되어있기때문인가요?? 아니면 커널에서 선택하는건가요?
부모process가 죽을때 child에게 신호가 갈테고..(아마 SIGTERM정도?)
그때 보통은 종료되지만.. mpg123같은건 자체적으로 핸들러가 init으로
붙으면서
실행은 계속되는건가요?? 그게 아니면... 왜 어떤건 살고 어떤건 죽는건
지??
8) pidof 가 단지 killall5의 symbolic-link인데.. 어떻게 둘이 서로 완
전히
다르게 동작하는거죠? 마치 전혀 다른 프로그램인듯..
9) pidof를 보니... pstree에서 보이는 어떤 프로세스는 찾아내면서
어떤건 못찾던데.. 예를 들면, 'login'프로세스나 현재 로긴쉘(login바
로밑의 bash)
라던가 init이나 sendmail 은 분명히 프로세스가 돌고있음에도 PID를
못찼더군요..(루트로 로긴된 상태였음)
헌데 그 외의.. 로긴쉘밑의 서브쉘 (login-bash-bash)라든지 보통프로그
램들은
PID를 잘 찾아내더군요...
더 웃기는건... #pidof login 이나 #pidof "login" 에서는 못찼더니..
혹시나해서 /proc/밑에서 cmdline에 있는걸 참조해서...
#pidof "login -- root" 라고 했더니 PID를 찾아내더군요...
이건 어떻게 이해해야합니까? 왜 어떤 프로세스는 PID를 찾아내고,
어떤 프로세스는 찾아내는거죠?? 또 login의 경우
왜 이런 웃기는 상황이 벌어지는건지...
10) SIGSTOP(9) 와 SIGTSTP(20)의 차이점은?
SIGINT(2)와 SIGTERM(15),SIGKILL(9) 의 차이점은??
답변 주시는분께 미리.. 감사드립니다..
아는만큼만...
1) 참 신기하지만,,, lilo 의 코드 안에 ext2 혹은 minix 등 일부
파일시스템을 직접 억세스 할 수 있는 코드가 들어있는 듯 합니다.
lilo 설치가 잘 되지 않는 filesystem 도 있는 것을 봐서...
2) 리다이렉션은 셸에서 제공하는 것으로, 결국 파이프라고 알고 있습니다
3) 예. 독자적인 DB 에 엑서스 합니다. 뭐 rpm 쓰기 싫으시면 deb를
쓰셔도 되고, 아예 linux from scratch 같이 모두 소스 받아다가
직접 설치하셔도 되죠. )
저도 자세히는 모르지만, 얼핏 들은 말로는 리눅스는 static
linking 이기 때문에 하위호환성을 완전히 기대하기 힘들다는...
(정확하진 않지만 라이브러리 링크 주소가 고정되어 있어서
라이브러리에 큰 변화가 있을 시에는 주소가 바뀌는 경우가
많아서 다 없어진다는..)(아..어설프게 아는 거라 말하기가 겁나네요)
호환성도 마이너 정도는 되는 경우가 많으나 메이저 넘버는
기대 안 하시는게 좋을 듯 합니다.
아 그리고 rpm 의존성 문제는, 같은 포멧인 rpm 을 개발하는 주체가
너무 많아서 그러지 않을까 생각합니다. deb로 바꾸세요 ^^
4) 저도 잘은... ^^
5) 디렉도 하나의 특수한 파일이기 때문에, 아마 그 파일의 최소 사이즈가
그 정도 되지 않을까요? 이것도 저도 잘 모르겠네요 ..
6) 음..$() 도 비슷한 역할을 하네요..
둘 다 shell 의 문법이니, bash맨페이지 에 나와있지 않을까요?
7) 저도 이상하게 생각했던 것인데.. 답은 저도 잘 모르겠네요...
gcc의 기본 옵션일 수도..
8) C 프로그램에서 argv[0] 를 보고 "pidof" 이면 pidof의 동작을, "killall5"
이면 killall5 의 동작을 하는 듯 하네요.'
왜 다른 성질의 프로그램을 같은 명령어 안에 넣었는지는...
9) 10) 저도 잘은...
소스를 보면 동작을 이해하기 쉽지 않을까 합니다.
10) 같은 것은 스티븐스의 Advanced Porgramming in Unix Environ 같은
책 보면 잘 나와있지 않을까요?
Re^2: 아는만큼만...
아.. 고맙습니다.. ^^;;;
일일이 모두 답변을 주시니..이거참..
아무래도 좀더 공부를 많이 한다음에 확실한 답을 구해봐야
겠읍니다.. ^^;;
리눅스.. 공부하기 정말 방대한 분량이군요..
소스를 다 디벼봐야 명확한 답이 나올것 같은데..-_-;;
암튼 그래도 상당한 도움이 되었읍니다..
고맙습니다..
댓글 달기