man 5 shadow 给出每行中第三个字段的以下描述:
上次更改密码的日期,表示为自 1970 年 1 月 1 日以来的天数。
0 有一个特殊的含义,就是用户下次登录系统时需要修改密码。
空字段表示禁用密码时效功能。
这是指 UTC 时间还是当地时区?特别是,如果我想使用类似的东西来计算可比较的数字$(( $(date +%s) / 86400 )),我是否需要传递date该-u选项?
我的朋友遍布全球,在给他们打电话之前,我需要知道他们当前的时间。Linux 中是否有可以在终端中查询城市(如果存在)的应用程序(类似这样):time miami
PS:是的,我知道我可以从 Google 查询,但我更喜欢使用终端
我正在使用该awful.widget.textclock小部件在 Arch Linux 上的 Awesome WM 中显示时间,并且我正在使用一个称为tzupdate定期根据地理位置自动更新我的系统时间的程序。
我经常出差,所以我认为自动化这个会很好。但是,除非我重新启动 Awesome(或重新登录/重新启动),否则 textclock 小部件不会更改时间。我可以在 lua 脚本中添加一些东西来让小部件刷新时区吗?
tzupdate工作正常。我有一个systemd计时器,每五分钟更新一次时区。系统的时区以这种方式成功更改。timedatectl立即输出显示更新的时区,日期命令的输出正确显示正确的更新本地时间。
但是,如上所述,在我重新启动 ( CtrlModR) 或注销之前,Awesome 无法注意到此时区更改。
Arch wiki建议
时间标准
推荐:将 Arch Linux 和 Windows 都设置为使用 UTC,遵循Windows 中的 Time#UTC。另外,一定要防止 Windows 同步在线时间,因为硬件时钟将默认回本地时间。
不推荐:将 Arch Linux 设置为 localtime 并禁用任何与时间相关的服务,例如NTPd。这将使 Windows 负责硬件时钟校正,您需要记住在DST 开始时每年至少启动两次(春季和秋季)进入 Windows 。所以请不要在论坛上问为什么时钟是一个如果您通常数天或数周没有启动到 Windows,则延迟或提前一小时。
Ubuntu 中的 UTC
如果在 Ubuntu 安装期间在任何磁盘上检测到 Windows,Ubuntu 及其衍生产品将硬件时钟设置为“本地时间”。这样做显然是为了允许新的 Linux 用户在他们的 Windows 计算机上试用 Ubuntu,而无需编辑注册表。
要在 Ubuntu 中更改此行为,您需要执行以下操作。打开文件:
Run Code Online (Sandbox Code Playgroud)/etc/default/rcS并将 UTC 标志更改为UTC=yes。
那么,有没有什么方法可以让 Arch Linux 像 Ubuntu 一样运行UTC=no,即不需要修改 Windows 时钟(即硬件时钟使用本地时间)并且仍然可以让 Arch Linux 同步时间(因为我几乎不使用Windows 了,但不幸的是不能放弃它,也不想记住我是如何解决时间问题的,如果我必须重新安装 Windows)?
我正在研究嵌入式 Linux 系统,并正在寻找一种为所有进程设置时区的方法。
问题是:是否有可能TZ在启动时设置环境变量(init 脚本),以便所有其他 init 脚本TZ在启动时设置?
该系统基于 BusyBox 工具。我在/etc/profile.d/文件夹中尝试了一个脚本。
export TZ="GMT-1"
Run Code Online (Sandbox Code Playgroud)
但是 init 脚本没有设置变量。
我看到的唯一方法是所有启动脚本都自己设置这个变量。这个问题还有其他解决方案吗?
我的系统(Debian 测试中的 Gnome 3)对当前时间感到困惑。当我运行时date,时间显示正确,但有些应用程序比时间晚了一个小时。例如,当我向 Gnome 日历添加一个事件时,日历约会中显示的事件时间将是我输入的时间减去一小时。
我发现了问题所在,但不知道如何解决:
$ date ; TZ=GMT date ; TZ=BST date
Sun 30 Apr 11:25:37 BST 2017
Sun 30 Apr 10:25:37 GMT 2017
Sun 30 Apr 10:25:37 BST 2017
Run Code Online (Sandbox Code Playgroud)
输出的前两行是正确的,第三行晚了一个小时。我不明白的是为什么 BST 时区似乎比一个小时晚了,而同时当前时间是正确的 - 并且使用 BST。
这也可能是相关的:
$ timedatectl status
Local time: Sun 2017-04-30 11:33:07 BST
Universal time: Sun 2017-04-30 10:33:07 UTC
RTC time: Sun 2017-04-30 10:33:07
Time zone: Europe/London (BST, +0100)
Network time on: yes
NTP synchronized: yes
RTC in local TZ: no
Run Code Online (Sandbox Code Playgroud)
编辑 …
我收到抱怨说,在我的嵌入式设备中,华盛顿的 PST 时区比华盛顿提前一小时。我正在使用 tz 实用程序来设置时区。
这是洛杉矶时区:
2018 Sun, Mar 11 at 2:00 am PST ? PDT +1 hour (DST start) UTC-7h
Sun, Nov 4 at 2:00 am PDT ? PST -1 hour (DST end) UTC-8h
Run Code Online (Sandbox Code Playgroud)
我什至用最新的 2018 二进制文件更新了 tz 实用程序,但仍然遇到这个问题,我还缺少其他东西吗?
4月1号查了PST-PDT的变化后很疑惑?
usr/share/zoneinfo # date 031111002018; TZ='America/Los_Angeles' date
Sun Mar 11 11:00:00 UTC 2018
Sun Mar 11 03:00:00 PST 2018
/usr/share/zoneinfo # date 041111002018; TZ='America/Los_Angeles' date
Wed Apr 11 11:00:00 UTC 2018
Wed Apr 11 04:00:00 PDT 2018 <--- …Run Code Online (Sandbox Code Playgroud) 我想通过编辑重置时区/etc/timezone。但是,当我完成编辑并保存文件后,系统时间并没有相应改变。
另一方面,当我利用命令dpkg-reconfigure tzdata更改时区时,时间会立即更改。另外,/etc/timezone文件也相应地进行了修改。
编辑和保存配置文件后,我遗漏了哪些步骤以使新时间生效?
这是我的代码:
#include <time.h>
#include <stdio.h>
time_t my_timegm (struct tm *tm, char *tz_offset);
int
main (void)
{
struct tm time_tm;
time_t start_timet, end_timet;
time_tm.tm_sec = 0;
time_tm.tm_min = 0;
time_tm.tm_hour = 0;
time_tm.tm_mday = 1;
time_tm.tm_mon = 0;
time_tm.tm_year = 2023 - 1900;
time_tm.tm_isdst = -1;
start_timet = my_timegm (&time_tm, "Etc/GMT-6");
printf ("\n%li ", start_timet);
start_timet = my_timegm (&time_tm, "America/Chicago");
printf ("\n%li ", start_timet);
}
Run Code Online (Sandbox Code Playgroud)
my_timegm 是
#include <time.h>
#include <stdlib.h>
time_t
my_timegm (struct tm *tm, char *tz_offset)
{
time_t ret; …Run Code Online (Sandbox Code Playgroud)