Đặt múi giờ với tập lệnh tự động


20

Tôi đang viết các kịch bản để tự động hóa việc thiết lập các cài đặt slhost mới. Trong một thế giới hoàn hảo, sau khi tôi bắt đầu kịch bản, nó sẽ chạy, không có sự chú ý nào từ tôi. Tôi đã thành công, với một ngoại lệ.

Làm cách nào để đặt múi giờ, trong trạng thái vĩnh viễn (khởi động lại) và lành mạnh (điều chỉnh thời gian tiết kiệm tiêu chuẩn và ánh sáng ban ngày, để không chỉ ép ngày) ... cách không yêu cầu đầu vào từ tôi?

Hiện tại, tôi đang sử dụng

 dpkg-reconfigure tzdata

Điều này dường như không có cách nào để buộc các tham số vào nó. Nó đòi hỏi đầu vào của người dùng.


EDIT: Tôi đang chỉnh sửa ở đây, thay vì bình luận, vì các bình luận dường như không cho phép các khối mã.

Đây là mã thực tế mà tôi đã kết thúc, dựa trên nhận xét của Rudedog bên dưới. Tôi cũng nhận thấy rằng điều này không cập nhật / etc / múi giờ. Tôi không chắc ai sử dụng nó, nhưng trong trường hợp có ai đó, tôi cũng đang cài đặt nó.

TIMEZONE="America/Los_Angeles"      
echo $TIMEZONE > /etc/timezone                     
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime   # This sets the time

Câu trả lời:


18

Bạn sẽ có thể làm điều này với

cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Thay thế múi giờ thích hợp trong lệnh trên.


1
bạn nên liên kết tượng trưng mà không sao chép qua
Zypher

1
Anh ấy đang sử dụng Debian. dpkg-reconfigure tzdatatạo một bản sao, không phải là một liên kết tượng trưng. Tôi tin rằng lý do là vì / usr / share có thể không được gắn vào lúc khởi động.
Rudedog

Theo phần kỹ thuật của trang web tzconfig cho Debian:> Công việc được thực hiện bởi tzconfig thực sự khá đơn giản. Nó chỉ cập nhật liên kết / etc / localtime để trỏ đến múi giờ chính xác được cài đặt trong / usr / share / zoneinfo /.
brent

1
tzconfig không dùng đồng xu để ủng hộ dzkg-cấu hình lại tzdata và thực sự sẽ không làm gì cả. Bạn có thể xác minh rằng nó sao chép thay vì liên kết tượng trưng bằng cách chạy dpkg-cấu hình lại tzdata và xem kết quả.
Rudedog

3

Trên Ubuntu 12.04, những điều sau đây đã giúp tôi:

# http://manpages.ubuntu.com/manpages/precise/man7/debconf.7.html
export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive
echo "Europe/Berlin" > /etc/timezone
dpkg-reconfigure tzdata

1
Phương pháp này không xuất hiện để làm việc nữa bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Peter Gibson

Hoạt động trên Ubuntu 14.04.
SuB


2

Cập nhật /etc/localtimesymlink để trỏ đến múi giờ chính xác trong/usr/share/zoneinfo/


Lưu ý rằng nếu bạn sử dụng một liên kết tượng trưng và /usrđược gắn trên một phân vùng riêng, mọi thứ bắt đầu trước khi /usrđược gắn sẽ không có múi giờ chính xác. Hầu hết các bản phát hành ngày nay, bao gồm Debian, sao chép chứ không phải symlink.
Rudedog

1

Chạy vào đây. Đây là một cấu hình hoàn chỉnh để làm điều này đúng (đây là tổng hợp các ý kiến ​​ở đây và câu hỏi này ):

#Set time zone and time
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select London" | debconf-set-selections
TIMEZONE="Europe/London"
echo $TIMEZONE > /etc/timezone
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
/usr/sbin/ntpdate pool.ntp.org

0

tzdatasử dụng debconf để trả lời câu hỏi đó, vì vậy bạn cần chuẩn bị trước nó. Có một số cách để làm điều này, cách dễ nhất là đoán trước câu trả lời trong khi cài đặt . Ngoài ra, bạn có thể thiết lập một cơ sở dữ liệu mặc định để sử dụng debconf, hãy xem debconf(7)trang chủ để biết cách thực hiện.


-2

Cũng đảm bảo rằng ntpd đã được cài đặt và chạy.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.