Set lại ngày tháng trên linux

Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng lệnh date để làm việc với ngày giờ trong Bash shell.

Ngày giờ trong Bash shell có thể được in với nhiều định dạng khác nhau.  Trong các hệ thống Unix, ngày tháng được lưu trữ dưới dạng số nguyên, có giá trị chính là số giây được tính từ thời điểm 01/01/1970 00:00:00 UTC đến thời điểm hiện nay.

Tại sao lại có thời điểm 01/01/1970, là do hệ thống Unix, tiền thân của các hệ thống Linux sau này, được chính thức đưa vào hoạt động từ thời điểm 0 giờ ngày 01/01/1970, do đó thời điểm này được xem là thời điểm ra đời của các hệ thống Linux. Do đó thời gian trong các hệ thống Linux được tính bắt đầu từ mốc thời gian trên. Giá trị này được gọi là epoch time hoặc Unix time.

Trong Linux, để lấy được giá trị ngày tháng dưới dạng số nguyên đã nói ở trên, ta dùng lệnh sau:

$ date +%s
1407420763

Chúng ta cùng thử kiểm tra xem con số này có chính xác không nhé.

Tại thời điểm tôi nhập lệnh trên, thời gian của hệ thống là 21:24:02 07/08/2014 [GMT+7]

Như chúng ta biết thì :

  • 1 năm = 365 ngày và 6 giờ = 365,25 ngày
  • 1 ngày = 24 giờ
  • 1 giờ = 3600 giây

=> Vậy 1 năm = 365,25 x 24 x 3600 = 31.557.600 giây

Lấy số trên chia cho giá trị ta vừa tính được [làm tròn lấy 4 chữ số thập phân]:

1407420763 / 31.557.600 = 44.5985 [năm]

=> 44 năm 218 ngày 14 giờ 24 phút

=> Tính từ mốc 00:00:00 01/01/1970 thì giá trị trên cho ta được kết quả 14:24:00 07/08/2014 UTC

Giá trị trên là giờ quốc tế [UTC/GMT], do Việt Nam nằm ở múi giờ GMT + 7, nên ta lấy thời gian trên cộng thêm 7 giờ sẽ ra thời gian thực tế tại Việt Nam là 21:24:00 07/08/2014 => trùng khớp với thời gian ở trên.

  • Lưu ý trong quá trình tính toán, do chúng ta làm tròn các chữ số thập phân nên thời gian chúng ta tính ra lệch với thời gian thực tế vài giây.

1. In ra ngày tháng hiện tại

$ date
Thu Aug 7 10:30:48 EDT 2014

2. Lấy giá trị Unix time từ thời điểm bất kỳ

Ở trên chúng ta đã lấy được giá trị Unix time [số giây tính từ thời điểm 00:00:00 01/01/1970] bằng lệnh:

$ date +%s

Chúng ta có thể lấy ra số giây tính từ 1 thời điểm bất kỳ đến hiện tại bằng lệnh:

$ date --date "Thu Nov 18 08:07:21 IST 2010" +%s
1290047841

Tùy chọn –date ở trên được dùng để cung cấp 1 chuỗi ngày tháng đầu vào.

3. Các tùy chọn định dạng ngày tháng

Các tùy chọn định dạng ngày tháng khác nhau được dùng để in ngày tháng ra những định dạng khác nhau tùy vào những mục đích khác nhau.

Ở trên chúng ta đã làm quen với 1 tùy chọn là +%s, có tác dụng in ra ngày tháng dưới dạng tem thời gian [Unix time]. Ngoài ra còn có các tùy chọn như:

Sau khi cài đặt CentOS trên máy chủ [đặt biệt là máy chủ và VPS có server không ở Việt Nam], thường ngày giờ sẽ không chính xác, thậm chí là lệch cả múi giờ làm cho việc cập nhật hệ thống hay các website trên máy chủ này sẽ bị sự cố.

