๊ณผ์ œ ๋‚ด์šฉ

  • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ
  • ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์„ ์„ค์น˜ํ•จ
sh install_mysql.sh

 

๊ฐœ๋ฐœํ™˜๊ฒฝ

  • NHN Cloud
  • CentOS 7.9

 

ํ”„๋กœ์„ธ์Šค

 

์ฝ”๋“œ

  • yum repository ์—…๋ฐ์ดํŠธ

 

  • MySQL์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
    • ์„ค์น˜๋œ ๊ฒฝ์šฐ ์‚ญ์ œ

 

  • MySQL ์„ค์น˜

 

  • MySQL ์‹คํ–‰
    • ์ž„์‹œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธ

 

  • ์„ค์น˜๊ฒฐ๊ณผ ๋กœ๊ทธ ํŒŒ์ผ๋กœ ์ €์žฅ

 

๊ฒฐ๊ณผ

๊ณผ์ œ ๋‚ด์šฉ

  • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑ
  • ์„ค์น˜ํ•  ๋ฒ„์ „์„ ๋ณ€์ˆ˜๋กœ ๋ฐ›๊ธฐ
sh install_mysql 8.0.32

 

๊ฐœ๋ฐœํ™˜๊ฒฝ

  • NHN Cloud
  • CentOS 7.9

 

ํ”„๋กœ์„ธ์Šค

 

์ฝ”๋“œ

  • ๋ฒ„์ „์„ ์ž…๋ ฅ๋ฐ›์ง€ ์•Š์•˜์„ ๋•Œ

 

  • ๋ฒ„์ „์„ ์ž…๋ ฅ๋ฐ›์•˜์„ ๋•Œ
    • ์ž…๋ ฅํ•œ ๋ฒ„์ „์„ ์„ค์น˜ํ•  ๊ฒƒ์ธ์ง€ ๋ฌป๊ธฐ

 

  • OS์™€ ์•„ํ‚คํ…์ฒ˜ ๋ฒ„์ „ ํ™•์ธ

 

  • MySQL์ด ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
    • ์ด๋ฏธ ์„ค์น˜๋œ ๊ฒฝ์šฐ ์‚ญ์ œํ•  ๊ฒƒ์ธ์ง€ ๋ฌป๊ธฐ

 

  • wget์ด ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ

 

  • MySQL ๋‹ค์šด๋กœ๋“œ ๋ฐ ์„ค์น˜

 

  • my.cnf ์„ค์ •

 

  • data, logs ํŒŒ์ผ ๋งŒ๋“ค๊ณ  ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

 

  • ์ดˆ๊ธฐํ™” ๋ฐ ์‹œ์ž‘

 

  • MySQL ์‹คํ–‰

 

๊ฒฐ๊ณผ

 

ํ”ผ๋“œ๋ฐฑ

  • ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋‹ค.
    • ์„ค์น˜ํ•  ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ํฌํŠธ๋ฒˆํ˜ธ๋„ ๋ฐ›๊ธฐ
    • ์„ค์น˜๋  ๋””๋ ‰ํ† ๋ฆฌ๋„ ๋ถ„๋ฆฌํ•ด์•ผ ํ•จ
  • OS ubuntu ๊นŒ์ง€๋Š” ๋ถ„๊ธฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ
  • wget --spider ํ†ตํ•ด์„œ url ์ •ํ•ฉ์„ฑ ํ™•์ธํ•˜๊ธฐ
  • (MySQL) ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์ ‘์†ํ•˜๊ธฐ
    • --initialize-insecure ์‚ฌ์šฉํ•˜๊ธฐ
    • --skip-grant-tables ์˜ต์…˜์€ ๋ณด์•ˆ์ƒ ์•ˆ์ „ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉX (system ์Šคํ‚ค๋งˆ์— ์žˆ๋Š” grant tabels๋ฅผ ์ฝ์ง€ ์•Š๊ณ , ๊ถŒํ•œ ์‹œ์Šคํ…œ์— ์—†์ด ์‹œ์ž‘)
  • (redis) ์žฌ๊ธฐ๋™ ์ดํ›„์—๋„ ์„ค์ •ํŒŒ์ผ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ง€์†๋˜๋„๋ก ํ•˜๊ธฐ

 

 

