elevne's Study Note

Bash 쉘 스크립트 개발 시작하기 (2: 관리명령어(1)) 본문

ETC/Linux

Bash 쉘 스크립트 개발 시작하기 (2: 관리명령어(1))

elevne 2023. 4. 22. 09:52

관리명령어란 프로세스, 메모리, 파일시스템 관리를 위한 명령어이다. 시스템 운영을 위해 필요하다. 

 

 

 

crontab

 

crontab 은 정기적으로 지정한 시간에 실행하고 싶은 명령어를 등록한다. (스크립트를 등록해도 된다) 이는 등록된 계정의 사용자로 실행되고, 다른 사용자의 crontab 을 등록하려면 -u 옵션을 이용한다.

 

 

crontab

 

 

crontab 을 등록할 때는 실행하고자 하는 주기와 명령어를 입력한다. 주기는 분, 시, 일, 월, 요일의 형태로 입력한다. ( * 는 모두를 의미하며, (매분, 매시, 매일, 매월, 모든 요일) 에 실행하고자 할 때 사용) crontab -e 로 crontab 명령을 입력해주고 crontab -l 로 내용을 확인해볼 수 있다. (밑의 crontab 은 매 1분마다 time.sh 를 실행하는 것)

 

 

 

result

 

 

 

 

 

exec

 

exec 는 주어진 명령어를 실행하는데 새로운 프로세스를 실행하지 않고, 쉘 프로세스를 대체한다. 예를 들어, bash 쉘에서 Java 프로그램을 실행하면 Java 프로그램의 ppid 가 bash 쉘이 되고, Java 프로그램이 bash 쉘의 하위 프로세스로 실행되는 것이다. exec 커맨드로 시랭하면 bash 쉘의 프로세스가 Java 프로그램이 되고 (ppid 가 따로 없다), Java 프로그램이 종료되면 프로세스가 종료되며 다시 bash 쉘로 돌아오지 않는다.

 

 

 

free

 

메모리 사용량을 확인할 수 있다.

 

 

 

result

 

 

 

htop

 

이는 top 보다 상세하게 운영체제의 상태를 모니터링할 수 있는 도구다. (설치를 따로 해줘야한다: apt install htop) htop 는  Function 키를 이용하여 트리구조로 프로세스를 확인하거나 목록으로 확인해볼 수 있다. 메모리, CPU 사용률로 프로세스를 정렬할 수도 있다.

 

 

 

result

 

 

 

result

 

 

 

jobs

 

jobs 는 현재 실행 중인 작업을 표시한다. -l 옵션을 통해 프로세스 ID 도 표시할 수 있다.

 

 

 

kill

 

프로세스를 종료한다. kill 은 프로세스에 시그널을 전송하게 된다. 시그널을 생략하면 TERM 시그널을 전송하여 프로세스를 종료한다. -9 옵션을 이용하여 프로세스를 강제종료하는 경우도 많다고 한다. 시그널이 없이 프로세스를 종료하면 프로세스에게 종료를 통지하기 때문에 프로세스가 종료에 따른 후속처리를 진행하고 종료한다. -9 옵션을 사용하면 프로세스가 종료에 따른 후속처리 없이 종료된다. (e.g., 프로세스 종료에 따라 pid 파일, lock 파일을 삭제하는 후속처리가 있따면, -9  옵션을 사용하면 해당 파일을 삭제하지 않고 종료한다)

 

 

 

result

 

 

 

logrotate

 

로그를 정리할 수 있는 명령어이다. 이 명령어는 데몬이 아니라, 크론탭을 이용해서 주기적으로 로그를 정리하는 명령을 추가해야 한다.

 

 

 

man

 

명령어의 매뉴얼을 출력한다. (e.g., man cp)

 

 

 

nohup

 

리눅스에서 프로그램을 실행할 때 사용자의 세션이 끊어지면 (Hang up) 프로그램도 함께 종료된다. 처리에 오랜 시간이 걸리는 프로그램을 실행할 때, nohup 을 이용하여 사용자의 세션이 끊어져도 프로그램은 계속 실행되도록 할 수 있다. nohup 명령을 이용할 때 Foreground 로 실행하면 다른 작업을 처리할 수 없으니 & 을 이용하여 Background 로 실행한다.

 

 

 

result

 

 

 

 

 

 

Reference:

https://wikidocs.net/178592