Khi đó ta cần kiểm tra và chỉnh lại ngày giờ theo đúng giờ Việt Nam.

Lệnh xem ngày giờ trên Centos

Cách set time zone qua GTM+7 [Asia/Ho_Chi_Minh]:

ln -f -s /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime

Đồng bộ giờ về NTP server Viet Nam [ICT]

[Muốn đồng bộ chính xác phải set timezone thành GMT+7 [Asia/Ho_Chi_Minh] ]

Nếu xất hiện “ntpdate not found” thì cài thêm dịch vụ ntp:

Or

[nếu cài rồi]

Chỉnh ngày giờ cho hệ thống Centos

date -s "2016-09-25 11:30:30"

Trong đó : cú pháp theo thứ tự : date -s “năm-tháng-ngày giờ: phút:giây”

Xem giờ bios:

Set giờ system linux qua bios:

Set giờ bios qua system linux:

Khởi động dịch vụ đồng bộ giờ

sh /etc/rc.d/rc.ntpd start

Vậy là xong !

  • time centos, centos, chỉnh giờ centos, date centos, centos7, cách chỉnh time centos, chỉnh giờ linux, time linux, tự động giờ centos, múi giờ việt nam centos
  • 145222 Người dùng thấy hữu ích này
Câu trả lời này có hữu ích? Có Không

Khi bạn đang viết script trong Bash, chắc chắn bạn sẽ cần phải in ngày hoặc giờ và ngày hoặc giờ đó thường cần ở một định dạng cụ thể để đáp ứng các yêu cầu của những hàm khác. Đó là khi lệnh date có tác dụng.

Như bạn sẽ thấy, lệnh date trong Linux vừa đơn giản vừa linh hoạt, có nghĩa là nó sẽ chấp nhận tất cả các loại đầu vào và tạo ngày tháng ở nhiều định dạng. Nó cũng có các chức năng đặc biệt khác cho những nhiệm vụ tính toán khác nhau liên quan đến thời gian. Biết các tùy chọn và cú pháp của date chắc chắn sẽ giúp bạn thành thạo hơn trong việc viết script.

Cú pháp cơ bản của lệnh date

Cú pháp cơ bản cho lệnh date như sau:

date [OPTION]... [+FORMAT]

Điều đó có nghĩa là sau khi nhập ngày, bạn có thể nhập một tùy chọn, như -d hoặc -s, để gọi một hàm cụ thể [bài viết sẽ giải thích bên dưới].

Bạn cũng có thể theo dõi chúng bằng các chuỗi định dạng, luôn bắt đầu bằng ký tự +. Các chuỗi đó lấy những ký tự định dạng cụ thể, cũng được liệt kê bên dưới, để xác định đầu ra.

Ví dụ thực tế về lệnh date trên Linux

Bạn có thể đặt lệnh date để sử dụng theo một số cách. Hãy xem xét các trường hợp sử dụng phổ biến và hữu ích nhất.

1. Lấy thông tin ngày và giờ hiện tại

Bạn có thể lấy thông tin ngày và giờ cục bộ hiện tại ở định dạng mặc định bằng cách sử dụng lệnh date.

$ date
Mon 19 Apr 2021 12:41:17 PM CDT

Như bạn có thể thấy, date cung cấp cho bạn thông tin ngày và giờ có liên quan ở định dạng đơn giản và có thể đoán trước được.

2. Lấy một ngày trong quá khứ hoặc tương lai

Giả sử trong script, bạn cần tính toán ngày và giờ chính xác sau một tuần kể từ bây giờ. Lệnh date sẽ giúp bạn. Nhập lệnh này, sử dụng tùy chọn -d để nhận thông tin chi tiết liên quan đến các ngày trong tương lai:

$ date -d "next week"
Tue 27 Apr 2021 05:21:07 PM CDT