โœ… ๊ณต์‹๋ฌธ์„œ

https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419

 

๐Ÿ“ ๋ชฉ์ฐจ

  1. ๊ณผ์ œ ๋‚ด์šฉ
  2. ํ”„๋กœ์„ธ์Šค
  3. ์ฃผ์š” ๋ช…๋ น์–ด
  4. ์ฝ”๋“œ
  5. ๊ฒฐ๊ณผ

 

๊ณผ์ œ ๋‚ด์šฉ

  • ํŠน์ • ๋‘๋ ˆ์ด ํ”„๋กœ์ ํŠธ์— ์ผ์ผ ์Šคํฌ๋Ÿผ ํƒœ์Šคํฌ๋ฅผ ์ž๋™ ๋“ฑ๋กํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
    • ์ผ์ผ ํƒœ์Šคํฌ ์ƒ์„ฑ: [2023/01/10 (ํ™”) ์ผ์ผ ์Šคํฌ๋Ÿผ] ๋“ฑ ์ผ์ผ ์Šคํฌ๋Ÿผ ํƒœ์Šคํฌ๋ฅผ 1์ฃผ์ผ ์ „ ๋งค์ผ ์ž๋™ ์ƒ์„ฑ
    • ์ฃผ๊ฐ„ ํƒœ์Šคํฌ ์ƒ์„ฑ: 2023/01/10(ํ™”) ๋ฐ์ดํ„ฐ์šด์˜ํŒ€ ์ฃผ๊ฐ„ ์—…๋ฌด ํšŒ์˜ ์˜ ์ฃผ๊ฐ„ ํšŒ์˜ ํƒœ์Šคํฌ๋Š” ๋‹ค์Œ์ฃผ ํšŒ์˜ ํƒœ์Šคํฌ ์ž๋™ ์ƒ์„ฑ

 

ํ”„๋กœ์„ธ์Šค

๊ฐœ๋ฐœํ™˜๊ฒฝ

  • macOS Monterey
  • intel 7i / x86_64

 

๋„์‹ํ™”

  • ์ƒ์œ„ ์—…๋ฌด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
    • ์—†์œผ๋ฉด ์—ฐ ๋˜๋Š” ์›” ๋‹จ์œ„์˜ ์ƒ์œ„ ์—…๋ฌด ์ƒ์„ฑ
  • ํ•ด๋‹น ์ผ์— ์—…๋ฌด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ (์ˆ˜๋™์œผ๋กœ ๋“ฑ๋ก๋œ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธ ์ฐจ์›)
    • ์—†์œผ๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ฑ๋ก๋œ ์ผ์ผ ์—…๋ฌด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
      • ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ ์ผ์ผ ์—…๋ฌด ์ƒํƒœ-์™„๋ฃŒ/๋งŒ๊ธฐ์ผ-๋ฏธ์ • ์„ค์ •
  • ํ•˜์œ„ ์—…๋ฌด ์ƒ์„ฑ
  • ์  ํ‚จ์Šค์—์„œ ์„ค์ •ํ•œ ๋‘๋ ˆ์ด ๋Œ€ํ™”๋ฐฉ์— ๋ฉ”์‹œ์ง€ ์•Œ๋ฆผ

 

์„ธ๋ถ€์‚ฌํ•ญ

  • ์ƒ์œ„ ์—…๋ฌด์— ํ•˜์œ„ ์—…๋ฌด๋กœ ๋“ฑ๋ก๋จ
  • ํƒœ๊ทธ : ์ง€์ •ํ•œ ํƒœ๊ทธ๋ช…
  • ๋‚ ์งœ : ์ƒ์„ฑ๋  ๋•Œ ์ผ์ฃผ์ผ ํ›„ ๋‚ ์งœ๋กœ ์ž๋™ ์ƒ์„ฑ๋จ
  • ๋‹ด๋‹น์ž : ๋ณธ์ธ (๊ทธ๋ฃน์œผ๋กœ๋„ ๊ฐ€๋Šฅ)
  • ์‹คํ–‰ : ์  ํ‚จ์Šค ์‚ฌ์šฉ
    • ์ผ์ผ ์Šคํฌ๋Ÿผ : ํ‰์ผ 9์‹œ๋งˆ๋‹ค ๋นŒ๋“œ
    • ์ฃผ๊ฐ„์—…๋ฌดํšŒ์˜ : ํ™”์š”์ผ 9์‹œ๋งˆ๋‹ค ๋นŒ๋“œ

 

