#include<stdio.h>


char ps[1000][1000];

int ps_id[1000];

char ps_name[1000][1000];

char kill[100];



int main()

{

    FILE *fp;

    FILE *fp1;

    int id;

    fp1=fopen("psid.txt","r");

    int count=0,i,dis=0;

    char temp[100];

    system("ps -e > test.txt");

    fp=fopen("test.txt","r");

    fscanf(fp1,"%d",&id);

    while(fgets(ps[count],1000,fp)){

        count++;

    }

    for(i=0;i<count;i++)

        sscanf(ps[i],"%d %*s %*s %s",&ps_id[i],ps_name[i]);

    for(i=0;i<count;i++){

        if(strcmp(ps_name[i],"a.out")==0){    //a.out만 원하는 프로그램명으로 바꾸면 됨.

            if(dis==0)

                dis=1;

            else{

                sprintf(kill,"kill -9 %d",ps_id[i]);

                printf("%s\n",kill);

                system(kill);

            }

        }

    }



    return 0;

}


ps -e >> test.txt 명령어로 모든프로세스를 test.txt파일에 저장하고 파일을 읽어들인다.

멀티프로세스 서버 소켓을 사용하던 도중 자식프로세스가 죽지 않고 남아있어서 심심해서 작성해봤는데... 실질적인 문제는 이게 아니고 자식프로세스가 좀비로 변해버려서 죽지않아요 ㅠㅠ


이 좀비들....ㅋ.....

'System > Linux' 카테고리의 다른 글

리눅스 core file  (0) 2013.03.18
nohup  (0) 2013.03.18
리눅스 tee 명령어  (0) 2013.03.14
Mac Address 바꾸기  (0) 2012.06.28
Linux 디렉토리 구조  (0) 2012.06.07

간단한 Tip!!


리눅스에서 맥어드레스를 바꾸고 싶을때 사용해보자.


일단 ifconfig로 자신의 맥 어드레스를 확인한다.





맥 어드레스를 변경할때는 인터넷을 잠시 내려두고 작업해야 한다.


차례대로 ifconfig eth0 down을 이용해서 인터넷 서비스를 중지시키고, 


ifconfig eth0 hw ether Mac_address

를 하여 원하는 맥주소로 변경한 후에 ifconfig eth0 up으로 인터넷을 다시 서비스 시킨다.


다시 ifconfig를 사용하면, 맥주소가 바뀐것을 확인할 수 있으나,

인터넷은 사용이 불가능하다 ㅋㅋㅋ


왜냐하면 저는 공유기를 사용하는데 , 공유기에는 dhcp기능이 있다.

 이 기능을 무시하고 임의로 사용자가 ip 등을 새로이 설정하게 될 경우


dhcp와의 충돌로 인하여 제기능을 발휘하지 못하기 때문에 인터넷을 사용할 수가 없게 됩니다.

그 이유는 공유기에 이미 다른 아이피가 등록되어 있는데 임의대로 아이피를 바꾸면 인식을 하지 못하기 때문에 인터넷을 할 수 가 없다.

정히 수동으로 설정하고 싶으시면 공유기의 기능중 dhcp기능을 해제하면 된다.


'System > Linux' 카테고리의 다른 글

리눅스 core file  (0) 2013.03.18
nohup  (0) 2013.03.18
리눅스 tee 명령어  (0) 2013.03.14
프로세스 종료 프로그램  (0) 2012.07.19
Linux 디렉토리 구조  (0) 2012.06.07

case 변수 in

value1)

명령

;;

value2)

명령

;;

*)

명령

;;


ex)

#!/bin/sh


echo "색깔을 입력해주세요"

read color


case $color in

[Gg]reen)

        echo "green~!!"

;;

blue)

        echo "blue~!!"

;;

*)

        echo "defualt:/"

;;

esac



변수를 설정할때는 그냥사용하고 출력이나 연산이 필요한 곳, 변수를 호출할때는 $를 붙여준다.


ex)

VAR="Hello Shell"

echo $VAR



변수는 기본적으로 문자열을 받는다.

따라서 정수형변수를 선언할때는 delcare -i명령을 사용한다.


정수형이라 문자를 입력하면 디폴트값인 0이 출력된다. 또한 정수형이기때문에 실수는 입력을 받지 못함.

함수로 쉘 코드의 섹션을 정의할 수 있으며 이름을 정할 수 있다. 이름을 실행하면 함수호출이 된다.


function_name(){

block of code

}