Tùy chọn -d, viết tắt của date, là nơi lệnh date thực sự tỏa sáng. Nó sẽ chấp nhận nhiều chuỗi ngày tùy chỉnh; chúng có thể mang tính kỹ thuật, như 20200315, 15/03/20 hoặc ở dạng có thể đọc được như Mar 15 2020. Nhưng bạn cũng có thể sử dụng các thuật ngữ tương đối, như tomorrow, yesterday, next Sunday, v.v... Hãy thoải mái thử nghiệm và xem date diễn giải các chuỗi đầu vào khác nhau như thế nào.

3. Định dạng ngày

Bạn có thể nhận thấy trong hai ví dụ trước, ngày mặc định theo một định dạng thời gian rất cụ thể. Vậy nếu bạn cần nó ở một định dạng khác thì sao?

Bạn có thể định dạng đầu ra của mình tương tự như lệnh printf. Ví dụ, bạn có thể in năm hiện tại bằng lệnh này:

date +"Year: %Y"

Dấu + báo hiệu rằng bạn muốn một chuỗi được định dạng và bất kỳ thứ gì xuất hiện sau đó bên trong dấu ngoặc kép, date sẽ xử lý và định dạng cho đầu ra.

Dưới đây là danh sách các ký tự định dạng mà bạn có nhiều khả năng sử dụng nhất:

Ký tự định dạngĐầu ra%HGiờ [00-24]%IGiờ [01-12]%MPhút [00-59]%SGiây [00-60]%pAM hoặc PM%AThứ trong tuần dạng đầy đủ [ví dụ Sunday]%aThứ trong tuần dạng viết tắt [ví dụ Sun]%wSố ngày trong tuần [0-6]%dNgày trong tháng [01-31]%jNgày trong năm [001-366]%BTháng dạng đầy đủ [ví dụ January]%bTháng dạng viết tắt [ví dụ Jan]%mSố tháng [01-12]

Bạn có thể nhận được danh sách đầy đủ các ký tự định dạng bằng cách sử dụng tùy chọn --help trong Terminal.

date --help

4. Nhận thông tin ngày trong tuần

Một cách sử dụng rất phổ biến và thực tế của định dạng ngày là lấy thông tin ngày trong tuần cho bất kỳ ngày cụ thể nào. Ví dụ, để kiểm tra ngày 4 tháng 11 năm 1995 rơi vào ngày nào trong tuần, hãy nhập một lệnh tương tự như sau:

$ date -d "1996-04-11" +"%A"
Friday

Tùy chọn -d chỉ ra rằng bạn muốn một ngày cụ thể, chuỗi "1996-04-11" cho biết bạn muốn ngày nào và định dạng +"%A" cho biết rằng bạn muốn ngày trong tuần cho đầu ra. Hãy nhớ rằng chuỗi ngày có thể ở nhiều định dạng, chứ không chỉ có một định dạng được chỉ định ở đây.

5. Nhận thông tin Giờ Phối hợp Quốc tế

Bằng cách đưa ra flag -u, bạn có thể nhận được thời gian hiện tại theo Giờ Phối hợp Quốc tế [UTC].

$ date -u
Wed 21 Apr 2021 12:46:59 PM UTC

6. Xuất giờ địa phương ở múi giờ khác

Nếu bạn cần lấy một ngày ở bất kỳ múi giờ nào khác, bạn có thể làm như vậy bằng cách đặt biến môi trường TZ= trước lệnh date.

Ví dụ, bạn có thể xem ngày và giờ hiện tại theo giờ chuẩn miền núi [MST] bằng lệnh sau:

$ TZ=MST date
Tue 20 Apr 2021 03:45:29 PM MST

Đối với mục đích của bạn, chỉ cần thay thế MST bằng các chữ cái viết tắt cho bất kỳ múi giờ nào bạn muốn. Bạn cũng có thể chọn sử dụng ký hiệu UTC. Ví dụ, để có cùng múi giờ, hãy thay thế MST bằng UTC+7.

