실시간으로 CPU 사용을 체크해 주는 명령어임.
시스템의 프로세스와 메모리 사용 상태, 리눅스 서버의 성능을 5초간격으로 업데이트 하면서 화면에 출력.
어떤 프로세스가 CPU를 과도하게 잡고있는디 파악할 때 필요함.


사용법

  top [option]
OPTION DESC
-b 배치모드로 정보 출력.
-d delay delay 값 만큼 초 단위로 정보를 업데이트. (기본 5)
-i idle 토글 값이 off 일 때, idle 프로세스나 좀비 프로세스 정보를 출력하지 않음.
-n num num 시간 만큼 업데이트 정보를 출력함.
-p pid 지정한 pid의 프로세스 정보만 출력.
-q 시간의 간격 없이 계속하여 업데이트 정보를 출력.
-s 몇 개의 대화식 명령을 비활성화.(뭘?)
-S 누적된 정보 출력.
  top

  top - 16:33:32 up 19 days,  1:39,  1 user,  load average: 0.00, 0.02, 0.00
  Tasks: 272 total,   1 running, 271 sleeping,   0 stopped,   0 zombie
  Cpu(s):  0.2%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
  Mem:  16291780k total, 16078316k used,   213464k free,   220104k buffers
  Swap: 25165816k total,        0k used, 25165816k free, 15329424k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  16584 nobody    20   0 2023m  17m 3592 S  1.3  0.1 120:06.69 httpd
  2181  root      20   0  121m 2264 1856 S  0.3  0.0   0:40.52 nvcmgr
  15970 nobody    20   0 2023m  13m 3584 S  0.3  0.1  30:17.18 httpd
  16052 nobody    20   0 2023m  14m 3584 S  0.3  0.1  34:41.69 httpd
  29604 root      20   0 15168 1384  948 R  0.3  0.0   0:00.04 top
      1 root      20   0 19364 1540 1232 S  0.0  0.0   0:03.10 init
      2 root      20   0     0    0    0 S  0.0  0.0   0:00.04 kthreadd
  ...

옵션은 많지만 보통은 옵션 없는 명령이나 pid 정도만 확인함.
실행 후 h 를 입력하면 사용할 수 있는 단축키를 확인할 수 있음.


표출 데이터 : 첫 번째 줄

리눅스 컴퓨터의 정보와 시스템 부하율를 출력함.
top - 16:33:32 up 19 days, 1:39, 1 user, load average: 0.00, 0.02, 0.00

  • 16:33:32 :
    시스템 현재 시간
  • up 19 days, 1:39 :
    시스템이 부팅된 후 현재까지 운영된 시간.
  • 1 user :
    현재 로그인된 사용자의 수.
  • load average :
    0.00, 0.02, 0.00 최근 1분, 5분, 15분 각각의 시스템 평균 부하율.


표출 데이터 : 두 번째 줄

프로세스들의 종합적인 상황정보 출력.
Tasks: 272 total, 1 running, 271 sleeping, 0 stopped, 0 zombie

  • Tasks: 272 total :
    전체 실행중인 프로세스 수.
  • 1 running :
    현재 실행된 프로세스 수.
  • 271 sleeping :
    유휴상태에 있는 프로세스 수.
  • 0 stopped :
    종료된 프로세스 수.
  • 0 zombie :
    좀비 프로세스 수.
    • 대부분의 프로세스는 부모프로세스가 종료되면 자식프로세스들은 자동종료됨.
      부모프로세스가 종료되었음에도 남아있는 자식프로세스를 좀비프로세스라고 하며, 시스템이 느려지는 원인이 됨.
      대부분의 좀비 프로세스는 init 프로세스에 의해 관리되며, kill 명령으로 강제종료 시켜도 무방함.


표출 데이터 : 세 번째 줄

CPU의 사용 및 실행 상태를 출력.
Cpu(s): 0.2%us, 0.1%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

  • Cpu(s): 0.2%us :
    사용자가 실행시킨 프로세스들의 CPU 사용율.
  • 0.1%sy :
    시스템에서 사용하는 프로세스들의 CPU 사용율.
  • 0.0%ni :
    noce 정책에 의해 사용되고 있는 CPU 사용율.
  • 99.8%id :
    사용되지 않고 남은 CPU 사용율.
  • 0.0%wa :
    입출력 대기상태의 CPU 사용율.
  • 0.0%hi :
    IRQs에 사용된 CPU.
  • 0.0%si :
    softIRQs에 사용된 CPU.
  • 0.0%st :
    다른 인스턴스 실행에 주어진 time, steal 값


