리눅스:cron(자동작업 등록): 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
 
(같은 사용자의 중간 판 하나는 보이지 않습니다)
35번째 줄: 35번째 줄:
|-
|-
|파일 만들기
|파일 만들기
|nano mysql 따위로 파일을 작성한다.
|nano mysql 따위로 파일을 작성한다.(혹은 그냥 기존 파일.)
문법의 사용은 우측의 예시를 보면 대강 유추할 수 있을 터.
문법의 사용은 우측의 예시를 보면 대강 유추할 수 있을 터.
|#!/bin/bash
|#!/bin/bash
66번째 줄: 66번째 줄:
|}
|}


==crontab==
=crontab=
{| class="wikitable"
{| class="wikitable"
!과정
!과정
73번째 줄: 73번째 줄:
|-
|-
|설치
|설치
|설치되어 있지 않은 경우 사용.
|설치되
|apt-get install cron
|-
|등록
| -e 옵션을 사용한다.
처음 실행하면 아무것도 작성되지 않은 파일이 열린다.
처음 실행하면 아무것도 작성되지 않은 파일이 열린다.
|crontab -e
|crontab -e
86번째 줄: 82번째 줄:
|}
|}


===작성법===
==작성법==
<code>분 시 일 월 요일 명령</code> 형태.
<code>분 시 일 월 요일 명령</code> 형태.
<br />
 
=== 시간에 대하여 ===
{| class="wikitable"
!의도
!설명
!방법
|-
|일정 간격 실행
|예컨대 5분마다 한 번 실행되게 한다면 다음과 같이 작성한다.
|<syntaxhighlight lang="bash">
*/5 * * * * 명령
</syntaxhighlight>
|-
|특정 시간 실행
|특정 시간마다 실행되게 하려면 다음과 같이 작성.
|매 시간 15분(8시15분, 9시15분...)<syntaxhighlight lang="bash">
15 * * * * 명령
</syntaxhighlight>매 시간 15분, 45분에 실행<syntaxhighlight lang="bash">
15, 45 * * * * 명령
</syntaxhighlight>
|}
 
분에 */5 가 들어가면 매 5분마다 실행한다는 의미이다.
 
분에 15, 45를 두면 매 15분, 45분마다 실행.
 
=== 명령에 대하여 ===
{| class="wikitable"
!의도
!설명
!방법
|-
|파이썬 파일 실행
|.py 파일을 실행하기 위해 파이썬을 실행해주고 옵션으로 경로를 준다.
파이썬 파일 안에 한글이 들어가 있다면 encoding을 해주어야 한다.
 
encoding은 파일 가장 상단에 <code># -*- encoding: utf-8 -*-</code> 을 넣어주면 된다.
|<syntaxhighlight lang="bash">
* * * * * sudo python /home/.../file.py
</syntaxhighlight>sudo는 해당 파일의 권한에 상관없이 실행하기 위함.
|}

2022년 10월 28일 (금) 07:55 기준 최신판

리눅스를 위한 문서틀 틀:리눅스


  1. 리눅스:명령어
    1. 리눅스:디렉터리관련
      1. 리눅스:저장장치관련
      2. 리눅스:df(디스크사용량)
      3. 리눅스:저장장치관련팁
      4. 리눅스:압축
    2. 리눅스:프로세스관련
  2. 리눅스:권한관련
  3. 리눅스:편의기능
    1. 리눅스 원격 관리
      1. 리눅스:SSH
      2. 리눅스:MobaXterm
    2. 리눅스:각종 설정
    3. 리눅스:cron(자동작업 등록)
    4. 리눅스:daemon(자동실행)
    5. 리눅스:alias(명령 축약)
    6. 리눅스:로그관리
      1. 리눅스:logrotate(로그파일관리)
    7. 리눅스:포트관리
  4. 리눅스 기반 OS
    1. 틀:우분투
  5. 리눅스:패키지 관리
    1. 리눅스:apt-get
  6. 다양한 패키지
    1. 리눅스:openssl(ssl인증서)
  7. 리눅스:쉘 스크립트
    1. 틀:Bash

cron[편집 | 원본 편집]

관련 디렉터리[편집 | 원본 편집]

/etc/crontab에서 daily, weekly 등의 실행시간을 변경할 수 있다.

/etc/
cron.d
cron.hourly
cron.daily 매일 실행되는 cron들을 모아둔다.
cron.weekly
cron.monthly

해당 디렉터리 자체를 크론으로 실행시키는데, 해당 디렉터리가 크론에 등록되어 있지 않으면 실행이 되지 않기도 한다.

크론 파일 작성법[편집 | 원본 편집]

경험상, 파일을 작성하고 그 파일 자체를 crontab에 올려버리는 게 간편하다.

mysql 백업을 예시로 설명한다.

과정 예시 방법
파일 만들기 nano mysql 따위로 파일을 작성한다.(혹은 그냥 기존 파일.)

문법의 사용은 우측의 예시를 보면 대강 유추할 수 있을 터.

#!/bin/bash

#위는 bin/bash밑에 있는 스크립트를 사용한다는 선언

        mysql_path='/usr/bin/mysql/'     #mysql 실행파일이 있는 경로 지정

        month=$(date +%Y%m%d)                  #제목에 사용할 서버현제날짜를 구함

        fileName="backup_wikisql_${month}.sql"       #저장할 파일이름 설정1

        #파일 저장 경로 지정 대부분 홈디랙토리에 생성

        savePath="/home/id8436/Downloads/"

/usr/bin/mysqldump -u root my_wiki > ${savePath}${fileName}   #dump받아 폴더에 저장

권한부여 ls -l 명령으로 다른 파일들의 권한설정을 보고

chmod 를 통해 파일권한을 통일시킨다.

chmod 755 파일명

sudo chown root:root 파일명

확인 프롬프트에 파일경로를 올렸을 때 아무 것도 안뜨면 이상이 없는 것.

이상이 있는 경우엔 에러가 뜬다.

/etc/cron.daily/mysql

이후 크론이 작동하는 것을 확인한다.

crontab[편집 | 원본 편집]

과정 설명 방법
설치 설치되

처음 실행하면 아무것도 작성되지 않은 파일이 열린다.

crontab -e
등록내역 보기 -l 옵션 crontab -l

작성법[편집 | 원본 편집]

분 시 일 월 요일 명령 형태.

시간에 대하여[편집 | 원본 편집]

의도 설명 방법
일정 간격 실행 예컨대 5분마다 한 번 실행되게 한다면 다음과 같이 작성한다.
*/5 * * * * 명령
특정 시간 실행 특정 시간마다 실행되게 하려면 다음과 같이 작성. 매 시간 15분(8시15분, 9시15분...)
15 * * * * 명령
매 시간 15분, 45분에 실행
15, 45 * * * * 명령

분에 */5 가 들어가면 매 5분마다 실행한다는 의미이다.

분에 15, 45를 두면 매 15분, 45분마다 실행.

명령에 대하여[편집 | 원본 편집]

의도 설명 방법
파이썬 파일 실행 .py 파일을 실행하기 위해 파이썬을 실행해주고 옵션으로 경로를 준다.

파이썬 파일 안에 한글이 들어가 있다면 encoding을 해주어야 한다.

encoding은 파일 가장 상단에 # -*- encoding: utf-8 -*- 을 넣어주면 된다.

* * * * * sudo python /home/.../file.py
sudo는 해당 파일의 권한에 상관없이 실행하기 위함.