ex)


#!/bin/sh


lister(){

echo "$STR"

echo "현디렉토리 위치 `pwd`"

}


STR="Hello World"

lister



함수안에서 값을 이용해야할때는 함수밖의 변수를 쓰면 값을 가져온다.

C언어처럼 lister(STR)이런식으로 하지 않아도 되요.

while loop


while <test-com> do <coms> done


test-com 이 true일때 do ,done사이의 문장을 실행한다.


ex)


#!/bin/sh


number=0

while [ number -lt 10 ]

do

echo "$number"

number=`expr $number + 1`

done

echo "done.."




for loop


for <loop-index> in <arg-list> do <coms> done


ex)


#!/bin/sh


for number in 1 2 3 4 5 

do

echo $number

done

echo "done.."




kernel module이란


커널에 동적으로 삽입,삭제할 수 있는 코드들의 묶음을 말한다.

모듈을 사용하는 이유는, 커널에 코드를 삽입하려면 코드를 삽입한 후에 컴파일을 한후에 재부팅을 해야 한다. 하지만 모듈을 사용한다면, insmod명령어 한 줄로 간단하게 코드를 삽입 시킬 수 있다.


lsmod : 현재 사용중인 모듈을 보여주는 명령어이다.



insmod : 모듈을 삽입하는 명령어.


rmmod : 모듈을 삭제한다.


모듈을 빌드 하기 위해서는 .c 파일과 함께 makefile도 만들어 주어야 한다.


KERNELDIR 에는 커널소스의 generic 헤더가 들어가야 하기 때문에, 현재 커널버전에 맞는 정확한 심볼릭 링크를 가지고 있는 build로 링크를 걸어준다.

obj-m 은 타겟이 되는 소스파일을 가르키는 것. 하나일때는 .o로 사용해도 상관없지만, 2,3개 이상일때는

모듈이름.objs := 1.c 2.c 와 같이 해주어야 함.

default 와 clean 밑에 명령어를 작성할때는 항상 탭을 해주어야 함.

저장한 후에 Makefile이 있는 곳에서 Make명령어를 실행시킨다.



QM_MODULES: Function not implemented 


라는 메세지는 모듈 기능을 지원하지 않게 커널이 빌드되어 있기 때문에 발생한다.

Make menuconfig에서 설정을 바꿔주면 된다.

'System > Kernel' 카테고리의 다른 글

Kernel 빌드 과정  (0) 2012.06.05

 

 

1. /

최상위 디렉토리로 출발점이 된다.

 

2. boot

부팅에 필요한 커널과, 핵심파일이 들어있다.

 

3. bin

슈퍼유저(root) + 일반 유저 가 사용할 수 있는 명령어가 들어있다.

 

4. sbin

슈퍼유저(root)용 명령어가 들어있다.

 

5. dev

일종의 장치관리자.

 

6. /usr/local/bin

Linux가 설치된 이후의 프로그램 명령어 모음

 

7. root

root 홈디렉토리

 

8.lib

시스템 운영 및 프로그램을 구동할 때 필요한 공유 라이브러리

'System > Linux' 카테고리의 다른 글

리눅스 core file  (0) 2013.03.18
nohup  (0) 2013.03.18
리눅스 tee 명령어  (0) 2013.03.14
프로세스 종료 프로그램  (0) 2012.07.19
Mac Address 바꾸기  (0) 2012.06.28

 

커널 2.4버전에 해당.

2.6이상부터는

[make dep] - [make clean] - [make bzImage] - [make modules] 를 make로 통합시킴.

 

tar.bz2 압축해제 방법:

 

1. tar xvfj *.tar.bz2

 

2. bzip2 -d *.tar.bz2

   tar xvf *.tar

j명령어를 사용하면 압축을 풀 소스가 bzip2로 압축된 것을 먼저 풀라는 뜻이다.

 

Kernel 2.4.27  버전에서 2.6.14.6  버전을 빌드하려했으나 자꾸 에러먹고 2.4.32 버전을 깐 후에 까니까 언제그랬냐는 듯이 잘 돌아간다. 왜그런지는 좀 찾아봐야할듯 ㅠㅠ

 

'System > Kernel' 카테고리의 다른 글

Kernel module ?  (0) 2012.06.07

기본 if 문법

 

 if test "taesun" = "taesun"

then

echo "TRUE"

else

echo "FALSE"

fi

exit 0

 

 

비교 연산자

 

산술 연산자

 

 

+ Recent posts