유닉스 시간이란 무엇이며 유닉스 시대는 언제였습니까?

유닉스 시간이란 무엇이며 유닉스 시대는 언제였습니까?

유닉스에는 왜 고유한 시간 개념이 있습니까? Epoch는 무엇이며 Y2038 문제는 무엇입니까?





Unix 시간은 Linux, macOS 및 기타 여러 상호 운용 가능한 시스템에서 사용되는 특정 날짜 및 시간을 나타내는 수단입니다. 너무 광범위해서 당신도 모르는 사이에 사용하고 있을 것입니다. 하지만 유닉스 시간을 이해하고 나면 많은 상황에서 그것을 발견하게 될 것입니다. 여러 도구가 Unix 시간으로 작업하는 데 도움이 될 수 있습니다.





유닉스 시간의 목적은 무엇입니까?

Unix 시간은 고정된 시간 및 날짜 이후의 총 초 수입니다. 사람이 읽을 수 있는 날짜 및 시간과 다르게 보이는 날짜/시간(또는 타임스탬프) 형식입니다. 이것은 순전히 효율성을 위한 것입니다. 년, 월, 시간 등에 대한 개별 값을 저장하는 것보다 초를 나타내는 단일 숫자를 저장하는 데 공간이 훨씬 적습니다.





물론 현대적으로는 공간의 차이가 그다지 크지 않습니다. 그러나 사용 가능한 스토리지가 훨씬 작았던 1960년대 후반에 Unix가 시작되었다는 점을 고려하십시오. 타임스탬프도 많이 사용되므로 저장 공간이 늘어납니다. 예를 들어, 모든 파일에는 3개의 타임스탬프가 연결되어 있습니다.

당신이 수학 천재가 아니라면 형식을 머리로 번역하는 것은 거의 불가능합니다. 그러나 여전히 다음과 같이 더 읽기 쉬운 대안에 비해 몇 가지 장점이 있습니다. 2015년 10월 21일 수요일 07:28:00 GMT . 두 개의 Unix 타임스탬프를 한 눈에 매우 쉽게 주문할 수 있습니다. 또한 일반적으로 두 타임스탬프 간의 차이를 파악하는 것이 더 빠릅니다. 이것은 인접한 날짜와 같이 서로 가까운 날짜에 특히 해당됩니다.



에포크에 대해

따라서 Unix 시간은 특정 시점 이후의 총 초 수입니다. 그러나 그 시점은 무엇입니까? 그것의 00:00:00 UTC ~에 1970년 1월 1일 . 이것을 흔히 Unix Epoch라고 합니다. 프로그래머들은 이 날짜가 유닉스 시간을 발명했을 때 가장 가까운 날짜였기 때문에 편의상 이 날짜를 선택했습니다.

문제가 발생했을 때 이 날짜를 본 적이 있을 것입니다. 분명히 버그이지만 우리 중 많은 사람들이 태어나기 전의 날짜로 결과가 나오면 매우 이상해 보입니다! 그러나 Unix 시간에 대해 알면 완전히 이해할 수 있습니다. 시스템에서 값이 없는 타임스탬프를 표시하려고 하면 종종 0으로 변환되어 정확한 에포크 날짜가 표시됩니다.

맥북 에어를 강제로 재시동하는 방법

유닉스 시간 데이터 형식

엄밀히 말하면 하나도 없습니다. 원래 데이터 유형은 32비트 정수였으며 훨씬 더 강력한 시스템에서도 여전히 그렇습니다.

이 데이터 유형을 사용하면 값이 총 2^32초를 저장할 수 있으며 이는 136년이 조금 넘습니다. 이 값은 일반적으로 부호가 있으며 음수 또는 양수일 수 있습니다. 따라서 일반적으로 신기원(즉, 1902-2038년)의 양쪽에서 68년을 나타냅니다.

물론 아직 제한된 기간입니다. 그러나 타임스탬프 형식의 주요 용도는 파일 수정과 같은 개념이었습니다. 고대의 역사나 먼 미래가 아닌 현재에 가까운 시간을 표현하는 것이 매우 필요했습니다. 달력과 같은 응용 프로그램의 경우에도 수십 년 후의 날짜를 나타낼 필요가 거의 없습니다.

하지만 그렇다고 해서 이 제한된 시간에 문제가 없는 것은 아닙니다...

2038년 문제

Y2K 버그(역사상 최악의 프로그래밍 실수 중 하나)는 연도를 두 자리 값으로 저장하는 컴퓨터 시스템에 영향을 미쳤습니다. 2000년이 되었을 때 이러한 시스템은 1900년처럼 취급했습니다. 이벤트에서 이것은 많은 사람들이 사전에 많은 시간과 노력을 들여 준비했기 때문에 우려만큼 재앙적이지 않았습니다.

이전 섹션에서 주의를 기울였다면 Unix 시간에 영향을 줄 수 있는 유사한 문제를 발견했을 수 있습니다. 글쎄, 유닉스 시간에는 자체 데이터 문제가 있습니다. Y2k38 문제입니다. (흔히 버그가 아니라 문제라고 합니다. 아마도 2000년 이후로 더 낙관적이 되었을 것입니다!) Unix 시간이 문자 그대로 2038년에 다 떨어지면 시스템은 새로운 날짜를 1902년이나 1970년으로 취급합니다. 그냥 완전히 실패합니다.