์ฃผ์š” ๋ช…๋ น์–ด

curl

  • ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด URL๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์„œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด
  • Shell์—์„œ REST API(http) ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  • ์ง€์›ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ : http / https / ftp / ldap / scp / telnet / smtp / pop3 ๋“ฑ
  • Linux/mac OS : ๊ธฐ๋ณธ ํƒ‘์žฌ
  • ์‚ฌ์šฉํ•œ ์˜ต์…˜
    • -d : http POST ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ
    • -s : ์ง„ํ–‰ ๋‚ด์šฉ์ด๋‚˜ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ์•ˆ๋˜๊ฒŒ
    • -X : ์š”์ฒญ์‹œ ์‚ฌ์šฉํ•  ๋ฉ”์†Œ๋“œ ์ข…๋ฅ˜
    • -H : ์ „์†กํ•  ํ—ค๋” ์ง€์ •



date

  • ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์„ ๋‹ค์–‘ํ•œ ํฌ๋งท์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ , ๊ณ„์‚ฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด
  • macOS์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ
    • macOS๋Š” date ๋ช…๋ น์–ด์— -d ์˜ต์…˜์ด ์ ์šฉ๋˜์ง€ ์•Š์Œ
    • ํฌ๋งท : -v[-(๊ณผ๊ฑฐ)/+(๋ฏธ๋ž˜)][์ผ์ˆ˜]d
# ์˜ค๋Š˜๋กœ๋ถ€ํ„ฐ 7์ผ ๋’ค yyyy/mm/dd ํ˜•์‹
date -v+7d +%Y/%m/%d

# ์˜ค๋Š˜๋กœ๋ถ€ํ„ฐ 7์ผ ๋’ค ์š”์ผ ํ˜•์‹
date -v+7d +%A  # ์ˆ˜์š”์ผ
date -v+7d +%a  # ์ˆ˜



jq

  • Shell์—์„œ JSON์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ์‚ฌ์šฉํ•œ ์˜ต์…˜
    • -r : ๊ฒฐ๊ณผ๊ฐ’์— ๋”ฐ์˜ดํ‘œ ์ œ๊ฑฐํ•ด์„œ raw ๊ฐ’ ๋ฐ›๊ธฐ
  • ์„ค์น˜
# macOS
brew install jq



crontab

  • Linux์—์„œ ์ผ์ • ์ฃผ๊ธฐ๋‚˜ ํŠน์ • ์‹œ๊ฐ„์— ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด (์Šค์ผ€์ค„๋Ÿฌ)
# crontab ์ž‘์„ฑ
crontab -e

# crontab ์ž‘์—… ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ
crontab -l

# crontab ๋ชจ๋“  ์ž‘์—… ์‚ญ์ œ
crontab -r

# ๋งค์ฃผ ์ผ์š”์ผ 23์‹œ 55๋ถ„์— ์ˆ˜ํ–‰
55 23 * * 0 ํŒŒ์ผ ์ €์žฅ๋œ ์œ„์น˜ >> ๋กœ๊ทธ ์ €์žฅํ•  ์œ„์น˜

# ๋งค์ฃผ ์›”-๊ธˆ์š”์ผ 23์‹œ 55-59๋ถ„์— ์ˆ˜ํ–‰
55-59 23 * * 1-5 ํŒŒ์ผ ์ €์žฅ๋œ ์œ„์น˜ >> ๋กœ๊ทธ ์ €์žฅํ•  ์œ„์น˜

 

