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.)