표출 데이터 : 네 번째 줄

메모리 사용 상태 출력.
Mem: 16291780k total, 16078316k used, 213464k free, 220104k buffers

  • Mem: 16291780k total :
    실제메모리의 사용량.
  • 16078316k used :
    프로세스에 의해 사용되고 있는 메모리 사용량.
  • 213464k free :
    사용되지 않고 남아있는 메모리 양.
  • 220104k buffers :
    버퍼링된 메모리 양.


표출 데이터 : 다섯 번째 줄

스왑 메모리의 상태 출력.
Swap: 25165816k total, 0k used, 25165816k free, 15329424k cached

  • Swap: 25165816k total :
    전체 메모리 스왑 양.
  • 0k used :
    프로세스에 의해 사용된 스왑메모리 양.
  • 25165816k free :
    남아있는 스왑메모리양.
  • 15329424k cached :
    캐싱 메모리양.

현재 시스템의 스왑메모리 운용 상황이므로 스왑메모리가 많이 사용되고 있다라는 의미는 실제 메모리가 부족하는 것의 증거임.


표출 데이터 : 여섯 번째 줄

전체 개별 프로세스들의 시스템 자원 사용현황과 실행상태를 파악할 수 있음.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

  • PID :
    해당 프로세스의 유일한 프로세스 번호(Process ID, 키 값)
  • USER :
    프로세스를 실행시킨 사용자.
  • PR :
    프로세스의 우선순위(Priority, 키값 : H)
  • NI :
    프로세스의 NICE 값 (Nice Value, 키값 : I), Minus(-)를 가질수록 높은 우선순위를 갖고, Plus(+)를 가질수록 낮은 우선순위를 가짐.
    0 값은 우선순위가 적용되지 않음.
  • VIRT :
    해당 프로세스가 사용한 가상메모리의 총량 (Virtual(kb), 키값 : o)
  • RES :
    해당 프로세스의 물리적인 메모리 사용량 (Resident Size(kb), 키값 : q)
  • SHR :
    해당 프로세스에 의해 사용된 공유 메모리의 총량(Shared Mem Size(kb), 키값 : t)
  • S :
    프로세스의 상태를 나타냄.
    • S : sleeping
    • R : running
    • W : swapped out process
    • Z : zombies
  • %CPU :
    프로세스가 사용하는 CPU 사용율.
  • %MEM :
    프로세스가 사용하는 메모리 사용율.
  • COMMAND :
    실행된 명령어.


top 실행 후 단축키 명령어

CMD DESC
space 정보 업데이트
shift + p CPU 사용율 내림차순 정렬
shift + m 메모리 사용율 내림차순 정렬
shift + t 프로세스 작동 시간 내림차순 정렬
k pid 프로세스 종료
a 메모리 사용량에 따라 정렬
b batch 모드
c cli, 프로그램 이름 토글
h 매뉴얼
n or # 출력할 프로세스 수 지정
s 출력할 정보의 업데이트 시간 조정
q top 종료
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] There are stopped jobs  (0) 2021.05.28
[Linux] 인터넷 속도 확인  (0) 2021.05.28
[Linux] 리눅스 서버 60초 안에 상황 파악하기  (0) 2021.05.06
[Linux] 리눅스 버전 확인하기  (0) 2021.05.06
[Linux] find 명령어  (0) 2021.05.03

프로세스 관리

  • 학습 개요
    프로세스 개념을 확인하고 프로세스의 실행과 관련이 있는 실행 파일 또는 디렉토리의 특수 접근권한을 알아보자.
    프로세스의 상태를 모니터링하고 관리하는 명령의 사용법을 알아보자.
    주기적으로 수행되는 작업을 자동으로 수행하게 하는 cron 서비스를 알아보자

  • 학습 목표

    1. 프로세스 개념과 프로세스의 상태 변화를 설명할 수 있다.
    2. 포어그라운드와 백그라운드 프로세스의 차이를 설명할 수 있다.
    3. 프로세스의 상태를 확인하고 관리하는 명령을 사용할 수 있다.
    4. cron 서비스를 이용해 주기적으로 반복되는 작업을 실행할 수 있다.

프로세스

