Linux 시스템의 프로세스 제어

지난 문장에서 우리는 탐구했다.절차가 무엇입니까? 우리는 어떻게 그것들을 감시합니까?
이 문장에서 우리는 어떻게 이런 과정을 통제할 것인가를 탐구할 것이다.
우리는 지난 글에서 두 가지 유형의 과정이 있음을 알게 되었다.
  • 프론트 데스크 프로세스
    프론트 데스크톱 프로세스는 UI에서 볼 수 있고 어떤 사용자가 입력해야 하는 프로세스입니다.
    예를 들어, 텍스트 편집기.
  • 배경 프로세스
    백그라운드 프로세스란 사용자의 어떠한 형식의 입력도 필요하지 않고 백그라운드에서 자동으로 실행되는 프로세스를 말한다.
  • 예를 들어 Spring Boot Gradle 응용 프로그램을 실행하려면 명령gradle bootrun을 사용하십시오.

    현재 과정은 이미 시작되었지만 우리는 터미널에 접근할 수 없다.
    만약 우리가 백그라운드에서 절차를 이동하고 싶다면 어떻게 해야 합니까?
    백그라운드에서 프로세스를 이동하려면 누르기만 하면 됩니다 Ctrl + Z.

    위의 예시에서 프로세스가 백그라운드로 이동하고 프로세스 id (PID) 와 정지 상태로 돌아가는 것을 볼 수 있습니다.
    그런데 여기서 멈추는 게 무슨 뜻이야?
    일시 중지 상태 프로세스가 종료되지 않았지만 일시 중지된 상태를 지정합니다.
    좋습니다. 우리가 사용Ctrl + Z을 할 때 이 과정은 잠시 멈출 것입니다.
    만약 우리가 이 과정을 다시 무대 위로 밀어내고 싶다면?
    프로세스를 프론트에 설치하기 위해 명령을 사용합니다fg
    위의 예시에서 우리는 명령 fg 을 사용하여 프로세스를 다시 프론트 데스크톱으로 옮겨서 상태continued with PID로 되돌려줍니다.
    지금, 만약 우리가 이 과정을 중지하고 싶다면?
    프로세스를 종료하려면 누르십시오Ctrl + C
    위의 예시에서 우리는 실행 중인 프로세스를 종료하려면 Ctrl + C 를 누르십시오.
    지금까지 우리는 어떻게 프론트에서 프로세스를 실행하고 프로세스를 백그라운드로 옮긴 다음에 프로세스를 다시 프론트로 옮기는지 보았다.
    만약에 저희가 백스테이지에서 이 과정을 시작하고 싶다면?
    백그라운드에서 프로세스를 실행하려면 명령 끝에 쓰기만 하면 됩니다 &백그라운드에서 실행하고 싶은 예를 들겠습니다.

    위의 예시에서 우리는 명령 gedit 을 사용하고 백그라운드에서 이 프로세스를 실행합니다. 우리는 프로세스 id (PID) 를 얻었습니다.
    그래서 이 과정은 백그라운드에서 실행되지만, 우리는 어떻게 확인합니까?
    현재 터미널의 모든 프로세스를 검사하기 위해 명령gedit &을 사용합니다.

    위의 예시에서 우리는 작업이 jobs 라는 백그라운드에서 실행되고 있는 것을 볼 수 있다.
    이제 우리는 어떻게 하나의 절차를 전면으로 밀어붙이는지 보았지만, 만약 여러 가지 절차가 있다면?
    특정한 프로세스를 프론트에 올리기 위해서 우리는 다음과 같은 문법을 사용한다
    fg #{process_number}
    
    우리 예를 들어 우리 gedit 의 일을 무대 앞으로 데리고 가자

    위의 예시에서 우리는 명령gedit을 사용하고 fg #1 프로세스를 다시 프론트에 가져왔다.
    이제 신호 제어 과정을 어떻게 사용하는지 봅시다
    우리는kill 명령을 사용하여 프로그램에 신호를 보냅니다.
    우리는kill 명령을 사용하여 많은 다른 신호를 보낼 수 있으며, 이 명령을 사용하여 이 신호 gedit 를 표시할 수 있습니다.

    가장 자주 사용하는 신호 몇 개를 탐구하자
    신호
    가치
    묘사
    SIGHUP 회사
    일.
    제어 터미널에서 중단 또는 제어 프로세스 사망이 감지됨
    신호 입력
    이.
    키보드에서 중단하기 Ctrl+C를 눌렀을 때 실행되는 작업
    시그키트
    삼.
    키보드 종료
    시그키르

    정리할 시간이 없는 상태에서 프로세스를 종료합니다
    SIGTERM 회사
    십오
    프로세스를 종료하는 데 사용됩니다.이것은 KILL 명령의 기본 작업입니다.
    SIGCONT 회사
    19,18,25
    중지 시 프로세스를 계속하는 데 사용
    신호 정지
    17,19,23
    프로세스 중지
    시그널 SIGKILL 및 SIGSTOP은 캡처, 차단 또는 무시할 수 없습니다.
    kill 명령을 사용하여 프로세스를 종료하려면 해당 프로세스의 PID가 필요합니다.
    우리는 신호의 이름이나 신호의 값, PID를 사용하여 모든 프로세스를 종료할 수 있습니다.
    예를 들어 화면 캡처 프로그램을 죽이고 싶습니다.

    위의 예시에서 우리는 먼저 이전 문장kill -l에서 배운 명령을 사용하여 PID를 검색한다.
    우리는 ps -ef | grep screenshot 명령과 신호 값, 신호 이름을 사용하여 화면 캡처 프로그램을 종료합니다.
    PID 대신 이름을 사용하여 프로세스를 종료하려면 어떻게 해야 합니까?
    이름이 있는 프로세스를 죽이려면 kill예를 들어 우리는 명령pkill {regular_expression}을 사용했다.이 명령을 실행하면 Fire에서 시작하는 모든 프로세스를 죽입니다.
    만약 우리가 실행 중인 프로그램의 모든 실례를 죽이고 싶다면, 어떻게 해야 합니까?우리는 한 번에 성공할 방법이 있습니까?
    우리는 pkill fire 명령을 사용하여 응용 프로그램의 여러 가지 실례를 죽일 수 있다.killall 명령과 killall 명령 사이의 주요 차이점은 pkill 명령에 정확한 값을 제공해야 한다는 데 있다.

    위의 예시에서 우리는 명령killallpkill를 사용하여gedit를 죽였다.실행할 때, 우리는 killall 에게 불완전한 이름을 명령할 때, killall 프로세스를 찾을 수 없다는 것을 관찰했다.
    이것은 모두 우리가 어떻게 과정을 통제하는지에 관한 것이다.
    만약 아래의 토론에서 어떤 건의나 의문이 있으면 저에게 알려주십시오.개그 신문에서 봐요.

    좋은 웹페이지 즐겨찾기