| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- bg
- printworkingdirectory
- vmstat
- command
- mkdir
- su
- 커널패닉
- Tux
- 턱스
- 디스크
- CodeBlock
- 코드블럭
- uname
- 리눅스
- disown
- 모니터링
- Linux
- 스트림에디터
- IT
- sed
- 심볼릭링크
- pkill
- 텍스트
- iostat
- nohup
- remove
- 권한상승
- 하드링크
- 명령어
- os-release
- Today
- Total
Snow flake
[command] date, cal 명령어 본문
지금까지 tar/gzip, crontab, nohup 글에서 $(date +%Y%m%d) 같은 표현을 예시로 여러 번 썼었는데, 정작 date 명령어 자체는 다룬 적이 없었습니다. 이번 글에서는 date와 함께 달력을 보여주는 cal 명령어까지 정리해보겠습니다. 로그 파일명에 날짜를 붙이거나, 스크립트 안에서 날짜 계산이 필요할 때 자주 사용합니다.
date란
date는 현재 날짜와 시간을 출력하거나, 원하는 형식으로 바꿔서 표시하는 명령어입니다.
# 사용법
date [옵션] [+포맷]
# 기본 실행
date
# 결과 예시
Sat Sep 26 21:45:00 KST 2026
date 포맷 지정하기
+ 기호 뒤에 포맷 문자열을 붙이면 원하는 형태로 날짜를 출력할 수 있습니다. 로그 파일명이나 백업 파일명에 날짜를 넣을 때 이 방식을 가장 많이 사용합니다.
# 연월일만 (YYYYMMDD)
date +%Y%m%d
# 결과: 20260926
# 연-월-일 시:분:초
date +"%Y-%m-%d %H:%M:%S"
# 결과: 2026-09-26 21:45:00
# 요일까지 표시
date +"%Y-%m-%d %A"
# 결과: 2026-09-26 Saturday
주요 포맷 기호는 %Y(연도 4자리), %m(월), %d(일), %H(시), %M(분), %S(초), %A(요일 전체 이름)입니다. tar/gzip 글이나 crontab 글에서 다뤘던 백업 스크립트 예시에 나온 DATE=$(date +%Y%m%d)가 바로 이 포맷 기능을 활용한 것입니다.
date로 날짜 계산하기
-d 옵션을 쓰면 특정 날짜를 기준으로 며칠 전/후를 계산할 수 있습니다. 오래된 로그 파일을 정리하는 스크립트에서 자주 활용됩니다.
# 7일 전 날짜 구하기
date -d "7 days ago" +%Y%m%d
# 특정 날짜로부터 계산하기
date -d "2026-09-26 -30 days" +%Y%m%d
# 어제 날짜
date -d "yesterday" +%Y%m%d
# 내일 날짜
date -d "tomorrow" +%Y%m%d
find 글에서 다뤘던 -mtime +7처럼 파일의 수정 시간을 기준으로 찾는 방식과 달리, date로 직접 날짜 문자열을 계산해서 로그 파일명 등을 만들어야 할 때 이 옵션을 사용합니다.
시간을 초 단위(epoch)로 다루기
# 현재 시간을 유닉스 타임스탬프(초)로 변환
date +%s
# 특정 타임스탬프를 사람이 읽는 날짜로 변환
date -d @1758862980
%s는 1970년 1월 1일부터 현재까지 지난 초를 나타내는 유닉스 타임스탬프입니다. 스크립트 안에서 작업 시작/종료 시각을 기록해서 소요 시간을 계산할 때 유용합니다.
# 작업 소요 시간 계산 예시
START=$(date +%s)
# (여기서 실제 작업 수행)
END=$(date +%s)
echo "소요 시간: $((END - START))초"
cal (달력 보기)
cal은 터미널에서 달력을 보여주는 간단한 명령어입니다.
# 사용법
cal [월] [연도]
# 이번 달 달력
cal
# 특정 월/연도 지정
cal 9 2026
# 1년 전체 달력
cal -y
cal은 옵션이 단순해서 크게 어려울 게 없는 명령어입니다. 특정 작업 일정을 확인하거나, 특정 날짜가 무슨 요일이었는지 빠르게 확인할 때 씁니다.
실무에서 자주 마주치는 상황
날짜가 포함된 백업 스크립트를 작성하고, 오래된 백업만 자동으로 정리하는 흐름은 다음과 같습니다.
#!/bin/bash
# 백업 스크립트 예시
# 오늘 날짜로 백업 파일명 생성
TODAY=$(date +%Y%m%d)
tar -zcvf /backup/db_backup_${TODAY}.tar.gz /home/oracle/data/
# 작업 시작/종료 시각 기록
START=$(date +"%Y-%m-%d %H:%M:%S")
echo "백업 시작: $START" >> /home/oracle/logs/backup.log
# (백업 작업 수행)
END=$(date +"%Y-%m-%d %H:%M:%S")
echo "백업 종료: $END" >> /home/oracle/logs/backup.log
# 30일 지난 백업 파일 삭제 (find 글에서 다룬 방식)
find /backup -name "db_backup_*.tar.gz" -mtime +30 -exec rm {} \;
백업 파일명에 날짜를 넣어두면 나중에 파일 목록만 봐도 언제 만들어진 백업인지 바로 알 수 있고, 로그에 시작/종료 시각을 남겨두면 작업이 얼마나 걸렸는지 추적하기도 쉬워집니다. crontab, tar/gzip, find 글에서 다뤘던 명령어들과 date가 결합되면서, 지금까지 다룬 자동화 스크립트들이 하나의 완성된 형태로 이어지는 걸 볼 수 있습니다.
'Programming > Linux' 카테고리의 다른 글
| [command] whoami, hostname, uname 명령어 (0) | 2026.09.27 |
|---|---|
| [command] iostat, vmstat 명령어 (0) | 2026.09.25 |
| [command] wc, head, tail 명령어 (0) | 2026.09.23 |
| [command] netstat, ss 명령어 (0) | 2026.09.22 |
| [command] top 명령어 (0) | 2026.09.21 |