Ngoài ra, bạn có thể đặt tên cho một lục địa và thành phố lớn để lấy thời gian theo giờ địa phương của thành phố cụ thể đó. Ví dụ:

$ TZ=America/Phoenix date
Tue 20 Apr 2021 03:45:29 PM MST

7. Lấy thông tin thời gian sửa đổi cuối cùng của file

Ví dụ, nếu bạn đang tạo bản sao lưu, bạn thường cần lấy thông tin ngày sửa đổi cuối cùng của file. Bạn có thể thực hiện việc này bằng cách chuyển tùy chọn -r và đặt tên file.

$ date -r /etc/shadow
Wed 14 Apr 2021 07:53:02 AM CDT

Bạn cũng có thể thay đổi timestamp [dấu thời gian] của file bằng lệnh touch trong Linux.

8. Xuất và chuyển đổi thời gian Unix

Bạn có thể tính số giây kể từ kỷ nguyên Unix bằng lệnh sau:

$ date
Mon 19 Apr 2021 12:41:17 PM CDT
0

Bạn cũng có thể đảo ngược quá trình và chuyển đổi thời gian Unix thành một định dạng mà con người có thể đọc được thông qua việc sử dụng tùy chọn -d và ký tự @.

$ date
Mon 19 Apr 2021 12:41:17 PM CDT
1

Tính toán thời gian Unix rất hữu ích nếu bạn cần một giây chính xác, chắc chắn sẽ giữ cho các thiết bị khác được đồng bộ.

  • 10 ví dụ về lệnh Grep trong Linux

9. Tạm thời đặt thời gian hệ thống

Bạn có thể thay đổi đồng hồ hệ thống của mình từ Terminal với lệnh date bằng cách chuyển đối số -s theo sau là thời gian bạn muốn. Ví dụ, bạn có thể đặt đồng hồ hệ thống thành 24 giờ trong tương lai bằng lệnh sau:

$ date
Mon 19 Apr 2021 12:41:17 PM CDT
2

Lưu ý rằng bạn sẽ cần các đặc quyền sudo để chuyển lệnh này. Ngoài ra, thay đổi có thể sẽ không liên tục [có nghĩa là đồng hồ của bạn sẽ quay trở lại thời điểm trước đó sau khi khởi động lại] bởi vì hầu hết các bản phân phối sử dụng những tiện ích khác để quản lý đồng hồ hệ thống, sẽ ghi đè thay đổi khi boot.

  • Lệnh Tail trong Linux
  • 8 lệnh để quản lý hiệu quả các tiến trình trong Linux
  • 7 cách sử dụng lệnh Head trong Linux
  • 10 ví dụ về lệnh Netstat trên Linux

Thứ Ba, 04/05/2021 08:09

53 👨 2.447

0 Bình luận

Sắp xếp theo

Xóa Đăng nhập để Gửi

Bạn nên đọc

  • Acer rục rịch cho loạt máy tính bảng mới "xuất quân"
  • LG khẳng định pin laptop "an toàn"
  • Cách ngăn chặn các robocall
  • Cách đánh số trang trong Excel cực nhanh và dễ
  • Rò rỉ dữ liệu là gì?
  • Facebook chi 8,5 triệu USD cho tên miền Fb.com

Linux

  • Cách cài đặt Visual Studio Code trên Ubuntu 20.04
  • Cách tạo Custom Kernel trên Ubuntu
  • Cách thiết lập cơ sở dữ liệu Microsoft SQL Server trong Docker trên Linux
  • Cách xóa nhanh siêu dữ liệu khỏi file trên Linux
  • Cách chạy phần mềm Windows trên Linux với Bottles
  • Lệnh dd trong Linux
  • 6 môi trường Linux desktop tốt nhất năm 2022
  • Linux 5.1.3 ra mắt, chính thức hỗ trợ chipset Apple M1
  • Cách sao chép [và dán] file, thư mục từ dòng lệnh Linux