์ฝ”๋“œ

  • ๋ณ€์ˆ˜

 

  • ๋กœ์ง
  • ์ƒ์œ„ ์—…๋ฌด ์œ ๋ฌด ํ™•์ธ
    • ์—†์œผ๋ฉด ์ƒ์œ„ ์—…๋ฌด ์ƒ์„ฑ

 

  • ํ•˜์œ„ ์—…๋ฌด ์œ ๋ฌด ํ™•์ธ
    • ์žˆ์œผ๋ฉด ์ข…๋ฃŒ

 

  • ์—†์œผ๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ ์ผ์ผ ์—…๋ฌด ํ™•์ธ ํ›„ ์ƒํƒœ-์™„๋ฃŒ ๋ฐ ๋งŒ๊ธฐ์ผ-๋ฏธ์ • ์„ค์ •

 

  • ํ•˜์œ„ ์—…๋ฌด ์ƒ์„ฑ

 

๊ฒฐ๊ณผ

  • ์„ฑ๊ณต ํ™”๋ฉด (์—ฐ ๋‹จ์œ„)
  • ์„ฑ๊ณต ํ™”๋ฉด (์›” ๋‹จ์œ„)

 

  • ์ด๋ฏธ ํ•ด๋‹น ์ผ์˜ ์—…๋ฌด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ


๊ณ ๋ คํ•œ ์‚ฌํ•ญ

  1. ์ƒ์œ„ ์—…๋ฌด๊ฐ€ ์—ฐ ๋˜๋Š” ์›” ๋‹จ์œ„๋ฅผ ์„ ํƒํ•˜์—ฌ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„
    → ์—ฐ๋„๋‚˜ ์›”์ด ๋ฐ”๋€Œ๋”๋ผ๋„ ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ƒ์œ„ ์—…๋ฌด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ˆ˜์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„
  2. ๋งŒ๊ธฐ์ผ(์—†์Œ/๋ฏธ์ •/์žˆ์Œ) ์„ค์ •
    → ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์—…๋ฌด๋ฅผ ์—…๋ฌด์ƒํƒœ๋ฅผ ์™„๋ฃŒ๋กœ ๋ฐ”๊ฟ€ ๊ฒฝ์šฐ : ๋งŒ๊ธฐ์ผ์ด ์„ค์ •๋˜์–ด ์บ˜๋ฆฐ๋”์— ๋‚˜์˜ค๊ฒŒ ๋จ
    → ์—…๋ฌด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ• ๋•Œ dueDateFlag: false ๋กœ ํ•  ๊ฒฝ์šฐ, ๋งŒ๊ธฐ์ผ์ด ์—†์Œ ์ƒํƒœ๊ฐ€ ๋จ
    → ํŠน์ด์‚ฌํ•ญ 1 : ์—…๋ฌด์ƒํƒœ(ํ• ์ผ/์ง„ํ–‰์ค‘/์™„๋ฃŒ) ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
    → ํŠน์ด์‚ฌํ•ญ 2 : dueDateFlag๋ฅผ true๋กœ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ถŒ์žฅ
  3. ํฌ๋ก ํƒญ๋งŒ ์‚ฌ์šฉํ–ˆ์„ ๊ฒฝ์šฐ, ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•œ ๊ฒฝ์šฐ์— ์žฌ์‹คํ–‰ ๋“ฑ์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์‰ฝ์ง€ ์•Š์Œ
    → ์  ํ‚จ์Šค์—์„œ ๋‘๋ ˆ์ด์™€ ์—ฐ๋™๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด ๋นŒ๋“œ ์‹คํŒจ์‹œ ์žฌ์‹œ๋„ ํšŸ์ˆ˜๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋‹ค์‹œ ๋นŒ๋“œ๋˜๋„๋ก ์„ค์ •
  4. ๋นŒ๋“œ ๊ฒฐ๊ณผ๋ฅผ ๋‘๋ ˆ์ด ๋ฉ”์‹œ์ง€ ์•Œ๋ฆผ
    → ๋‘๋ ˆ์ด ๋Œ€ํ™”๋ฐฉ ๋‹จ์œ„๋กœ ๋ฉ”์‹œ์ง€ ๊ฐ€๋Šฅ

 