프로세스 정의

  • 커널에 등록되어 관리를 받는 작업 또는 실행중인 프로그램
    • 커널은 프로세스 관리 블록(PCB)에 프로세스에 관한 정보를 저장
    • 프로세스틑 시스템 자원을 사용하여 여러 상태 변화를 겪음
    • 각 브로세스는 유일한 PID를 가짐
  • 프로세스 예
    • init 프로세스는 PID가 1
      • 모든 사용자 프로세스의 조상
    • 로그인을 하거나 터미널 창을 열면 'bash 프로세스'가 할당 됨
    • 필요에 따라 프로세스는 자식 프로세스를 생성함
    • 데몬 프로세스는 서비스 요청을 처리하기 위한 백그라운드 프로세스

프로세스 관리 블록

  • 커널에 등록된 각 프로세스에 대한 정보를 저장하는 영역
    • 프로세스들은 모두 커널 공간에 자신의 정보를 가짐
  • PCB에 저장되는 정보
    • PID, PPID
    • UID, EUID, GID, EGID
    • 프로세스의 현재 상태
      • 실행/준비/조류/지연 등의 상태 정보와 CPI 사용 시간등
    • 프로세스 우선순위
    • 프로세스가 사용 중인 자원에 관한 정보
      • 메모리 주소, 입출력 장치, 파일등
    • 모든 대기중인 시그널 목록
    • 문맥 교환 정보

명령의 실행과 프로세스 생성

  • 쉘에서 명령을 실행하면 새로운 프로세스가 만들어져 처리됨
    • 시스템 호출 fork()를 호출하여 기존 부모 프로세스가 자신의 복사본 자식 프로세스를 만듦
    • 자식 프로세스는 시스템 호출 exec(program)에 의해 새로운 프로그램으로 대체되어 실행됨
    • 프로그램이 종료되면 자식 프로세스가 종료됨
    • 부모 프로세스는 보류 상태에 있다가 자식 프로세스가 종료되면 깨어남
  • 예)
    • 터미널 창에서 ls 명령을 실행하면
    • 쉘은 fork() 를 호출하여 쉘의 복사본(자식 프로세스)를 생성함
    • 자식 프로세스는 exec(ls)를 호출하여 ls 명령을 실행함
  • pstree 명령은 프로세스 트리를 보여주는 명령
[ec2-user@ip-aws ~]$ pstree
systemd─┬─acpid
        ├─2*[agetty]
        ├─amazon-ssm-agen───7*[{amazon-ssm-agen}]
        ├─atd
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─2*[dhclient]
        ├─gssproxy───5*[{gssproxy}]
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─rngd
        ├─rpcbind
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        └─systemd-udevd

포어그라운드(foreground) 프로세스

  • 쉘 프롬프트에서 명령을 실행하면 포어그라운드 모드로 수행됨
    • 포어그라운드 프로세스가 끝나기 전에는 다른 명령을 수행할 수 없음
      • 포어그라운드 프로세스는 터미널에 대한 제어권을 가짐
    • 포어그라운드 프로세스틑 키보드 입력 및 화면 출력이 가능함
      • 터미널로부터 키보드 입력을 받을 수 있는 프로세스는 하나 뿐임
  • 포어그라운드로 실행중인 프로세스를 강제 중지 -> ctrl + c
  • 포어그라운드로 실행중인 프로세스를 백그라운드로 전환/멈춤 또는 지연 상태로 변경 -> ctrl + z
    • fg jobid bg jobid를 수행하면 실행상태가 됨.

백그라운드(background) 프로세스

  • 백그라운드로 실행하려면 쉘 프롬프트에서 명령의 끝에 &를 추가하여 실행
    • 백그라운드로 프로세스를 실행시키면 쉘은 즉시 명령 대기 상태가 됨
      • 백그라운드 프로세스는 터미널 출력은 가능하나 키보드 입력은 받을 수 없음
      • 백그라운드 프로세스가 키보드 입력이 필요하면 지연 상태가 됨
    • 입력 없이 장시간 실행되어야 하는 경우 주로 사용
    • 터미널 창을 종료하면 연결된 백그라운드 프로세스도 종료 됨
  • 백그라운드 프로세스를 포어그라운드로 전환하는 방법 -> fg jobid
  • jobs 명령으로 백그라운드 프로세스의 상태를 점검할 수 있음
    • jobs -l은 PID를 함께 보여줌

특수권한