Xem thêm

  • Công nghệ
    • Ứng dụng
    • Hệ thống
    • Game - Trò chơi
    • iPhone
    • Android
    • Linux
    • Nền tảng Web
    • Đồng hồ thông minh
    • Chụp ảnh - Quay phim
    • macOS
    • Phần cứng
    • Thủ thuật SEO
    • Kiến thức cơ bản
    • Raspberry Pi
    • Dịch vụ ngân hàng
    • Lập trình
    • Dịch vụ công trực tuyến
    • Dịch vụ nhà mạng
    • Nhà thông minh
  • Download
    • Ứng dụng văn phòng
    • Tải game
    • Tiện ích hệ thống
    • Ảnh, đồ họa
    • Internet
    • Bảo mật, Antivirus
    • Họp, học trực tuyến
    • Video, phim, nhạc
    • Mail
    • Lưu trữ đám mây
    • Giao tiếp, liên lạc, hẹn hò
    • Hỗ trợ học tập
    • Máy ảo
  • Tiện ích
  • Khoa học
    • Khoa học vui
    • Khám phá khoa học
    • Bí ẩn - Chuyện lạ
    • Chăm sóc Sức khỏe
    • Khoa học Vũ trụ
    • Khám phá thiên nhiên
  • Điện máy
    • Tủ lạnh
    • Tivi
    • Điều hòa
    • Máy giặt
  • Cuộc sống
    • Kỹ năng
    • Món ngon mỗi ngày
    • Làm đẹp
    • Nuôi dạy con
    • Chăm sóc Nhà cửa
    • Kinh nghiệm Du lịch
    • Halloween
    • Mẹo vặt
    • Giáng sinh - Noel
    • Tết 2023
    • Quà tặng
    • Giải trí
    • Là gì?
    • Nhà đẹp
    • TOP
    • Phong thủy
  • Video
    • Công nghệ
    • Cisco Lab
    • Microsoft Lab
    • Video Khoa học
  • Ô tô, Xe máy
    • Giấy phép lái xe
  • Làng Công nghệ
    • Tấn công mạng
    • Chuyện công nghệ
    • Công nghệ mới
    • Trí tuệ nhân tạo [AI]
    • Anh tài công nghệ
    • Bình luận công nghệ
    • Tổng hợp
  • Học CNTT
    • Quiz công nghệ
    • Microsoft Word 2016
    • Microsoft Word 2013
    • Microsoft Word 2007
    • Microsoft Excel 2019
    • Microsoft Excel 2016
    • Hàm Excel
    • Microsoft PowerPoint 2019
    • Microsoft PowerPoint 2016
    • Google Sheets - Trang tính
    • Photoshop CS6
    • Photoshop CS5
    • HTML
    • CSS và CSS3
    • Python
    • Học SQL
    • Lập trình C
    • Lập trình C++
    • Lập trình C#
    • Học HTTP
    • Bootstrap
    • SQL Server
    • JavaScript
    • Học PHP
    • jQuery
    • Học MongoDB
    • Unix/Linux
    • Học Git
    • NodeJS

Giới thiệu | Điều khoản | Bảo mật | Hướng dẫn | Ứng dụng | Liên hệ | Quảng cáo | Facebook | Youtube | DMCA

Giấy phép số 362/GP-BTTTT. Bộ Thông tin và Truyền thông cấp ngày 30/06/2016. Cơ quan chủ quản: CÔNG TY CỔ PHẦN MẠNG TRỰC TUYẾN META. Địa chỉ: 56 Duy Tân, Dịch Vọng Hậu, Cầu Giấy, Hà Nội. Điện thoại: 024 2242 6188. Email: info@meta.vn. Chịu trách nhiệm nội dung: Lê Ngọc Lam.

Bản quyền © 2003-2022 QuanTriMang.com. Giữ toàn quyền. Không được sao chép hoặc sử dụng hoặc phát hành lại bất kỳ nội dung nào thuộc QuanTriMang.com khi chưa được phép.

Chủ Đề