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. Show
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ì :
=> 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.
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ángCá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 startVậy là xong !
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 dateCú pháp cơ bản cho lệnh date như sau:
Đ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 LinuxBạ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ạiBạ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.
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 laiGiả 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:
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àyBạ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:
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.
4. Nhận thông tin ngày trong tuầnMộ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:
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).
6. Xuất giờ địa phương ở múi giờ khácNế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:
Đố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ụ:
7. Lấy thông tin thời gian sửa đổi cuối cùng của fileVí 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.
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 UnixBạn có thể tính số giây kể từ kỷ nguyên Unix bằng lệnh sau: 0Bạ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ự @. 1Tí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ộ.
9. Tạm thời đặt thời gian hệ thốngBạ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: 2Lư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.
Thứ Ba, 04/05/2021 08:09 5 ★ 3 👨 2.447 0 Bình luận Sắp xếp theo Xóa Đăng nhập để Gửi Bạn nên đọc
Linux
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: [email protected]. 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. |