๋ณด์™„์ด ํ•„์š”ํ•œ ์‚ฌํ•ญ

  1. ์ƒ์œ„ ์—…๋ฌด ์ƒ์„ฑ์‹œ ํ•˜์œ„ ์—…๋ฌด๊ฐ€ ๋ฐ”๋กœ ๋“ฑ๋ก๋˜์ง€ ์•Š๋Š” ์ 
    → ๋™์‹œ์„ฑ ๋ฌธ์ œ์ธ๊ฐ€ ์‹ถ์–ด wait๋ฅผ ๊ฑธ์–ด๋ดค๋Š”๋ฐ ๋˜์ง€ ์•Š์•„์„œ ์ข€ ๋” ํ™•์ธ ํ•„์š”
  2. ์ƒ์œ„ ์—…๋ฌด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ํƒœ๊ทธ๋„ ํ•จ๊ป˜ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋„๋ก (ํ˜„์žฌ๋Š” ํƒœ๊ทธ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •๋˜์–ด ์žˆ์Œ)
    → 'application/x-www-form-urlencoded' not supported ์—๋Ÿฌ ํ™•์ธ ํ•„์š”
  3. ์  ํ‚จ์Šค๋ด‡ ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ ์„ค์ •์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธ
    → ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ข€ ๋” ํ™•์ธ ํ•„์š”

โœ… ๊ณต์‹๋ฌธ์„œ

https://helpdesk.dooray.com/share/pages/9wWo-xwiR66BO5LGshgVTg/2939987647631384419

 

๋ช…๋ น์–ด

curl

  • ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด URL๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด์„œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด
  • Shell์—์„œ REST API(http) ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ
  • ์ง€์›ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ : http / https / ftp / ldap / scp / telnet / smtp / pop3 ๋“ฑ
  • Linux/mac OS : ๊ธฐ๋ณธ ํƒ‘์žฌ
  • ์‚ฌ์šฉํ•œ ์˜ต์…˜
    • -d : http POST ์š”์ฒญ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ
    • -s : ์ง„ํ–‰ ๋‚ด์šฉ์ด๋‚˜ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ ์•ˆ๋˜๊ฒŒ
    • -X : ์š”์ฒญ์‹œ ์‚ฌ์šฉํ•  ๋ฉ”์†Œ๋“œ ์ข…๋ฅ˜
    • -H : ์ „์†กํ•  ํ—ค๋” ์ง€์ •

 

date

  • ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์„ ๋‹ค์–‘ํ•œ ํฌ๋งท์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ , ๊ณ„์‚ฐํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด
  • macOS์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ
    • macOS๋Š” date ๋ช…๋ น์–ด์— -d ์˜ต์…˜์ด ์ ์šฉ๋˜์ง€ ์•Š์Œ
    • ํฌ๋งท : -v[-(๊ณผ๊ฑฐ)/+(๋ฏธ๋ž˜)][์ผ์ˆ˜]d
# ์˜ค๋Š˜๋กœ๋ถ€ํ„ฐ 7์ผ ๋’ค yyyy/mm/dd ํ˜•์‹
date -v+7d +%Y/%m/%d

# ์˜ค๋Š˜๋กœ๋ถ€ํ„ฐ 7์ผ ๋’ค ์š”์ผ ํ˜•์‹
date -v+7d +%A  # ์ˆ˜์š”์ผ
date -v+7d +%a  # ์ˆ˜

 

jq

  • Shell์—์„œ JSON์„ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ์‚ฌ์šฉํ•œ ์˜ต์…˜
    • -r : ๊ฒฐ๊ณผ๊ฐ’์— ๋”ฐ์˜ดํ‘œ ์ œ๊ฑฐํ•ด์„œ raw ๊ฐ’ ๋ฐ›๊ธฐ
  • ์„ค์น˜
# macOS
brew install jq

 

crontab

  • Linux์—์„œ ์ผ์ • ์ฃผ๊ธฐ๋‚˜ ํŠน์ • ์‹œ๊ฐ„์— ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด (์Šค์ผ€์ค„๋Ÿฌ)
# crontab ์ž‘์„ฑ
crontab -e

