Linux 시스템의 프로세스 제어
이 문장에서 우리는 어떻게 이런 과정을 통제할 것인가를 탐구할 것이다.
우리는 지난 글에서 두 가지 유형의 과정이 있음을 알게 되었다.
프론트 데스크톱 프로세스는 UI에서 볼 수 있고 어떤 사용자가 입력해야 하는 프로세스입니다.
예를 들어, 텍스트 편집기.
백그라운드 프로세스란 사용자의 어떠한 형식의 입력도 필요하지 않고 백그라운드에서 자동으로 실행되는 프로세스를 말한다.
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
명령에 정확한 값을 제공해야 한다는 데 있다.위의 예시에서 우리는 명령
killall
과pkill
를 사용하여gedit를 죽였다.실행할 때, 우리는 killall
에게 불완전한 이름을 명령할 때, killall
프로세스를 찾을 수 없다는 것을 관찰했다.이것은 모두 우리가 어떻게 과정을 통제하는지에 관한 것이다.
만약 아래의 토론에서 어떤 건의나 의문이 있으면 저에게 알려주십시오.개그 신문에서 봐요.
Reference
이 문제에 관하여(Linux 시스템의 프로세스 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yashsugandh/controlling-processes-in-linux-system-4974텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)