적어도 이 문제는 새해 전날 자정에 우리를 치지 않을 것입니다. 32비트 Unix 시간의 마지막 1초는 3월 19일입니다. 결국 우리는 2038년까지 대부분의 시스템을 업그레이드할 것입니다. 그렇지 않으면 어쨌든 폐기될 것입니다.

몇 가지 유용한 타임스탬프 리소스

NS 에포크 변환기 사이트는 아마도 사용 가능한 가장 포괄적인 타임스탬프 변환기일 것입니다. 현재 Unix 시간을 실시간으로 표시하는 것으로 시작하고 그 위에 상상할 수 있는 거의 모든 기능을 추가합니다. 주요 용도는 타임스탬프와 사람이 읽을 수 있는 날짜 사이를 양방향으로 변환하는 것입니다.

Dan's Tools는 유용한 웹 앱의 거대한 모음이며, 그 중 하나는 다음과 같습니다. 타임스탬프 변환기 . 더 기본적이지만 프레젠테이션이 매우 깔끔하고 사용하기 쉽습니다.

시간은 또 다른 미니멀리즘 룩을 선보입니다. Unix 시간을 포함하여 다양한 형식으로 시간을 표시합니다. 유용한 페이지 제목에 현재 시간이 포함되어 있습니다.

명령줄 도구와 함께 유닉스 시간 사용하기

Linux 및 macOS에서는 데이트 program은 Unix 타임스탬프를 포함하여 날짜/시간을 처리하기 위한 핵심 유틸리티입니다. 인수 없이 호출되면 사람이 읽을 수 있는 형식으로 현재 날짜/시간을 반환합니다.

$ date
Wed Feb 10 12:28:30 GMT 2021

Unix 시간으로 현재 날짜/시간이 필요한 경우 다음을 사용하십시오. +%s 논쟁:

$ date +%s
1612960114

다음을 사용하여 사람이 읽을 수 있는 날짜에서 타임스탬프로 변환할 수 있습니다. -NS 귀하의 버전이 데이트 지원합니다. 대부분의 Linux 버전은 기본적으로 다음을 수행해야 합니다.

$ date -d 'Jan 2 1970' +%s
82800

맥OS에서는 데이트 다른 플래그 집합이 필요한 다른 프로그램입니다.

$ date -j -f '%b %d %Y %T' 'Jan 02 1970 00:00:00' '+%s'
82800

다른 방향으로 가면 다음을 사용하여 Unix 타임스탬프에서 변환할 수 있습니다. -NS 깃발:

$ date -r 1600000000
Sun 13 Sep 2020 13:26:40 BST

일부 다른 프로그램은 %NS 유닉스 시간을 다루는 형식. 예를 들어 파일의 수정 날짜를 Unix 시간으로 표시하려면 리눅스 버전 , 다음을 사용할 수 있습니다.

$ ls -l --time-style=+%s index.tmp.html
-rw-r--r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

프로그래밍 언어에서 유닉스 시간을 사용하는 방법

PHP는 시각() 현재 Unix 타임스탬프를 반환하는 함수입니다. 그것의 데이트() 함수는 타임스탬프를 두 번째 인수로 사용합니다.

$ php -r 'echo date('Y-m-d', time());'
2021-02-11

JavaScript는 흥미로운 방식으로 접근합니다. 그것은 가지고있다 날짜.지금 () Unix epoch 이후의 밀리초 수를 가져오는 방법입니다. 물론 이것을 1,000으로 나누고 결과를 반올림하여 동등한 Unix 시간을 초 단위로 제공할 수 있습니다.

> Math.floor(Date.now() / 1000)
1613083012

유닉스 시간 이해하기

유닉스 시간은 많은 곳에서 발생하는 간단한 개념입니다. 예를 들어, 시간 차이를 계산할 때 이해하고 나면 매우 유용하다는 것을 알게 될 것입니다. 특정 버그의 원인이 될 수 있는 경우도 알 수 있습니다.

epoch 및 타임스탬프와 같은 개념은 Linux를 시작하는 데 중요한 부분입니다. 다음과 같은 필수 사항에 대해 자세히 알아보려면 , 기본 Linux 명령에 대한 가이드를 확인하세요.

공유하다 공유하다 트위터 이메일 Linux를 시작하는 9가지 기본 명령

Linux에 익숙해지고 싶습니까? 이러한 기본 Linux 명령으로 시작하여 표준 컴퓨팅 작업을 배우십시오.

다음 읽기
관련 항목 저자 소개 바비 잭(게시된 기사 58건)

Bobby는 거의 20년 동안 소프트웨어 개발자로 일한 기술 애호가입니다. 그는 게임에 열정적이며 Switch Player Magazine에서 리뷰 편집자로 일하고 있으며 온라인 퍼블리싱 및 웹 개발의 모든 측면에 몰두하고 있습니다.

바비 잭이 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.