# crontab ์ž‘์—… ๋ฆฌ์ŠคํŠธ ๋ณด๊ธฐ
crontab -l

# crontab ๋ชจ๋“  ์ž‘์—… ์‚ญ์ œ
crontab -r
# ๋งค์ฃผ ์ผ์š”์ผ 23์‹œ 55๋ถ„์— ์ˆ˜ํ–‰
55 23 * * 0 ํŒŒ์ผ ์ €์žฅ๋œ ์œ„์น˜ >> ๋กœ๊ทธ ์ €์žฅํ•  ์œ„์น˜

# ๋งค์ฃผ ์›”-๊ธˆ์š”์ผ 23์‹œ 55-59๋ถ„์— ์ˆ˜ํ–‰
55-59 23 * * 1-5 ํŒŒ์ผ ์ €์žฅ๋œ ์œ„์น˜ >> ๋กœ๊ทธ ์ €์žฅํ•  ์œ„์น˜

 

๊ฐœ๋ฐœํ™˜๊ฒฝ

  • macOS Big Sur
  • intel 7i / x86_64

 

์‹œ๋‚˜๋ฆฌ์˜ค

  1. ์š”์ฒญํ•œ ์ •๋ณด์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
  2. ํ•ด๋‹น ์ผ์— ์—…๋ฌด๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ํ™•์ธ
    1. ์žˆ์œผ๋ฉด ์ข…๋ฃŒ
    2. ์—†์œผ๋ฉด
      1. ๊ฐ€์žฅ ์ตœ๊ทผ ์ผ์ผ ์—…๋ฌด ์ƒํƒœ-์™„๋ฃŒ/๋งŒ๊ธฐ์ผ-๋ฏธ์ • ์„ค์ •
      2. ์ƒˆ ์—…๋ฌด ์ƒ์„ฑ

 

  • ์ƒ์œ„ ์—…๋ฌด(์ผ์ผ ์Šคํฌ๋Ÿผ ๋˜๋Š” ์ฃผ๊ฐ„์—…๋ฌดํšŒ์˜)์— ํ•˜์œ„ ์—…๋ฌด๋กœ ์ถ”๊ฐ€๋จ
  • ํƒœ๊ทธ : ์ƒ์œ„ ์—…๋ฌด
  • ๋‚ ์งœ : ์ƒ์„ฑ๋  ๋•Œ ์ผ์ฃผ์ผ ํ›„ ๋‚ ์งœ๋กœ ์ž๋™ ์ƒ์„ฑ๋จ
  • ๋“ฑ๋ก์ž/๋‹ด๋‹น์ž : ๋ณธ์ธ (๊ทธ๋ฃน์œผ๋กœ๋„ ๊ฐ€๋Šฅ)

 

์ฝ”๋“œ

์ผ์ผ ์Šคํฌ๋Ÿผ

  • ๋ณ€์ˆ˜

 

  • ์š”์ฒญํ•œ ์ •๋ณด์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ

 

 

  • ํ•ด๋‹น ์ผ์— ์—…๋ฌด๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ํ™•์ธ
    • ์žˆ์œผ๋ฉด ์ข…๋ฃŒ

 

  • ์—†์œผ๋ฉด
    • ๊ฐ€์žฅ ์ตœ๊ทผ ์ผ์ผ ์—…๋ฌด ์ƒํƒœ-์™„๋ฃŒ/๋งŒ๊ธฐ์ผ-๋ฏธ์ • ์„ค์ •

 

  • ์ƒˆ ์—…๋ฌด ์ƒ์„ฑ

 

 

 

์ฃผ๊ฐ„ ์—…๋ฌด ํšŒ์˜

  • ๋ณ€์ˆ˜

 

  • ์š”์ฒญํ•œ ์ •๋ณด์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ

 

  • ํ•ด๋‹น ์ผ์— ์—…๋ฌด๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ํ™•์ธ
    • ์žˆ์œผ๋ฉด ์ข…๋ฃŒ

 

  • ์—†์œผ๋ฉด
    • ๊ฐ€์žฅ ์ตœ๊ทผ ์ผ์ผ ์—…๋ฌด ์ƒํƒœ-์™„๋ฃŒ/๋งŒ๊ธฐ์ผ-๋ฏธ์ • ์„ค์ •

 

  • ์ƒˆ ์—…๋ฌด ์ƒ์„ฑ

 

 

