Emb*_*mer 23 linux networking timezone geolocation
如何在 Linux 中使用 Internet 自动设置系统默认时区?在我看来,NTP 服务器只能更新时间,不能更新时区。有没有可以更改时区的服务器?
Chr*_*own 40
不久前我写了一个程序来做到这一点:tzupdate。
您可以通过运行来查看它会将您的时区设置为什么(无需实际设置)tzupdate -p:
$ tzupdate -p
Europe/Malta
Run Code Online (Sandbox Code Playgroud)
您可以通过tzupdate以 root 身份运行来将其设置为真实的。
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
Run Code Online (Sandbox Code Playgroud)
这通过以下方式工作:
/etc/localtime以指向该时区的 zoneinfo 文件小智 9
这是一个旧线程,但仍然与不会自动更改时区的 kubuntu 1710 相关。我正在使用 Chris Down 的 tzupdate 解决方案,但还要确保它在系统尝试连接到网络(wifi 或其他)时被触发。这假定您正在使用网络管理器。
首先打开一个终端。
安装 tzupdate
sudo apt install python-pip
pip install -U tzupdate
Run Code Online (Sandbox Code Playgroud)
然后确保所有用户都可以访问它
sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/.
sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
Run Code Online (Sandbox Code Playgroud)测试它是否有效
sudo tzupdate
Run Code Online (Sandbox Code Playgroud)然后我们需要做的是确保所有用户都可以访问
sudo su -
tzupdate
Run Code Online (Sandbox Code Playgroud)
这会让您以 root 身份进入,然后检查该命令是否更改了您的时区。然后确保您退出以正常用户身份返回
exit
Run Code Online (Sandbox Code Playgroud)确保 tzupdate 可以在没有密码的情况下使用 sudo 运行。当我们从后台运行的网络管理器触发此操作时,稍后的步骤需要此操作。在终端中输入此内容以编辑 sudoers 文件
sudo visudo
Run Code Online (Sandbox Code Playgroud)
在文件末尾添加这一行
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
Run Code Online (Sandbox Code Playgroud)
按 CTRL-X 然后按 Y 然后按 ENTER 保存更改
然后我们确保 NetworkManager 总是在触发网络连接更改后调用它(例如,当连接到 wifi 时)。为此,我们在 dispatcher.d 文件夹中创建了一个名为 tzupdate 的文件,该文件仅调用 sudo tzupdate。该文件需要可执行权限才能运行
echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
Run Code Online (Sandbox Code Playgroud)
请注意,NetworkManager 将调用执行 sudo(即 sudo tzupdate),这通常会提示输入密码。
可能有更好的方法来做到这一点,即让 NetworkManager 仅在它启动连接时调用它,而不是在连接时调用它(如上所述) - 我已经尝试将脚本放在 /etc/network/if-up 中.d 但这对我不起作用
要在 Kubuntu 中进行测试 - 将您的本地时区更改为其他时区(转到任务栏中的 Date plasmoid 并右键单击并选择“调整日期/时间”,然后从选项卡中选择“时区”)
关闭您的 wifi 并重新打开 - 您会看到,一旦它连接到 wifi,它似乎等待大约 30 秒,然后应该成功更改您的时区。
请注意,这尚未使用需要在网页上输入密码的 wifi 进行测试。希望它在网络连接的最后运行的事实应该为用户提供足够的时间来输入凭据 - 否则这可能需要进一步调整(检查连接是否存在,检查您是否能够连接到互联网,等待如果无法连接到互联网,请等待 X 秒,然后重试 Y 次