지극히 개인적인 공부 노트/리눅스(Linux)

[Linux] 리눅스 명령어(프로세스 관련)

AS J 2021. 8. 8. 21:05

이 글에서는 이전에 적은 기초 리눅스 명령어, 파일 관련 리눅스 명령어에 이어 프로세스의 실행, 종료, 관리 등에 관련된 리눅스 명령어를 기록해봤다.

실제로 어떤 프로젝트를 진행하거나 서버를 실행시키는 등의 작업에서는 많은 프로세스가 발생할 것이고, 이를 관리하는 것은 매우 중요할 것이다. 그렇기 때문에 기초 명령어나 파일 관련 명령어를 잘 익히고, 이를 기반으로 프로세스 관련 명령어까지 잘 이해하고 사용할 줄 알아야 한다고 생각한다.

아래 명령어 사용 형식 중 대괄호([ ])는 생략 가능하고, 공백이나 마침표 등에 유의하며 잘 확인하고 사용해야 한다.

 

ps [옵션]

단순히 ps 명령어는 프로세스의 현재 상태를 출력하는 명령어이다. 하지만 수많은 옵션과 필드를 통해 프로세스에 대한 다양한 작업이 가능하다. ps만 입력하면 프로세스 목록이 나오는데, PID는 프로세스의 ID, PPID는 부모 프로세스를 의미한다.

대표적인 옵션은 아래와 같고, 더 자세한 옵션과 필드 등에 대한 내용은 링크를 참고할 것.

-e : 현재 실행 중인 모든 프로세스 정보 출력
-f : 모든 정보 확인
-a : 실행 중인 전체 사용자의 모든 프로세스 출력
-u : 프로세스를 실행한 사용자와 프로세스 시작 시간 등을 출력
-x : 터미널 제어 없이 프로세스 현황 보기

https://terms.naver.com/entry.naver?docId=4125773&cid=59321&categoryId=59321&expCategoryId=59321 

 

ps

프로세스의 현재 상태를 출력한다. [이렇게 써요] ps [옵션] 전체 프로세스와 관련된 옵션 -A : 모든 프로세스를 출력한다. -N : -A 옵션과 비슷하나 ps 프로세스를 제외하고 출력한다. -a : 세션 리더

terms.naver.com

 

kill [옵션] PID
kill -l

프로세스에 종료 시그널을 보내는 명령어. 시스템에 예기치 않은 문제가 생긴 프로세스를 종료시킬 수 있다.

사용 형식 중 PID는 프로세스의 ID를 가리키는 것으로, ps를 통해 확인할 수 있다.

pid ··· : 종료시킬 프로세스 ID나 프로세스 이름을 지정한다.
-s : 전달할 시그널의 종류를 지정한다. 여기에는 시그널 이름이나 번호를 써준다.
-l : 시그널로 사용할 수 있는 시그널 이름들을 보여준다. 이것은 /usr/include/linux/signal.h 파일에서도 알 수 있다.
-1 : -HUP 프로세스를 재활성화한다.(재실행)
-9 : 프로세스를 강제로 종료시킨다.
-15 : 프로세스를 정상 종료시킨다.

https://terms.naver.com/entry.naver?docId=4125687&cid=59321&categoryId=59321&expCategoryId=59321 

 

kill

프로세스를 종료한다. [이렇게 써요] pid ··· : 종료시킬 프로세스 ID나 프로세스 이름을 지정한다. -s : 전달할 시그널의 종류를 지정한다. 여기에는 시그널 이름이나 번호를 써준다. -l : 시그널

terms.naver.com

 

jobs [옵션] [jobID]
jobs -x command [args]

작업이 중지된 상태, 백그라운드로 진행 중인 작업 상태, 변경되었지만 보고되지 않은 상태 등을 표시하는 명령어.

-l : 프로세스 그룹 ID를 state 필드 앞에 출력한다.
-n : 프로세스 그룹 중에 대표 프로세스 ID를 출력한다.
-p : 각 프로세스 ID에 대해 한 행씩 출력한다.
command : 지정한 명령어를 실행한다.

https://terms.naver.com/entry.naver?docId=4125682&cid=59321&categoryId=59321&expCategoryId=59321 

 

jobs