๊ฒฐ๊ณผ

์ผ์ผ ์Šคํฌ๋Ÿผ

  • ์š”์ฒญ๋œ ์ •๋ณด๊ฐ€ ์ž˜๋ชป ๋˜์—ˆ์„ ๊ฒฝ์šฐ

 

  • ์ด๋ฏธ ํ•ด๋‹น ์ผ์˜ ์—…๋ฌด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ

 

  • ์ •์ƒ์ ์œผ๋กœ ์—…๋ฌด๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ

 

์ฃผ๊ฐ„ ์—…๋ฌด ํšŒ์˜

  • ์š”์ฒญ๋œ ์ •๋ณด๊ฐ€ ์ž˜๋ชป ๋˜์—ˆ์„ ๊ฒฝ์šฐ

 

  • ์ด๋ฏธ ํ•ด๋‹น ์ผ์˜ ์—…๋ฌด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ

 

  • ์ •์ƒ์ ์œผ๋กœ ์—…๋ฌด๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ

 

ํฌ๋ก ํƒญ

  • ์ผ์ผ ์Šคํฌ๋Ÿผ : ํ‰์ผ 9์‹œ ์‹คํ–‰
  • ์ฃผ๊ฐ„ ์—…๋ฌด ํšŒ์˜ : ํ™”์š”์ผ 9์‹œ ์‹คํ–‰
  • ๋กœ๊ทธ ํŒŒ์ผ ์ƒ์„ฑ

๊ตฌํ˜„

๊ฐœ์š”

Bash๋กœ ์ž‘์„ฑ๋œ ๊ฐ„๋‹จํ•œ ๊ณ„์‚ฐ๊ธฐ ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋‘ ๊ฐœ์˜ ์ˆซ์ž์™€ ์—ฐ์‚ฐ์ž๋ฅผ ์ฝ๊ณ  ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ค‘์ง€๋ฅผ ์„ ํƒํ•  ๋•Œ๊นŒ์ง€ ์ด์ „ ๊ณ„์‚ฐ์˜ ๊ฒฐ๊ณผ๋กœ ๊ณ„์‚ฐ์„ ๊ณ„์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์–ธ์–ด

bash, shell script

์ฝ”๋“œ ๋ฐ ํ•จ์ˆ˜

์Šคํฌ๋ฆฝํŠธ๋Š” ๋‚˜์ค‘์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋‘ ๊ฐœ์˜ ์ •๊ทœ์‹ REGEX_NUMBER ๋ฐ REGEX_OPERATION์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • #!/bin/bash : ํ•ด๋‹น ํŒŒ์ผ์„ bash ์‰˜๋กœ ์‹คํ–‰์‹œํ‚จ๋‹ค๋Š” ์˜๋ฏธ
  • TOTAL : ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜
  • FLAG : ์—ฐ์‚ฐ์„ ๊ณ„์† ํ•  ์ง€ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜
  • REGEX_NUMBER : ์ˆซ์ž ํ™•์ธ ์ •๊ทœํ‘œํ˜„์‹
  • REGEX_OPERATION : ์‚ฌ์น™์—ฐ์‚ฐ ํ™•์ธ ์ •๊ทœํ‘œํ˜„์‹

is_number

์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•œ ๋‹ค์Œ REGEX_NUMBER ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์ด ์œ ํšจํ•œ ์ˆซ์ž์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ์ด ์œ ํšจํ•œ ์ˆซ์ž์ด๋ฉด ํ•จ์ˆ˜๋Š” ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ž…๋ ฅ์ด ์œ ํšจํ•œ ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

 

