date 명령어
date 명령어는 리눅스 시스템에서 현재 날짜와 시간을 출력하거나 설정하는 유틸리티입니다. 이 명령어는 시스템의 현재 시간을 확인하고, 다양한 형식으로 날짜와 시간 정보를 표시할 수 있습니다.
기본 사용법
현재 날짜와 시간 출력
가장 기본적인 사용법으로, 현재 시스템의 날짜와 시간을 출력합니다.
hojin@DESKTOP-11LMH3B:~$ date
Thu May 21 15:41:31 KST 2020
날짜 형식 지정
date 명령어는 다양한 형식으로 날짜와 시간을 출력할 수 있습니다.
기본 형식 옵션
# 년-월-일 형식
hojin@DESKTOP-11LMH3B:~$ date +%Y-%m-%d
2020-05-21
# 년/월/일 형식
hojin@DESKTOP-11LMH3B:~$ date +%Y/%m/%d
2020/05/21
# 요일, 월, 일, 년도
hojin@DESKTOP-11LMH3B:~$ date +%A, %B %d, %Y
Thursday, May 21, 2020
# 24시간 형식
hojin@DESKTOP-11LMH3B:~$ date +%Y-%m-%d %H:%M:%S
2020-05-21 15:41:31
# 12시간 형식
hojin@DESKTOP-11LMH3B:~$ date +%Y-%m-%d %I:%M:%S %p
2020-05-21 03:41:31 PM
자주 사용되는 형식 지정자
| 지정자 | 설명 | 예시 |
|---|---|---|
%Y |
4자리 년도 | 2020 |
%y |
2자리 년도 | 20 |
%m |
월 (01-12) | 05 |
%d |
일 (01-31) | 21 |
%H |
시간 (00-23) | 15 |
%I |
시간 (01-12) | 03 |
%M |
분 (00-59) | 41 |
%S |
초 (00-59) | 31 |
%A |
요일 (전체) | Thursday |
%a |
요일 (축약) | Thu |
%B |
월 (전체) | May |
%b |
월 (축약) | May |
%p |
AM/PM | PM |
%Z |
시간대 | KST |
%z |
시간대 오프셋 | +0900 |
%s |
Unix 타임스탬프 | 1590049291 |
고급 사용법
Unix 타임스탬프
Unix 타임스탬프(1970년 1월 1일부터의 초 단위)를 출력합니다.
hojin@DESKTOP-11LMH3B:~$ date +%s
1590049291
타임스탬프에서 날짜 변환
Unix 타임스탬프를 읽기 쉬운 날짜 형식으로 변환할 수 있습니다.
hojin@DESKTOP-11LMH3B:~$ date -d @1590049291
Thu May 21 15:41:31 KST 2020
특정 날짜 출력
특정 날짜를 지정하여 해당 날짜의 정보를 출력할 수 있습니다.
# 내일 날짜
hojin@DESKTOP-11LMH3B:~$ date -d "tomorrow"
Fri May 22 15:41:31 KST 2020
# 어제 날짜
hojin@DESKTOP-11LMH3B:~$ date -d "yesterday"
Wed May 20 15:41:31 KST 2020
# 특정 날짜
hojin@DESKTOP-11LMH3B:~$ date -d "2020-05-21"
Thu May 21 00:00:00 KST 2020
# 상대적 날짜
hojin@DESKTOP-11LMH3B:~$ date -d "1 week ago"
Thu May 14 15:41:31 KST 2020
hojin@DESKTOP-11LMH3B:~$ date -d "2 months ago"
Thu Mar 21 15:41:31 KST 2020
시간대 설정
다른 시간대의 시간을 확인할 수 있습니다.
# UTC 시간
hojin@DESKTOP-11LMH3B:~$ date -u
Thu May 21 06:41:31 UTC 2020
# 특정 시간대
hojin@DESKTOP-11LMH3B:~$ TZ='America/New_York' date
Thu May 21 02:41:31 EDT 2020
hojin@DESKTOP-11LMH3B:~$ TZ='Europe/London' date
Thu May 21 07:41:31 BST 2020
실용적인 예제
파일명에 날짜 사용
백업 파일이나 로그 파일의 이름에 날짜를 포함할 수 있습니다.
# 현재 날짜로 파일명 생성
hojin@DESKTOP-11LMH3B:~$ backup_name="backup_$(date +%Y%m%d_%H%M%S).tar.gz"
hojin@DESKTOP-11LMH3B:~$ echo $backup_name
backup_20200521_154131.tar.gz
# 파일 생성
hojin@DESKTOP-11LMH3B:~$ touch "log_$(date +%Y-%m-%d).txt"
스크립트에서 활용
date 명령어는 스크립트에서 매우 유용하게 활용됩니다.
#!/bin/bash
# 현재 날짜를 변수에 저장
current_date=$(date +%Y-%m-%d)
current_time=$(date +%H:%M:%S)
echo "현재 날짜: $current_date"
echo "현재 시간: $current_time"
# 로그 파일 생성
log_file="log_${current_date}.log"
echo "[$(date +%Y-%m-%d %H:%M:%S)] 스크립트 시작" >> $log_file
시스템 시간 설정
시스템 시간을 설정할 수도 있습니다 (root 권한 필요).
# 시스템 시간 설정 (root 권한 필요)
sudo date -s "2020-05-21 15:41:31"
# 또는
sudo date 052115412020.31
문제 해결
시간대 문제
시간대가 올바르게 설정되지 않은 경우 해결 방법입니다.
# 현재 시간대 확인
hojin@DESKTOP-11LMH3B:~$ timedatectl status
Local time: Thu 2020-05-21 15:41:31 KST
Universal time: Thu 2020-05-21 06:41:31 UTC
RTC time: Thu 2020-05-21 06:41:31
Time zone: Asia/Seoul (KST, +0900)
# 시간대 목록 확인
hojin@DESKTOP-11LMH3B:~$ timedatectl list-timezones | grep Seoul
Asia/Seoul
# 시간대 설정
sudo timedatectl set-timezone Asia/Seoul
날짜 형식 오류
날짜 형식이 올바르지 않은 경우의 해결 방법입니다.
# 올바른 날짜 형식 예시
hojin@DESKTOP-11LMH3B:~$ date -d "2020-05-21"
hojin@DESKTOP-11LMH3B:~$ date -d "May 21 2020"
hojin@DESKTOP-11LMH3B:~$ date -d "21 May 2020"
# 잘못된 형식 (오류 발생 가능)
hojin@DESKTOP-11LMH3B:~$ date -d "2020/05/21" # 대시(-) 사용 권장
고급 기능
날짜 계산
date 명령어를 사용하여 날짜 계산을 수행할 수 있습니다.
#!/bin/bash
# 7일 후 날짜 계산
future_date=$(date -d "7 days" +%Y-%m-%d)
echo "7일 후: $future_date"
# 30일 전 날짜 계산
past_date=$(date -d "30 days ago" +%Y-%m-%d)
echo "30일 전: $past_date"
# 특정 날짜로부터 계산
start_date="2020-05-01"
end_date=$(date -d "$start_date + 1 month" +%Y-%m-%d)
echo "시작일: $start_date"
echo "종료일: $end_date"
로그 타임스탬프
로그 파일에 타임스탬프를 추가하는 방법입니다.
# 로그에 타임스탬프 추가
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 작업 시작" >> /var/log/app.log
# 또는 ISO 8601 형식
echo "[$(date -Iseconds)] 작업 시작" >> /var/log/app.log
date 명령어는 리눅스 시스템 관리와 스크립트 작성에서 필수적인 도구입니다. 다양한 형식 지정자와 옵션을 활용하여 효율적으로 날짜와 시간 정보를 처리할 수 있습니다.
서브목차