현재 세션의 작업 상태를 출력한다. [이렇게 써요] -l : 프로세스 그룹 ID를 state 필드 앞에 출력한다. -n : 프로세스 그룹 중에 대표 프로세스 ID를 출력한다. -p : 각 프로세스 ID에 대해 한 행씩 출력

terms.naver.com

참고) 명령어 jobs가 아닌 job은 프로세스와 달리 터미널 명령을 통한 작업만을 의미한다. 이 job을 통해 프로세스를 실행할 수 있지만, 터미널이 종료되면 job과 함께 프로세스도 종료된다. 즉, 터미널 의존적인 작업이다.

  • 명령어 끝에 '&'을 붙이면 백그라운드에서도 계속 실행된다. jobs는 이런 백그라운드 프로세스를 보여줄 때 사용할 수 있다.
  • kill %작업번호(job번호): job을 종료할 때는 다른 옵션 없이 다음과 같이 종료할 수 있다.

 

at [옵션] [시간] [날짜] [+증가시간]

명령어와 스크립트 파일을 특정 시간에 1회 실행할 수 있도록 예약하는 명령어. 보통 시스템의 부하가 적은 시간에 실행하거나 예약된 시간에 꼭 실행해야 하는 작업을 자동으로 처리하고자 할 때 사용한다.

시간 날짜 : 명령어나 스크립트를 실행할 시간과 날짜를 지정한다.
+증가 시간 : 앞서 명시한 시간을 기준으로 증가 시간만큼이 지난 후 실행한다.
-q queue : queue 이름을 지정한다. 큐 이름으로는 a~z, A~Z가 쓰일 수 있다. 큐 이름을 지정하지 않으면 at는 a, batch는 b를 사용한다. 알파벳 순서로 뒤의 이름을 갖는 큐는 더 큰 niceness 값을 갖는다. ‘=’ 큐는 현재 수행되는 작업에 대한 큐로 예약된다. 대문자 이름의 큐에 추가된 작업은 batch의 작업처럼 처리된다.
-m : 출력 결과가 없더라도 작업이 완료될 때 사용자에게 메일을 보낸다.
-f 파일명 : 스크립트 파일 등을 실행해 줄 때 사용한다.
-l : 예약된 작업 목록을 보여준다. atq 명령어와 같다.
-v : 작업이 수행될 시간을 보여준다.
-d : 예약된 작업을 삭제한다(리눅스 명령). atrm 명령어와 같다.
-r : 예약된 작업을 삭제한다(유닉스 명령). atrm 명령어와 같다.

https://terms.naver.com/entry.naver?docId=4125555&cid=59321&categoryId=59321&expCategoryId=59321 

 

at

명령어나 스크립트의 실행 예약한다. [이렇게 써요] at [옵션] [시간] [날짜] [+증가시간] 시간 날짜 : 명령어나 스크립트를 실행할 시간과 날짜를 지정한다. +증가 시간 : 앞서 명시한 시간을 기준

terms.naver.com

 

crontab [-u 사용자ID] 파일
crontab [-u 사용자ID] 옵션

백업과 같이 주기적으로 실행하는 명령들을 정해진 시간에 자동으로 실행해 주는 명령어.

-l : 현재 crontab 내용을 표준 출력한다.
-r : 현재 crontab 내용을 지운다.
-e : crontab 파일의 내용을 편집한다. 편집기는 VISUAL이나 EDITOR 환경 변수의 편집기를 사용한다.

https://terms.naver.com/entry.naver?docId=4125592&cid=59321&categoryId=59321&expCategoryId=59321 

 

crontab

사용자의 개별 crontab 파일을 관리한다. [이렇게 써요] crontab [ -u 사용자ID ] 파일, crontab [ -u 사용자ID ] { -l | -r | -e } -l : 현재 crontab 내용을 표준출력한다. -r : 현재 crontab 내용을 지운다. -e : .crontab

terms.naver.com

 

참고

네이버의 유닉스 리눅스 명령어 사전을 통해 더 자세한 사용법을 참고할 수 있다.

https://terms.naver.com/list.naver?cid=59321&categoryId=59321&so=st4.asc 

 

유닉스 리눅스 명령어 사전 : 네이버 지식백과

유닉스 리눅스 명령어 logname, 유닉스 리눅스 명령어 su, 유닉스 리눅스 명령어 strip, 유닉스 리눅스 명령어 locale, 유닉스 리눅스 명령어 renice, 유닉스

terms.naver.com