cronμ΄λ?
νΉμ ν μκ°, νΉμ μκ° λ§λ€ μ΄λ€ μμ
μ μννκ² ν΄μ€μΌ ν λ μ¬μ©νλ λͺ
λ Ήμ΄μ΄λ€.
μ€μΌμ€λ¬ κ°μ κ°λ
μ΄λΌκ³ μκ°νλ©΄ λλ€.
μμνμΌμ΄λ, log νμΌ κ°μ΄ κ³μ λ
λλ©΄ μ²μΉνκΈ° κ³€λν νμΌλ€μ cronμ μ¬μ©νκ² μ½κ² μ²λ¦¬ν μ μλ€.
logκ°μ νμΌμ 00μμ catlina νμΌμ νμ¬ λ μ§λ‘ 볡μ νκ³ μλ³ΈνμΌμ λ‘κ·Έλ₯Ό μμ νλ λ°©μμΌλ‘ μ§ννλ€λ©΄
log νμΌμ΄ κ³μ 컀μ§μ§ μκ³ λ μ§λ³λ‘ λΆλ₯ν΄μ νμΈν μ μμ κ²μ΄λ€.
리λ
μ€μμ μ΄λ¬ν μμ
λ€μ cronμΌλ‘ μ§ννλ€κ³ 보면 λλ€.
λν λ°±μ
μ μ§νν΄μΌ νλ€κ³ ν λ λ³΄ν΅ μλ²½μ μ§ννκ² λλλ°, cronμ΄ μλ€λ©΄ κ°λ°μκ° μλ²½μ μΆκ·Όνμ¬
μ΄ μμ
μ μ§νν΄μΌ ν κ²μ΄λ€. νμ§λ§ cronμ΄ μλ€λ©΄ μλ²½μ μΆκ·Όνμ§ μμλ λ°±μ
μ μ§νν μ μλ€.
cronμ λμλ°©μ, cron μ€ν νλ¦
cronνμΌμ΄ λ°λͺ¬μ΄κΈ° λλ¬Έμ λΆν
μ λ°±κ·ΈλΌμ΄λλ‘ μ€νλλ€.
cron λμλ°©μμ 보면 cron λ°λͺ¬(crond)κ° crontabμ μ°Έμ‘°νκ³ μλ€.
cron λ°λͺ¬μ μ΄λ€ taskλ₯Ό μΈμ μνν μ§ crontabμμ μ°Ύμμ μ€ννλ€.
cron λ°λͺ¬μ μμ€ν
μ€μΌμ€λ¬ μ 보λΏλ§ μλλΌ κ°κ° μ¬μ©μκ° μ€μ ν μμ
μμ½ μ 보λ crontabμμ νμΈνλ€.
cronμ μ κ· ννμ
νλλͺ | κ°μ νμ© λ²μ | νμ©λ νΉμλ¬Έμ |
---|---|---|
μ΄(Seconds) | 0~59 | , - * / |
λΆ (Minutes) | 0~59 | , - * / |
μ (Hours) | 0~23 | , - * / |
μΌ (Day) | 1~31 | , - * ? / L W |
μ (Month) | 1 ~ 12 or JAN ~ DEC | , - * / |
μμΌ (Week) | 0 ~ 6 or SUN ~ SAT | , - * ? / L # |
μ°λ (Year) | empty or 1970 ~ 2099 | , - * / |
Cron ννμ - νΉμλ¬Έμ
β * : λͺ¨λ κ°μ λ»ν©λλ€.
β ? : νΉμ ν κ°μ΄ μμμ λ»ν©λλ€.
β - : λ²μλ₯Ό λ»ν©λλ€. (μ) μμμΌμμ μμμΌκΉμ§λ MON-WEDλ‘ νν
β , : νΉλ³ν κ°μΌ λλ§ λμ (μ) μ,μ,κΈ MON,WED,FRI
β / : μμμκ° / λ¨μ (μ) 0λΆλΆν° 맀 5λΆ 0/5
β L : μΌμμ μ¬μ©νλ©΄ λ§μ§λ§ μΌ, μμΌμμλ λ§μ§λ§ μμΌ(ν μμΌ)
β W : κ°μ₯ κ°κΉμ΄ νμΌ (μ) 15Wλ 15μΌμμ κ°μ₯ κ°κΉμ΄ νμΌ (μ ~ κΈ)μ μ°Ύμ
β # : λͺμ§Έμ£Όμ λ¬΄μ¨ μμΌμ νν (μ) 3#2 : 2λ²μ§Έμ£Ό μμμΌ
crontab νμΌμ 7νλ
m h dom mon dow user command
νλ | μ€μ κ° λ° λ΄μ© |
---|---|
m | λΆμ λνλ΄κ³ , 0~59λ‘ μ€μ νλ€. |
h | μμ λνλ΄κ³ , 0~23μΌλ‘ μ€μ νλ€. |
dom | λ μ λνλ΄κ³ , 1~31λ‘ μ€μ νλ€. |
mon | μμ λνλ΄κ³ , 1~12λ‘ μ€μ νλ€. |
dow | μμΌμ λνλ΄κ³ , 0~7λ‘ μ€μ νλ€. 0κ³Ό 7μ μΌμμΌμ ν΄λΉνκ³ 1μ μμμΌμ |
user | user-name μ¬μ©μ μ΄λ¦ |
command | μ€νν λͺ λ Ήμ΄λ₯Ό κΈ°μ νλ€. λͺ λ Ήμ΄ μμ μ¬μ©μ μ΄λ¦μ μ¨λ λλ€. |
- ‘*’ : κ° νλ μ리μ * κΈ°νΈκ° μ€λ©΄ ν΄λΉ νλμ λͺ¨λ κ°μ μλ―Ένλ€.
- ‘-’ : κ·Έ μ¬μ΄μ λͺ¨λ κ°
- ‘,’ : μ§μ ν λͺ¨λ κ°μ μλ―Έ(λΆκ·μΉν κ° μ§μ μ μ£Όλ‘ μ¬μ©)
- ‘/’ : ‘/‘λ μ°κ²°λ μ€μ κ° λ²μμμ νΉμ μ£ΌκΈ°λ‘ λλ λ μ¬μ©νλ€.
Cron μμ
01 * * * * root run-parts /etc/cron.hourly
#λ§€μΌ λ§€μ 1λΆμ root κΆνμΌλ‘ /etc/cron.hourly λ΄ λͺ¨λ μ€ν¬λ¦½νΈλ₯Ό μ€ννλ€.
02 4 * * * root run-parts /etc/cron.daily
# λ§€μΌ μλ²½ 4μ 2λΆμ /etc/cron.daily λ΄ λͺ¨λ μμ
μ μ€ννλ€.
# 2λΆμΌλ‘ ν κ²μ 맀 1λΆμλ μκ°λ³ μμ
μ΄ μ€νλκΈ° λλ¬Έμ΄λ€.
22 4 * * 0 root run-parts /etc/cron.weekly
# 맀주 μΌμμΌ(0) 4μ 22λΆμ μ£Όκ° μμ
λ€μ μ€ννλ€.
42 4 1 * * root run-parts /etc/cron.monthly
# 맀μ 1μΌ 4μ 42λΆμ μκ° μμ
λ€μ μ€ννλ€.
CronMaker μ°Έκ³ μ¬μ΄νΈ
http://www.cronmaker.com/;jsessionid=node068maia8exxmw1ia839g15hrpk46275.node0?0
Shell Script
- μ€ν¬λ¦½νΈ : ν
μ€νΈ νμμΌλ‘ μ μ₯λλ νλ‘κ·Έλ¨μΌλ‘μ νμ€μ© μμ°¨μ μΌλ‘ μ½μ΄ μ€νλλλ‘ μμ±λ νλ‘κ·Έλ¨
- μΌλ°μ μΌλ‘ μΈν°νλ¦¬νΈ λ°©μμΌλ‘ λμνλ μ»΄νμΌλμ§ μμ νλ‘κ·Έλ¨
- Shell Script : μ΄μ체μ μ μ μ¦ bash, ksh, csh λ±μ΄ μ½μ΄ μ€νν΄μ£Όλ μ€ν¬λ¦½νΈ μΈμ΄
νκ²½
- Linux κΈ°λ° μμ€ν
- Bash shell(/bin/bash)
μμ±λ°©λ²
|
|
μ μ€ν¬λ¦½νΈ μ€νλ°©λ²
./shell_test.sh
sh shell_test.sh
κΈ°λ³Έ λ¬Έλ²
- μΆλ ₯
1 2 3
#! /bin/bash echo "hello~ script"
μ μ μ€ν¬λ¦½νΈλ₯Ό μ€ννλ©΄ hello script νμ€μ μ€ννλ€.
-
μ£Όμ : #
-
λ³μμ μΈ
- =λ₯Ό μ΄μ©νμ¬ μ μΈνκ³ $λ₯Ό μ΄μ©ν΄μ μ¬μ©
- =λ 곡백μμ΄ λΆμ¬μ¨μΌνλ€.
- μ§μλ³μμλ localμ λΆμΈλ€.
- ““λ‘ κ°μΈμ μ¬μ©νλ©΄ λ μμ νλ€. λ¬Έμμ΄μ 곡백λ ν¬ν¨ν΄μ κ°μ μ΄μ© ν μ μκΈ° λλ¬Έμ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#!/bin/bash # λ³μ μ μΈ test="abc" num=100 #λ³μ μ¬μ©νκΈ° λ° μΆλ ₯ echo ${test} echo ${num} echo "${test}" echo "${num}" #μ§μλ³μ local local_var="local var" #λ³μκ° μ μΈλμ§ μμμ λ κΈ°λ³Έκ°μ μ§μ νλ©° μ¬μ©νλ λ°©λ² defalut_var=${default_var="temp"}
-
λ°°μ΄
- λ°°μ΄μ μΈλ±μ€λ 0λΆν° μμν¨
- λ°°μ΄μ΄λ¦[@]λ λ°°μ΄μ λͺ¨λ μμλ₯Ό μλ―Ένλ€.
- λ°°μ΄μ μμ μΆκ° μλ += μ°μ°μλ₯Ό μ¬μ©νλ€.
- λ°°μ΄μμ μμλ₯Ό μμ μ
- /λ₯Ό μ¬μ©ν΄ ν΄λΉ λ¬Έμμ΄ λΆλΆμ΄ μμΌλ©΄ μμ , μμ νκ³ μ νλ λ¬Έμλ λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μλ λΆλΆμ μμ
- unsetμ μ΄μ©ν΄ μμ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#!/bin/bash arr_test=("1","2") echo "${arr_test[1]}" echo "${arr_test[@]}" arr_test+=("3","4") remove_element=(3) arr_test=("${arr_test[@]/$remove_element}") for i in ${!arr_test[@]}; do if [ ${arr_test[i]} = ${remove_element} ]; then # Use unset unset arr_test[i] fi done
-
쑰건문
- if[쑰건]; then… elif[쑰건]; then…else λ₯Ό μ¬μ©νλ€.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#!/bin/bash # Numeric if statement test_num=5 if [ "${test_num}" -eq 2 ]; then echo "number is 2" elif [ "${test_num}" -eq 3 ]; then echo "number is 3" else echo "number is not 2 or 3" fi # Numeric if statement test_num=5 if (( ${test_num} > 3 )); then echo "number is greater than 3" else echo "number is not greater than 3" fi # String if statement test_str="test" if [ "${test_str}" = "test" ]; then echo "test_str is test" else echo "test_str is not test" fi
-
λ°λ³΅λ¬Έ
- while λ¬Έμ μ¬μ©
1 2 3 4 5 6 7
#!/bin/bash cnt=0 while (( "${cnt}" < 5 )); do echo "${cnt}" (( cnt = "${cnt}" + 1 )) # μ«μμ λ³μμ μ°μ°μ (())κ° νμν©λλ€. done
-
forλ¬Έμ μ¬μ©λ²
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/bin/bash arr_num=(1 2 3 4 5 6 7) # λ°°μ΄μ @λ λͺ¨λ μμλ₯Ό λ»ν©λλ€. for i in ${arr_num[@]}; do printf $i done echo for (( i = 0; i < 10; i++)); do printf $i done echo
μμ€ν¬λ¦½νΈ νμ©
github λΈλ‘κ·Έλ₯Ό λ§λ€κ² λλ©΄ submoduleκ³Ό blog repositoryμ λλ€ commitμ ν΄μΌλ§μ΄ μ μμ μΌλ‘ λΈλ‘κ·Έμ μ°λλλ κ²μ νμΈν μ μλ€.
νμ§λ§ add -> commit -> message μμ± -> push μ΄ μμ
μ λλ²μ΄λ ν΄μ£Όλ κ²μ΄ λ§€μ° λ²κ±°λ‘λ€.
λ°λΌμ μ΄λ¬ν μμ
μ μ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νμ¬ κ°λ¨ν μ²λ¦¬ν μ μλ€.
|
|
μ μμ€ν¬λ¦½νΈ μ½λλ₯Ό 보면 μ°λ¦¬κ° μ€μ λ‘ μ¬μ©νλ git λͺ
λ Ήμ΄μΈ κ²μ νμΈ ν μ μλ€.
λ°λΌμ μ μ€ν¬λ¦½νΈμ cronμ μ¬μ©νλ©΄ ν¨μ¬λ νΈνκ² μμ
ν μ μλ κ²μ μ μ μλ€.