차밍이

[Linux] 프로세스와 프로세스 명령어 ps/kill/job/at/crontab 본문

리눅스

[Linux] 프로세스와 프로세스 명령어 ps/kill/job/at/crontab

2021. 8. 11. 22:11
반응형

프로세스

리눅스 시스템에서 메모리에 적재되어 실행되고 있는 모든 프로그램프로세스이다.

프로그램은 코드(명령어)의 집합체이다.

프로세스는 그 명령어 집합체 중에서 현재 실행 중 것을 의미함

  • 모든 프로그램은 실행될 때 하나 이상의 프로세스를 갖는다.
  • 병행적으로 실행 가능하다.
  • 부모 - 자식 프로세스가 있다.
  • 커널에 의해 관리된다.
  • 모든 프로세스에는 소유자가 있다.
  • 프로세스마다 식별을 위한 ID가 부여된다.
    • 프로세스는 고유한 PID를 가지고 있다.
    • PID 1번은 init프로세스, 2번은 kthreadd프로세스가 실행된다.
  • init 프로세스는 자머지 모든 시스템 프로세스의 부모 프로세스

 

ps : 프로세스 목록 보기

ps [option]

-e : 현재 실행 중인 모든 프로세스 정보 출력

-f : 모든 정보 확인

-a : 실행중인 전체 사용자의 모든 프로세스 출력

-u : 프로세스를 실행한 사용자와 프로세스 시작 시간 등을 출력

-x : 터미널 제어 없이 프로세스 현황 보기 / 실시간으로 터미널에 프로세스가 어떻게 변하는지 보여줌

ex) ps -ef # 전체 프로세스의 모든 정보를 확인
ex) ps -aux # 전체 사용자의 모든 프로세스 출력

UID : User ID 유저의 고유 아이디

PPID : 부모 프로세스의 ID

 

kill - 프로세스 종료

kill [option] [PID]

-l (영문 L 소문자) : 사용 가능한 시그널 목록을 출력

-1 : 재실행(SIGHUP)

-9 : 강제종료(SIGKILL)

-15 : 정상 종료(SIGTERM)

ex) kill -9 PID # PID가 강제 종료

 

job

백그라운드로 실행되는 작업을 보여주는 명령어 : job

foreground 보이는 앞 / 우리가 바로 보는 창에서 실행되는 것

background 백그라운드 보이지 않는 곳에서 실행

& 명령어를 붙이면 됨

ex) [작업명령어] & 
ex) python chan.py &
ex) go main.go &

 

job은 프로세스와 달리 터미널 명령을 통한 작업만을 의미

job을 통해 프로세스를 실행할 수 있지만 terminal이 종료되면 job과 함께 프로세스도 종료

terminal에 의존적임

각각의 터미널마다 job은 따로 존재

job 또한 kill을 통해 종료할 수 있음

kill %[job의 작업 번호]

ps 명령어와 PID를 통해 종료할 수도 있음

 

at : 1회 단발성 예약 명령어

지정된 시간에 1회 실행되는 작업 예약 명령어이다.

시간이 되면 수행되고 작업 리스트에서 사라진다.

at [option] [time] [date] [+증가 시간]

-m : 출력 결과가 없더라도 작업이 완료될 때 사용자에게 메일을 보냄

-f : 스크립트 파일 등을 실행할 때 사용

-l : 예약된 작업 목록 출력, atq 명령어 또한 같은 동작을 수행

atq : 실행 예약된 at list를 출력

-v : 작업이 수행될 시간 출력

-d : 예약된 작업을 삭제, atrm 명령어 또한 같은 동작을 수행

atrm : 예약된 at list 중 원하는 at를 삭제하는 명령

ex ) at now + 3 hours -f chan.sh

지금부터 3시간 후 chan.sh 스크립트 파일을 실행

 

crontab : 주기적 반복 예약 명령어

at과는 다르게 지정된 시간에 따라 주기적으로 실행

crontab [option]

-l : 현재 계정의 설정된 crontab 정보 조회

-e : 현재 계정의 crontab 정보 수정

-r : 현재 계정의 crontab 정보를 삭제

-u : 특정 사용자의 crontab 정보를 다르게 해 줌 / root 권한이 필요해 sudo와 함께 사용

반응형

관련된 글 보기

Comments