๋ฌธ์ž ์„ค๋ช…
" " " " ์‚ฌ์ด์— ๋“ค์–ด์žˆ๋Š” ๋ชจ๋“  ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ์ผ๋ฐ˜ ๋ฌธ์ž๋กœ ์ธ์‹ํ•˜์ง€๋งŒ ๋‹จ, $()์™€ ` `(๋ช…๋ น์–ด ๋Œ€์ฒด ํŠน์ˆ˜๋ฌธ์ž), $ (๋ณ€์ˆ˜ ๊ฐ’ ๋Œ€์ฒด ํŠน์ˆ˜๋ฌธ์ž), \ (quotation ํŠน์ˆ˜๋ฌธ์ž) ๋“ฑ์€ ์˜ˆ์™ธ

์ฆ‰, echo "$op" ์œผ๋กœ ํ•˜๋ฉด * ๋กœ ์ž…๋ ฅ๋ฐ›์€ ์ธ์ž๊ฐ’์„ asterisk์ด ์•„๋‹Œ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ * ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

is_operation

is_number์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ์—ฐ์‚ฐ(+, -, *, /, %)์„ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  REGEX_OPERATION ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

is_divided_by_zero

์—ฐ์‚ฐ์ด ๋‚˜๋ˆ„๊ธฐ(/)์ด๊ณ  ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ 0์ธ์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‘ ์กฐ๊ฑด์ด ๋ชจ๋‘ ์ฐธ์ด๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ƒˆ ์—ฐ์‚ฐ๊ธฐํ˜ธ์™€ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

calculate

์„ธ ๊ฐœ์˜ ์ธ์ˆ˜(์—ฐ์‚ฐ์ž์™€ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. case ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ๊ฒฐ์ •ํ•œ ๋‹ค์Œ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋Š” TOTAL ๋ณ€์ˆ˜์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

is_answer

์‚ฌ์šฉ์ž์—๊ฒŒ "YES" ๋˜๋Š” "NO"๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ FLAG ๋ณ€์ˆ˜๋ฅผ 1 ๋˜๋Š” 0์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์œ ์—ฐํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€๋ฌธ์ž ๋˜๋Š” ์†Œ๋ฌธ์ž ๋˜๋Š” ์ถ•์•ฝํ˜• "y" ๋˜๋Š” "n"์œผ๋กœ "YES" ๋˜๋Š” "NO"๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

main

์‚ฌ์šฉ์ž๊ฐ€ ์ค‘์ง€๋ฅผ ์„ ํƒํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋˜๋Š” ๋ฃจํ”„์— ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ๋ฃจํ”„ ๋‚ด์—์„œ ์Šคํฌ๋ฆฝํŠธ๋Š” is_number ๋ฐ is_operation ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž, ์—ฐ์‚ฐ์ž ๋ฐ ๋‘ ๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ์ฝ์€ ๋‹ค์Œ is_divided_by_zero ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์ด 0์œผ๋กœ ๋‚˜๋‰˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ด 0์œผ๋กœ ๋‚˜๋ˆ„์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์—ฐ์‚ฐ ํ•จ์ˆ˜์— ์—ฐ์‚ฐ์ž์™€ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ณ„์†ํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ค‘์ง€๋ฅผ ์„ ํƒํ•˜๋ฉด ๋ฃจํ”„๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํ”„๊ฐ€ ๋๋‚˜๋ฉด ์Šคํฌ๋ฆฝํŠธ๋Š” TOTAL ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ธ์‡„ํ•ฉ๋‹ˆ๋‹ค.

  • $op ๋ฅผ "$op"๋กœ ๋„˜๊ฒจ์ค˜์•ผ ์—ฐ์‚ฐ๊ธฐํ˜ธ๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ธ์‹ํ•ด์„œ ์ œ๋Œ€๋กœ ์ž‘๋™

๊ฒฐ๊ณผ

์‹คํ–‰ ๋ฐฉ๋ฒ•

sh cal.sh

ํ™”๋ฉด

๊ถ๊ธˆํ•œ ์ 

  • -eq vs =
    ๊ฐ’์„ ๋น„๊ตํ•  ๋•Œ, -eq์™€ =์˜ ์„ฑ๋Šฅ์ด๋‚˜.. ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€? ์–ด๋–ค๊ฑธ ์“ฐ๋Š”๊ฒŒ ์ข‹์€์ง€?

+ Recent posts