ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 프로세스
    리눅스 2022. 5. 25. 17:09

    프로세스의 구조

     

    - 리눅스 프로세스는 핵심이라고 할 수 있을 정도로 핵심이니 잘 알아 둘 것!

     

    - 리눅스 프로세스는 부모와 자식 관계로 구성되어 있는데 어느 하나라도 관계가 깨져있는 프로세스가 없음.

    ==> 서로 끈끈하게 연결

     

    systemd 가 가장 처음에 만들어진 프로세스 

     

    ex) ~] pstree | grep bash   (bash의 구조를 보여주세요)
                    |-sshd-+-sshd---sshd---bash-+-grep(bash의 자식들)

     

     

     

     

     

    ex)

     

    ~] wc
    1 2 3 4 5
    6 7 8 9 10
          2      10      21     (라인 수, 단어 수, 문자 수(공백문자포함))
    ~] wc < /etc/hosts   (원래 wc(word count)는 키보드로 입력받는 건데 파일명을 입력하면 파일의 정보도 숫자로 알려줌)
      2  10 158

     

    ex)

     

    ls -l ls.out
    -rw-rw-r--. 1 cloud cloud 79 May 23 13:09 ls.out
    ~] ls -l ls.out > ls.ok   ==>(ls.out을 ls.ok라는 파일로 저장해주세요)
    ~] cat ls.ok
    -rw-rw-r--. 1 cloud cloud 79 May 23 13:09 ls.out

    ==>       '>' 이 기호로 인해서 파일에 저장을 하고 출력도 함

     

     

    ~] ls -l ls.out ls1.out > ls.ok
    ls: cannot access ls1.out: No such file or directory
    ~] cat ls.ok
    -rw-rw-r--. 1 cloud cloud 79 May 23 13:09 ls.out
    ~] ls -l ls.out ls1.out 2> ls.ok
    -rw-rw-r--. 1 cloud cloud 79 May 23 13:09 ls.out
    ~] cat ls.ok
    ls: cannot access ls1.out: No such file or directory

     

     

    ~] ls -l ls.out ls1.out > ls.ok 2>&1  ==>(ls1.out을 1번 리다이렉트로 지정해주시고 2번 리다이렉트는 1번으로)
    ~] cat ls.ok
    ls: cannot access ls1.out: No such file or directory
    -rw-rw-r--. 1 cloud cloud 79 May 23 13:09 ls.out

     

     

     

    - 앞에 있는 명령 1번 디스크립터와 뒤에 0번 디스크립터가 파이프로 연결 됨.

     

    ~] ls -l /tmp | wc -l    (ls의 프로세스와 wc의 프로세스가 결합)
    =>42     

     

    - cp, rm 명령 처럼 뒤에 파일명이 붙어야 하는 명령어들은 | (파이프) 뒤에 쓸 수 없음

        이유는 파이프 뒤에는 파일명이 붙을 수 없기 때문.

     

     

    포그라운드 프로세스와 백그라운드 프로세스

     

    - jobs 명령어로 현재 실행중인 프로세스와 번호를 볼 수 있음

     

    - 이거를 포그라운드로 바꾸려면 fg %1 명령 같은 것으로 변경 가능

    - 포그라운드를 종료하려면 ctrl + c 로 종료

    - 백그라운드를 종료하려면 kiil %번호 -> terminated (서서히 종료) 또는 ^Z -> (stop)으로 변경가능

     

     

     

    - 프로세스간의 관계도 확인할 수 있음

    TASK_RUNNING : 실행을 위한 준비 또는 실행 상태

    TASK_INTERRUPTIBLE : 이벤트 완료를 기다리는 상태, 중단가능

    TASK_UNINTERRUPTIBLE: 장치로부터의 입출력을 기다리는 SLEEP 상태, 중단시킬 수 없음

    TASK_STOPPED : 프로세스의 수행을 멈춤

    TASK_ZOMBIE : 프로세스 종료 후 부모프로세스의 처리를 기다리는 상태

    DEAD: 프로세스 종료

     

    시그널 종류

    * QUIT 라는 시그널만 그냥 종료가 아닌 core 파일 생성 후 종료

     

    => core 파일을 못만드는 경우도 있는데 이는 core 파일의 사이즈를 제한 시켜놔서 그럴 수 있음

    그럴 때는 ulimit -c unlimited  명령어 입력 후 포그라운드 실행해서 ctrl + \ 하면 생성 됨.

    ==> core 파일은 관리상 불필요해서 막아 논 것.

     

     

    프로세스 강제 종료

    - 프로세스가 비정상적으로 수행되거나 잘못 수행한 경우 강제 종료할 필요가 있음.

     

     

Designed by Tistory.