SetUID

  • 파일의 접근권한에서 소유자의 실행 권한에 x가 아닌 s 가 표시됨
  • 실행 파일에 SetUID가 설정되어 있으면, 해당 파일이 실행될 때 '실행시킨 사용자'가 아닌 '파일의 소유자' 권한으로 실행
  • 일반 사용자가 passwd 명령으로 비밀번호를 수정하면 결국 /etc/passwd 또는 /etc/shadow 파일이 수정되어야 함(권한 상승이 필요함)
  [ec2-user@ip-aws ~]$ ls -l /etc/passwd
  -rw-r--r-- 1 root root 1304 Oct  4 08:35 /etc/passwd
  [ec2-user@ip-aws ~]$ ls -l /usr/bin/passwd
  -rwsr-xr-x 1 root root 27776 Feb 13  2020 /usr/bin/passwd
  • 설정 방법은 chmod 4755 file 또는 chmod u+s file
  • 해제 방법은 chmod 0755 file 또는 chmod u-s file

SetGID

  • 파일의 접근권한에서 그룹의 실행 권한에 s가 표시됨
  • SetGID가 설정된 파일을 실행하면 '실행자의 그룹 권한'이 아닌 '파일 소유자의 그룹 권한'으로 실행됨
  • 디렉토리에 설정된 경우, 그 디렉토리에 파일을 만들 때 '파일 소유 그룹'이 '디렉토리의 소유 그룹'으로 지정됨
  • 설정 방법은 chmod 2755 file || chmod g+s file

StickyBit

  • 파일의 접근권한에서 기타 사용자의 실행 권한에 t가 표시됨
  • 주로 공유 디렉토리에 설정되며, 누구나 그 디렉토리에 파일 생성할 수 있지만 파일의 소유자만 삭제할 수 있음
  • chmod 1755 file || chmod o+t file

프로세스의 상태

프로세스의 상태 변화

제한된 자원과 멀티 태스킹을 지원하는 운영체제에서 프로세스는 여러 상태 변화를 겪음
(이미지 그러 넣기)

ps 명령

  • 현재 프로세스의 상태를 확인하는 명령
    • 특정 순간에 활동 중인 프로세스의 상태를 보여줌
  • ps [options]
    • 옵션 없이 ps 명령을 실행하면 현재 터미널과 연결괴어 있응 프로세스 중 프로세스의 EUID가 현재 사용자의 UID와 같은 프로세스를 선택하여 보여줌
    • ps -ef, ps aux 명령이 자주 사용되는 옵션임
      • 결과에서 PPID는 부모의 PID, STIME은 시간, TTY는 터미널, TIME은 cpu 누적 사용 시간
[ec2-user@ip-aws ~]$ ps -ef --forest
UID        PID  PPID  C STIME TTY          TIME CMD
root         2     0  0 Oct04 ?        00:00:00 [kthreadd]
root         4     2  0 Oct04 ?        00:00:00  \_ [kworker/0:0H]
root         6     2  0 Oct04 ?        00:00:00  \_ [mm_percpu_wq]
root         7     2  0 Oct04 ?        00:00:03  \_ [ksoftirqd/0]
...
root         1     0  0 Oct04 ?        00:00:32 /usr/lib/systemd/systemd --switched-r
root      1932     1  0 Oct04 ?        00:00:42 /usr/lib/systemd/systemd-journald
root      1955     1  0 Oct04 ?        00:00:00 /usr/sbin/lvmetad -f
root      1968     1  0 Oct04 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root      2653     1  0 Oct04 ?        00:00:06 /sbin/auditd
libstor+  2681     1  0 Oct04 ?        00:00:04 /usr/bin/lsmd -d
root      2687     1  0 Oct04 ?        00:00:34 /sbin/rngd -f
dbus      2689     1  0 Oct04 ?        00:00:21 /usr/bin/dbus-daemon --system --addre
...
root      2703     1  0 Oct04 ?        00:00:00 /usr/sbin/gssproxy -D
root      2920     1  0 Oct04 ?        00:00:00 /sbin/dhclient -q -lf /var/lib/dhclie
root      3025     1  0 Oct04 ?        00:00:02 /sbin/dhclient -6 -nw -lf /var/lib/dh
root      3173     1  0 Oct04 ?        00:00:04 /usr/libexec/postfix/master -w
postfix   3175  3173  0 Oct04 ?        00:00:00  \_ qmgr -l -t unix -u
postfix  22117  3173  0 11:27 ?        00:00:00  \_ pickup -l -t unix -u
...
root      3392     1  0 Oct04 ?        00:00:08 /usr/sbin/sshd -D
root     20986  3392  0 10:54 ?        00:00:00  \_ sshd: ec2-user [priv]
ec2-user 21004 20986  0 10:55 ?        00:00:00      \_ sshd: ec2-user@pts/0
ec2-user 21005 21004  0 10:55 pts/0    00:00:00          \_ -bash
ec2-user 22903 21005  0 11:43 pts/0    00:00:00              \_ ps -ef --forest
...
  • 옵션
