์ฌ๋ฌ Unix ํ์์คํฌํ๋ฅผ ํ ๋ฒ์ ๋ณํํ๋ ๋ฐฉ๋ฒ
ํ์์คํฌํ๋ฅผ ๋ฐฐ์น ๋ณํํด์ผ ํ๋ ์ด์
์๋ฒ ๋ก๊ทธ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ณด๋ด๊ธฐ, API ์๋ต, ๋ถ์ ๋ฐ์ดํฐ์ ์ ๋ค๋ฃฐ ๋ ํ ๋ฒ์ ํ๋์ ํ์์คํฌํ๋ง ๋ง๋๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ต๋๋ค. ์ค์ ๋ฐ์ดํฐ๋ ์ข ์ข ํ์ผ, ์ด, JSON ํ์ด๋ก๋์ ์์ฒ ๋๋ ์๋ฐฑ๋ง ๊ฐ์ Unix ํ์์คํฌํ๊ฐ ํฉ์ด์ ธ ์์ต๋๋ค. ๊ฐ๊ฐ์ ์๋์ผ๋ก ๋ณํํ๋ ๊ฒ์ ๋นํ์ค์ ์ ๋๋ค. ๋ฐฐ์น ์ฒ๋ฆฌ๋ ์์ ์ซ์์ ์ฐ์ ์ฝ์ ์ ์๋ ํ์๋ผ์ธ์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค.
์ด ๊ฐ์ด๋๋ ๋ช ๋ น์ค ๋๊ตฌ, ์คํฌ๋ฆฝํธ, ์ ํฌ ์จ๋ผ์ธ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ์์คํฌํ๋ฅผ ๋ณํํ๋ ์ค์ฉ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ค๋ฃน๋๋ค.
๋ฐฉ๋ฒ 1: ์จ๋ผ์ธ ๋ฐฐ์น ๋ณํ๊ธฐ ์ฌ์ฉํ๊ธฐ
์ ํฌ Unix Timestamp Converter๋ ๋ฐฐ์น ์ ๋ ฅ์ ์ง์ํฉ๋๋ค. ์ฌ๋ฌ ํ์์คํฌํ๋ฅผ ๋ถ์ฌ๋ฃ์ผ๋ฉด(ํ ์ค์ ํ๋์ฉ ๋๋ ์ผํ๋ก ๊ตฌ๋ถ) ๋๊ตฌ๊ฐ ๋ชจ๋ ํ์์คํฌํ๋ฅผ ํ ๋ฒ์ ๋ณํํ์ฌ ์๊ฐ๋๋ณ๋ก ์ ๋ ฌ๋ ํ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ํฉ๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์์ญ์์ ์๋ฐฑ ๊ฐ์ ํ์์คํฌํ โ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๊ณ ๋น ๋ฅด๊ณ ์๊ฐ์ ์ธ ๊ฒฐ๊ณผ๊ฐ ํ์ํ ๋ โ ์ค๊ฐ ๊ท๋ชจ์ ๋ฐฐ์น์ ์ด์์ ์ ๋๋ค.
๋ฐฉ๋ฒ 2: ๋ช ๋ น์ค ๋ฐฐ์น ์ฒ๋ฆฌ
date ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๊ธฐ๋ณธ ๋ฃจํ
# bash ๋ฃจํ๋ฅผ ์ฌ์ฉํ์ฌ ํ์์คํฌํ ๋ชฉ๋ก ๋ณํ
for ts in 1785292800 1785379200 1785465600 1785552000; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
ํ์ผ์์ ์ฝ๊ธฐ
# timestamps.txt์๋ ํ ์ค์ ํ๋์ ํ์์คํฌํ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค
while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done < timestamps.txt
๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํ xargs ์ฌ์ฉ
# ๋์ฉ๋ ํ์ผ์ ๊ฒฝ์ฐ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ก xargs ์ฌ์ฉ
cat timestamps.txt | xargs -P 4 -I {} date -d "@{}" "+%Y-%m-%d %H:%M:%S"
CSV ํ์ผ๋ก ์ถ๋ ฅ
# ์๋ณธ ํ์์คํฌํ์ ๋ณํ๋ ๋ ์ง๋ก CSV ์์ฑ
echo "timestamp,date_utc,date_local" > output.csv
while read -r ts; do
utc_date=$(TZ=UTC date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
local_date=$(date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
echo "$ts,$utc_date,$local_date" >> output.csv
done < timestamps.txt
๋ฐฉ๋ฒ 3: ๋ก๊ทธ ํ์ผ์์ ํ์์คํฌํ ์ถ์ถํ๊ธฐ
๋ก๊ทธ ํ์ผ์๋ ์ข ์ข ๊ตฌ์กฐํ๋๊ฑฐ๋ ๋ฐ๊ตฌ์กฐํ๋ ํ ์คํธ์ ํ์์คํฌํ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋ค์์ ์ผ๋ฐ์ ์ธ ๋ก๊ทธ ํ์์ ๋ํ ์ค์ฉ์ ์ธ ๊ธฐ์ ์ ๋๋ค.
Apache / Nginx ์ก์ธ์ค ๋ก๊ทธ
Apache ๋ฐ Nginx ๋ก๊ทธ๋ ์ข
์ข
%{%Y-%m-%d}T ํ์์ ์ฌ์ฉํ๊ฑฐ๋, ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ Unix ํ์์คํฌํ๋ฅผ ์ฌ์ฉํฉ๋๋ค:
# Nginx ๋ก๊ทธ์์ ํ์์คํฌํ ์ถ์ถ ๋ฐ ๋ณํ
# ๋ก๊ทธ ์ค์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค: [1785292800] GET /index.html 200
grep -oP '\[\K[0-9]{10}(?=\])' access.log | while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
JSON ๋ก๊ทธ
ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ข ์ข JSON ํ์์ผ๋ก ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํฉ๋๋ค:
# jq๋ฅผ ์ฌ์ฉํ์ฌ JSON ๋ก๊ทธ ํ์ผ์์ ํ์์คํฌํ ์ถ์ถ
cat app.log | jq -r '.timestamp' | while read -r ts; do
date -d @"$ts" "+%Y-%m-%d %H:%M:%S"
done
์ฌ์ฉ์ ์ง์ ๊ตฌ๋ถ์ ๋ก๊ทธ
# ํ์์คํฌํ๊ฐ ๋ก๊ทธ์ ์ฒซ ๋ฒ์งธ ํ๋์ธ ๊ฒฝ์ฐ (ํ์ดํ๋ก ๊ตฌ๋ถ)
awk -F'|' '{ts=$1; cmd="date -d @" ts " \"+%Y-%m-%d %H:%M:%S\""; cmd | getline date; close(cmd); print date, $0}' server.log
๋ฐฉ๋ฒ 4: Python์ ์ฌ์ฉํ ๊ณ ๊ธ ๋ฐฐ์น ์ฒ๋ฆฌ
Python์ ๋ฐฐ์น ๋ณํ์ ๊ฐ์ฅ ์ ์ฐํ ๋๊ตฌ๋ก, ํนํ ํ์์คํฌํ์ ํํฐ๋ง, ๋ณํ, ๋ด๋ณด๋ด๊ธฐ๊ฐ ํ์ํ ๋ ์ ์ฉํฉ๋๋ค.
ํ์์คํฌํ ๋ชฉ๋ก ๋ณํ
from datetime import datetime
import json
timestamps = [1785292800, 1785379200, 1785465600, 1785552000]
results = []
for ts in timestamps:
dt = datetime.utcfromtimestamp(ts)
results.append({
"timestamp": ts,
"datetime_utc": dt.strftime("%Y-%m-%d %H:%M:%S"),
"date": dt.strftime("%Y-%m-%d"),
"time": dt.strftime("%H:%M:%S"),
"day_of_week": dt.strftime("%A"),
})
print(json.dumps(results, indent=2))
CSV ํ์ผ ์ฒ๋ฆฌ
import csv
from datetime import datetime
with open("data.csv", "r") as infile, open("converted.csv", "w", newline="") as outfile:
reader = csv.DictReader(infile)
writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames + ["date_utc", "date_local"])
writer.writeheader()
for row in reader:
ts = int(row["timestamp"])
dt_utc = datetime.utcfromtimestamp(ts)
row["date_utc"] = dt_utc.strftime("%Y-%m-%d %H:%M:%S")
# ์ฌ๊ธฐ๋ฅผ ์์ ์ ๋ก์ปฌ ์๊ฐ๋๋ก ๊ต์ฒดํ ์ ์์ต๋๋ค
from datetime import timezone
dt_local = datetime.fromtimestamp(ts, tz=timezone.utc).astimezone()
row["date_local"] = dt_local.strftime("%Y-%m-%d %H:%M:%S %Z")
writer.writerow(row)
print("Conversion complete. Output written to converted.csv")
๋ ์ง ๋ฒ์๋ก ํํฐ๋ง
from datetime import datetime
# ๋ฒ์ ์ ์: 2026๋
7์์ ์์๊ณผ ๋
start_ts = int(datetime(2026, 7, 1).timestamp())
end_ts = int(datetime(2026, 7, 31, 23, 59, 59).timestamp())
timestamps = [1785292800, 1785379200, 1785465600, 1785552000,
1234567890, 1000000000]
# 2026๋
7์๋ง ํํฐ๋ง
july_only = [ts for ts in timestamps if start_ts <= ts <= end_ts]
for ts in july_only:
dt = datetime.utcfromtimestamp(ts)
print(f"{ts} -> {dt.strftime('%Y-%m-%d %H:%M:%S')}")
๋ฐฉ๋ฒ 5: awk๋ฅผ ์ฌ์ฉํ ์คํธ๋ฆฌ๋ฐ ๋ณํ
๋งค์ฐ ํฐ ํ์ผ(์๋ฐฑ๋ง ํ)์ ๊ฒฝ์ฐ, awk๋ ๋ชจ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค:
#!/usr/bin/awk -f
# batch-convert.awk
# ์ฒซ ๋ฒ์งธ ํ๋๋ฅผ Unix ํ์์คํฌํ๋ก ๋ณํํ๊ณ , ๋ ์ง์ ํจ๊ป ๋ชจ๋ ํ๋๋ฅผ ์ถ๋ ฅํฉ๋๋ค
{
ts = $1
# awk์ mktime์ "YYYY MM DD HH MM SS" ํ์์ ๊ธฐ๋ํฉ๋๋ค
# ๋ณํ์ ์ํด date ๋ช
๋ น์ด๋ฅผ ํตํด ์
ธ์ ํธ์ถํฉ๋๋ค
cmd = "date -d @" ts " \"+%Y-%m-%d %H:%M:%S\""
cmd | getline date
close(cmd)
print date, $0
}
์ฌ์ฉ๋ฒ:
./batch-convert.awk server.log
๋ฐฉ๋ฒ 6: ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์์คํฌํ์ SQL ์ฌ์ฉํ๊ธฐ
ํ์์คํฌํ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ค๋ฉด SQL์ด ์์ ์ ์ฒ๋ฆฌํ๋๋ก ํ์ธ์:
PostgreSQL
SELECT
id,
event_time,
to_timestamp(event_time) AS readable_time,
to_char(to_timestamp(event_time), 'YYYY-MM-DD HH24:MI:SS') AS formatted_time
FROM events
WHERE to_timestamp(event_time) >= '2026-07-01';
MySQL
SELECT
id,
event_time,
FROM_UNIXTIME(event_time) AS readable_time,
FROM_UNIXTIME(event_time, '%Y-%m-%d %H:%i:%s') AS formatted_time
FROM events
WHERE FROM_UNIXTIME(event_time) >= '2026-07-01';
SQLite
SELECT
id,
event_time,
datetime(event_time, 'unixepoch') AS readable_time,
strftime('%Y-%m-%d %H:%M:%S', event_time, 'unixepoch') AS formatted_time
FROM events;
์ถ๋ ฅ ํ ์ด๋ธ ์์ ์ง์
# ์ด ํค๋๊ฐ ์๋ ๊น๋ํ ํ์์ ํ
์ด๋ธ ์์ฑ
convert() {
printf "%-15s %-25s %-25s\n" "TIMESTAMP" "UTC" "LOCAL"
printf "%-15s %-25s %-25s\n" "---------------" "-------------------------" "-------------------------"
while read -r ts; do
utc=$(TZ=UTC date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
local=$(date -d @"$ts" "+%Y-%m-%d %H:%M:%S")
printf "%-15s %-25s %-25s\n" "$ts" "$utc" "$local"
done <<< "$(cat "$1")"
}
์ฑ๋ฅ ๋น๊ต
| ๋ฐฉ๋ฒ | ์ ํฉํ ์ฉ๋ | ์๋ (10K ํ์์คํฌํ) | ๋ณต์ก์ฑ | |--------|----------|----------------------|------------| | ์จ๋ผ์ธ ๋ณํ๊ธฐ | ์๊ท๋ชจ ๋ฐฐ์น (< 50) | ์ฆ์ | ์์ | | Bash ๋ฃจํ | ์-์ค๊ท๋ชจ (50-10K) | ~30์ด | ๋ฎ์ | | xargs ๋ณ๋ ฌ | ์ค๊ท๋ชจ (10K-100K) | ~10์ด | ๋ฎ์ | | Python | ๋ชจ๋ ๊ท๋ชจ | ~2์ด | ์ค๊ฐ | | awk ์คํธ๋ฆผ | ๋งค์ฐ ๋๊ท๋ชจ (์๋ฐฑ๋ง) | ~5์ด | ์ค๊ฐ | | SQL | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ | ์ฆ์ | ๋ฎ์ |
๋น ๋ฅธ ์ผ์์ ์ธ ๋ฐฐ์น์๋ ์ ํฌ Unix Timestamp Converter๋ฅผ ์ฌ์ฉํ์ธ์. ์๋ํ ๋ฐ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ์๋ ์ํฌํ๋ก์ฐ์ ๋ง๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ณํ์ ์คํฌ๋ฆฝํ ํ์ธ์.