2024. 2. 13. 15:39ㆍLinux/CentOS7
이번엔
리눅스에서 실행되는 process에 대해 알아보자
ping 168.126.63.1 <명령어를 실행해보자
그럼 해당 명령어가 쉬지않고 출력된다.
위 사진처럼 ls 라는 명령어를 입력해도 반응이 없다
ping 이라는 process가 foreground를 점유하고 있기 때문에
우리는 다른 작업을 할 수 없다.
ctrl+c 같은 인터럭트 키로 끼어들기 할 수 있다.
하지만 그러면 쉘을 점유중이던 process가 정지된다.
여기서 이 process를 background로 실행 시킬 수 있는 기능이 있다
아주 간단히 명령어 뒤에 & 를 붙여주면 된다
그렇게 실행하고 나면 이제 명령어를 입력하면
출력이 되는 것을 볼 수가 있다
하지만 계속 멈추지 않고 ping이 실행되고 있다.
또한 더이상 ctrl+c로 멈춰지지 않는다
그럴땐 jobs 명령어를 입력해보자
그럼 위같은 문구가 출력되는데
제일 앞의 숫자[1]이 작업 번호다!
이 숫자를 이용해 background 작업을
foreground로 바꿔보자
fg %1 < 명령어를 입력해보자
입력하자마자 ping 168.126.63.1 이라는 문구만 출력되고
프로세스는 계속된다.
ctrl+z를 눌러보자
작업번호와 멈췄다는 문구가 나오고
정말로 멈췄다
ctrl+c,z 의 차이는
c는 프로세스를 죽이는 명령어라면
z는 프로세스를 멈추는 명령어다!!!
만약 명령어를 background로 실행하고 싶다면??
bg %1 을 입력해주면 된다
이렇게 다시 진행되기 시작한다.
다시 ping 명령어를 백그라운드로 실행해보자
ping 168.126.63.1 &
그런다음 현재 세션을 복제 해주자!
복제한 세션에서
ps aux를 입력해보자
ps -프로세스를 확인하는 명령어
a- 모든 프로세스
u- 모든 사용자에 대해
x- 현재 실행중인 것들만
그럼 현재 실행중인 모든유저의 모든 프로세스를 출력해준다
정말 많다..
이중 중앙에 tty, pts 라는 문구가 보일텐데
tty 는 직접 접속한 것이고
pts 는 원격 접속 한 것이다
(우리는 현재 xshell로 원격 접속 후 명령어들을 실행했다)
ps -ef 라는 옵션도 있다
프로세스 ID를 확인할 수 있다
PID : 자신의 ID
PPID : 부모프로세스 ID
위 사진을 보면
ping 명령어는 PPID가 1151이다
1151은 pts/0 에 -bash 인 것을 볼 수 있다.
즉 원격 접속에 의해 bash 쉘(1151)을 실행하고있고
ssh 로 접속했다 (1149)
이런식으로 추적도 가능하고
부모 프로세스를 kill하면 자식 프로세스도 같이 kill된다.
kill 명령어를 알아보자
kill -l 로 옵션목록을 확인해보자
일단 네가지만 확인 해볼 것인데
1 : SIGHUP 프로세스를 재시작 시키는 신호(=시그널)
9 : SIGKILL프로세스를 강제정료 시키는 시그널 = ctrl+c
18 : SIGCONT 중지된 프로세스를 다시 실행시키는 시그널
19 : SIGSTOP 프로세스를 중지시키는 시그널 = ctrl+z
위의 PID를 보고 kill -9 옵션과 명령어로
ping 프로세스를 죽여보자
그럼 쉬지않고 진행되던 ping 을 진행중이던 세션에서
죽었다는 명령어가 표시된다
fg, bg 가리지않고 적용 가능하다
이런식으로 프로세스를 중지,종료 시킬 수 있다.
여담으로 당연히 세션도 kill 명령어로
강제 종료시킬 수 있다!
이상 프로세스 관리에 대해서 알아보았다!!
'Linux > CentOS7' 카테고리의 다른 글
Linux 16 . ftp 서비스 (0) | 2024.02.14 |
---|---|
Linux 15 . dhcp 서비스 (1) | 2024.02.13 |
Linux 13 . Package관리 (0) | 2024.02.12 |
Linux 12 . Local Repository (0) | 2024.02.08 |
Linux 11 . Linux 설치 시 lvm 수동설정 (0) | 2024.02.06 |