날짜와 시간을 확인하고 조작하는 리눅스 명령어들
리눅스 환경에서는 시스템의 날짜 및 시간을 조회하거나 수정하기 위해 여러 가지 기본 제공 명령어를 사용할 수 있다. 주로cal, date, hwclock 명령어가 활용되며, 각각 달력 출력, 시스템 시간 조작, 하드웨어 클록 동기화에 특화되어 있다.
cal: 텍스트 기반 달력 출력 도구
cal 명령은 지정된 월 또는 연도의 달력을 콘솔에서 보기 쉽게 출력한다. 기본적으로 현재 월의 달력을 표시하며, 다양한 옵션으로 출력 형태를 제어할 수 있다.
문법: cal [옵션] [[일] 월 [년도]]
| 옵션 | 설명 |
|---|---|
-j | 해당 월의 각 날짜를 1월 1일부터 누적된 일수(연중 몇 번째 날인지)로 표시 |
-y | 해당 연도 전체의 12개월 달력을 한 번에 출력 |
-m | 주 시작 요일을 월요일로 설정하여 출력 |
-s | 기본값인 일요일을 주의 첫날로 설정 (기본 동작) |
-3 | 지난달, 이번달, 다음달 총 3개월 분량의 달력을 연속 출력 |
예제: 2024년 전체 달력 출력
$ cal -y 2024
2024
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 1 2 3 4 5 6 7 1 2 3 4 5 6 7
2 3 4 5 6 7 8 8 9 10 11 12 13 14 8 9 10 11 12 13 14
9 10 11 12 13 14 15 15 16 17 18 19 20 21 15 16 17 18 19 20 21
16 17 18 19 20 21 22 22 23 24 25 26 27 28 22 23 24 25 26 27 28
23 24 25 26 27 28 29 29 30 31
30 31
...
예제: 오늘을 포함한 세 달 치 달력 보기
$ cal -3
date: 시스템 시간 조회 및 설정
date는 현재 시스템의 날짜와 시간을 출력하거나 수정할 수 있는 핵심 명령어다. 형식 지정자를 사용하면 원하는 형태로 시간 정보를 포맷팅할 수 있다.
문법: date [옵션] [+포맷]
| 옵션 | 기능 |
|---|---|
-d "문자열" | 현재 시간 대신 특정 날짜/시간 문자열을 해석하여 출력 (예: "next Monday") |
-s "문자열" | 시스템 시간을 지정된 값으로 설정 (관리자 권한 필요) |
-r 파일 | 특정 파일의 최종 수정 시간을 출력 |
-u | UTC (협정 세계시) 기준 시간을 사용 |
-f 파일 | 파일에 저장된 각 줄의 시간 문자열을 순차적으로 파싱 |
예제: 시스템 시간을 2030년 7월 15일 오전 10시 30분으로 변경
$ sudo date -s "2030-07-15 10:30:00"
Mon Jul 15 10:30:00 KST 2030
예제: 현재 시간을 초 단위까지 Unix 타임스탬프로 출력
$ date +%s
1718923800
예제: 파일의 수정 시각 확인
$ date -r /etc/passwd
Fri May 20 14:22:10 KST 2024
hwclock: BIOS 하드웨어 시계 조작
PC의 메인보드에 장착된 RTC(Real-Time Clock) 칩은 전원이 꺼져도 시간을 유지한다.hwclock은 이 하드웨어 클록과 시스템 운영체제 간의 시간 동기화를 담당한다.
문법: hwclock [옵션]
| 옵션 | 설명 |
|---|---|
--show (-r) | 하드웨어 클록의 현재 시간을 출력 |
--systohc (-w) | 현재 시스템 시간을 기준으로 하드웨어 클록을 업데이트 |
--hctosys (-s) | 하드웨어 클록의 값을 읽어 시스템 시간으로 설정 |
--test | 실제로 반영하지 않고 수행 결과만 테스트 |
--utc | 클록을 UTC 모드로 간주하고 처리 |
--compare | 주기적으로 시스템 클록과 하드웨어 클록 차이를 비교 출력 |
예제: 시스템 시간을 기준으로 하드웨어 시계 갱신
$ date
Mon Jul 15 10:35:20 KST 2030
$ sudo hwclock --systohc
$ hwclock --show
Mon 15 Jul 2030 10:35:25 AM KST -0.123456 seconds
예제: 부팅 시 하드웨어 클록으로부터 시스템 시간 복원
$ sudo hwclock --hctosys
이러한 명령어들은 시스템 관리, 로그 분석, 자동화 스크립트 등에서 정확한 시간 정보를 확보하는 데 필수적이다. 특히 서버 환경에서는 NTP(Network Time Protocol)와 함께 사용하여 시간 동기화 정확도를 높이는 것이 중요하다.