옵션 설명
a 터미널과 연결된 모든(all) 사용자의 모든 프로세스를 출력함
-A 또는 -e 모든(every) 사용자의 모든 프로세스를 출력함
u 현재 사용자의 프로세스를 사용자 친화적(user-oriented)로 자세히 출력함
x 현재 사용자가 소유한 모든 프로세스를 출력함. 데몬 프로세스처럼 터미널과 연결되어 있지 않은 프로세스도 출력함
-u users
U users
--user=users
EUID가 주어진 users(사용자 명이나 UID)와 같은 프로세스를 출력함
여러 사용자를 표시할 때는 콤마(,)나 빈칸으로 구분함
-p PIDs 주어진 PID를 가진 프로세스를 출력함
e 프로세스 정보에 관한 환경변수 정보를 포함시켜 출력함
I 또는 -ㅣ 또는 -f 프로세스에 관한 많은(long or full) 정보를 출력함
o format 또는 -o format 출력을 원하는 항목을 지정하여 출력함

프로세스 관리

top 명령

  • 현재 실행 중인 프로세스의 모니터링과 관리를 위한 대화식 도구
    • 현재 실행중인 개별 프로세스의 실시간 정보를 주기적으로 보여줌
      • CPU와 메모리 사용량 및 시스템의 부하 등을 확인
    • ps 명령의 동적 / 대화식 버전
  • top [options]
  • 옵션
    • -p delay : 초 단위로 주기를 지정
    • -p pid, -u user : 특정 프로세스나 사용자 프로세스로 한정
    • -S : 총 CPU 사용시간(자식 프로세스 포함) 출력
  • 기본적으로 CPU 사용량이 많은 프로세스를 먼저 보여줌
  • top명령에서 헤더의 의미는 ps 명령과 유사함
  • 대화식 서브 명령
옵션 설명
Space Bar 화면을 갱신함
k kill 명령을 수행함
r renice 명령을 수행
u 명령 옵션에서 -u의 의미와 같음
M %MEM 값으로 정렬
N PID 값으로 정렬
P %CPU 값으로 정렬
T Time + 값으로 정렬
q top 명령을 종료

kill 명령

  • 프로세스에 시그널을 보내는 명령
    • 다른 프로세스에게 시그널을 보내도록 커널에 요청하는 것
    • 시그널은 프로세스를 관리하는 방법이고 프로세스 간 통신수단
    • 여러 종류의 시그널이 존재하며 기본 시그널은 TERM임
  • kill [-signal] pids
  • kill [-s signal] pids
    • signal은 시그널의 이름 또는 시그널 번호
    • kill pids 명령은 TERM 시그널을 보냄
    • kill -STOP 3188 3188 PID를 가진 프로세스에게 멈춤 시그널을 보냄

killall 명령

  • 특정 프로세스에 한꺼번에 시그널을 보내는 명령
  • killall [options] [-s signal] [-u user] names
    • 프로그램이나 프로세스의 이름을 사용
    • killall -i -d 9 -u jeaha bash는 확인을 거쳐 jeaha 계정의 bash 프로세스에게 kill 시그널을 보냄
  • 시그널의 종류
번호 이름 설명
1 HUP 터미널이 종료될 때 터미널에 연결된 모든 프로세스에게 보내짐.
또는 데몬 프로세스가 설정 파일을 다시 읽어 재시작하게 만들 때 사용하는 시그널
2 INT Interrupt의 의미로 터미널에서 ctrl + c 를 누르는 것과 같음
9 KILL kill의 의미로 프로세스를 강제로 즉시 종료시킴
15 TERM Terminate의 의미로 kill 명령의 기본 시그널. 정상적인 종료 방법으로 끝내게 함
18 CONT Continue의 의미로 STOP 시그널로 중단된 프로세스를 재개시킴
19 STOP Stop의 의미로 프로세스를 잠시 중단시킴
20 TSTOP Terminal Stop의 의미로 터미널에서 ctrl + z를 누르는 것과 같음

nice와 renice

  • 'nice 우선순위(NI) 값'을 조정하는 명령
  • NI 값은 -20(가장 높음) ~ 19(가장 낮음)
    • 우선순위가 높으면 CPU를 점유할 확률이 높음
    • 기본 NI 값은 0

nice [option] [command]

  • 명령을 실행할 때 NI 값을 조정하는 명령
  • 일반 사용자는 NI 값을 0 이상으로만 지정할 수 있음
  • 옵션
    • -n adjustment || -adjustment 는 조정 수치 만큼 NI 값을 조정
    • nice -n +5 top || nice -+5 top은 NI 값을 5 증가 시켜 우선순위를 낮춤

renice priority [option]

  • 실행 중인 프로세스의 NI 값(절댓값)을 바꾸는 명령
  • 일반 사용자는 자신이 소유한 프로세스의 우선순위를 낮출 수만 있음
  • 옵션
    • -p pids는 프로세스를 지정
    • -g gids는 GID를 지정
    • -u users는 사용자를 지정
    • renice 10 -u jeaha는 관리자 또는 본인이 jeaha 계정이 소유한 모든 프로세스의 NI 값을 10으로 조정함

nohup

  • HUP 시그널과 무관하게 명령이 스스로 종료될 때까지 계속 수행시키는 명령
    • 로그아웃을 하거나 터미널 창을 끝내면 프로세스에 HUP 시그널이 보내짐
  • nohup 명령을 실행하는 경우 명령 행의 끝에 '&'를 붙여 백그라운드로 실행해야 함
    • nohup find -size + 100k > catalina.out &
    • 표준 출력과 표준 에러 출력이 필요한 경우 ~/nohup.out에 출력됨

프로세스 관리를 위한 GUI

  • 데스크탑 메뉴에서 '프로그램 > 시스템 도구 > 시스템 정보'를 실행
    • '시스템 정보'창에서 모든 또는 자신이 소유한 프로세스의 상태를 보고 [편집] 메뉴에서 제어할 수 있음

cron 서비스

  • 지정된 시간에 주기적으로 자동 수행되는 작업을 수행함
  • crond 데몬 프로그램이 서비스를 제공
    • 1분 간격으로 'crontab 파일'을 검사하여 수행함
    • 'crontab 파일'에는 'cron 작업의 수행 방법'이 기록되어 있음
    • 일반적으로 'cron 작업'은 쉘 스크립트로 작성됨
  • cron 서비스를 이용한 자동 스케줄
    • /etc/crontab 파일과 /etc/cron.d/ 디렉토리에 존재하는 파일
      • 시스템 수준에서 주기적으로 수행될 작업을 설정
    • crontab
      • 개별 사용자는 crontab 명령을 이용하여 주기적으로 수행될 작업을 설정할 수 있음

crontab 파일의 형식

  • 환경 변수의 설정과 cron 작업의 수행 방법을 정의
[ec2-user@ip-aws ~]$ cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
  • 항목의 의미
    • 분(059), 시(024), 날짜(031), 달(112), 요일(0~7)
      • *는 매번을 의미, 간격 표시를 위해/, 범위 표시를 위해 -와 ,를 사용할 수 있음
    • 사용자, 실행할 명령
      • 사용자는 시스템 수준 crontab 파일의 경우에만 지정
      • run-parts는 지정된 디렉토리에 있는 스크립트를 수행하는 명령
    • 0 _/6 _ * 1-5 /bin/mail -s "Hi" jeaha@localhost
    • 월요일부터 금요일 까지 0, 6, 12, 18시 정각에 메일을 보냄

crontab

  • 일반 사용자가 자신의 cron 작업을, 자신의 crontab 파일에 등록할 때 사용해야 하는 명령
    • /var/spool/cron/username 파일로 만들어지거나 수정 권한이 없음
  • crontab [option]
  • 옵션
    • -l : crontab 파일의 내용으로 출력
    • -e : crontab 파일을 vi로 편집할 수 있음
      • * * * * * date >> ~/date.txt 를 입력한 후 확인해 볼 것
    • -r : crontab 파일 삭제
    • -u : user는 지정된 사용자의 crontab 파일을 사용(권한 필요)
  • 지정된 시간에 일회성 작업을 예약하려면 at 명령을 사용
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Linux] 쉘 스크립트 -2  (0) 2020.11.08
[Linux] 소프트웨어 관리  (0) 2020.11.01
[Linux] 파일 시스템 관리  (0) 2020.10.25
[Linux] vi 사용 텍스트 편집  (0) 2020.10.25
[Linux] 사용자 관리  (0) 2020.10.25

+ Recent posts