AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[time](unix)

Martin Hope
Okoba
Asked: 2023-10-14 23:47:18 +0800 CST

Unix 时间、闰秒以及将 Unix 时间转换为日期

  • 9

我读过很多很多关于 Unix 时间的帖子,很多人说一天是 86400 秒。

但像这样的页面谈论的是闰秒。这让我很困惑。我读到Unix时间是基于UTC的,我所能理解的是UTC和TAI之间的区别是闰秒,所以Unix必须支持闰秒,否则为什么不说基于TAI而不是UTC呢?

为了让自己更加困惑,我试图看看 Windows 做了什么,我发现的答案是它不计算闰秒,但它说基于 UTC,再次令人困惑,如果不计算闰秒为什么要说 UTC?

不管怎样,我想问一下在 Unix 中如何将整数秒转换为精确日期?

time
  • 3 个回答
  • 572 Views
Martin Hope
Lunartist
Asked: 2022-10-08 01:43:47 +0800 CST

你如何让每个循环都花费完全相同的时间?

  • 2

ENV:GNU bash,版本 4.2.46(2)-release (x86_64-redhat-linux-gnu) (它是旧的)


  • 我希望每个循环都花费相同的时间。
  • 循环永远不会停止
  • 该api_call功能通常需要大约1s~5s。
  • 由于网络问题,API 调用很少会挂到 60s-timeout。

我的脚本 A

TIMEFORMAT=%R
while true; do
  time=$(date +'%F %T')
  api_result=$( { time api_call; } 2>api_runtime.txt )
  api_runtime=$(cat api_runtime.txt)
  echo "${time} ${api_result}"
  sleep (( 10 - ${api_runtime} ))
done

我认为 Scrit A 会完成这项工作,直到有一天网络变慢并且循环不同步。


我的脚本 B

TIMEFORMAT=%R
while true; do
  time=$(date +'%F %T')
  api_result=$( api_call & )
  sleep 10
  echo "${time} ${api_result:-No response}"
done

脚本 B 目前似乎也可以工作,但我不确定下一个循环在api_call10 秒以上时是否安全。


我如何实现这一目标?

bash time
  • 1 个回答
  • 37 Views
Martin Hope
Gabriel Staples
Asked: 2022-04-21 16:51:16 +0800 CST

如何将可选参数传递给`time`命令[重复]

  • 2
这个问题在这里已经有了答案:
使 bash 使用外部“时间”命令而不是 shell 内置 5 个答案
6 个月前关闭。

man time表明它有一些选项,像这样,只将time输出写入文件而不是stderr:

-o FILE, --output=FILE

所以,我尝试使用它

$ time -o out.txt ls
-o: command not found

real    0m0.081s
user    0m0.070s
sys 0m0.012s

这不起作用!它说-o: command not found。

证明out.txt不存在:

$ cat out.txt
cat: out.txt: No such file or directory

我究竟做错了什么?

如何使用 with 之类-o somefile.txt的选项time?

我在 Linux Ubuntu 18.04 上,bash用作我的终端。

bash time
  • 1 个回答
  • 277 Views
Martin Hope
lolilaliaa
Asked: 2022-04-14 05:51:25 +0800 CST

重击时间转换器

  • 0

我有一个问题,如何将时间从 12h AM/PM 格式转换为 24h?例如,我有来自标准输入的输入,一些文本是这样的:

The event starts at 03:25PM and is expected to end at 06:17PM.
Registration will be opened from 09:00AM until 06:00 PM.
The event starts at 15:25 and is expected to end at 18:17.
Registration will be opened from 09:00 until 06:00 PM.

如何读取所有 hh:mmPM 和 hh:mmAM 并进行转换?但我不想像这样使用 awk 或 smth。我如何只使用 bash 循环、if/else、echo、sed 等来做到这一点?谢谢!

bash time
  • 1 个回答
  • 78 Views
Martin Hope
Stanley F.
Asked: 2022-04-07 10:36:25 +0800 CST

在 zsh 中时间命令的输出中显示变量的值

  • 2

我想为一系列输入变量测量我的程序的运行时间(我正在使用 zsh):

for i in {1..3} ; do time sleep $i ; done

输出是

sleep $i  0,00s user 0,00s system 0% cpu 1,003 total
sleep $i  0,00s user 0,00s system 0% cpu 2,003 total
sleep $i  0,00s user 0,00s system 0% cpu 3,002 total

但我希望它是

sleep 1  0,00s user 0,00s system 0% cpu 1,003 total
sleep 2  0,00s user 0,00s system 0% cpu 2,003 total
sleep 3  0,00s user 0,00s system 0% cpu 3,002 total

如何time打印实际命令,所有变量都替换为它们的值?


我已经尝试在子 shell 中运行程序,它没有按预期更改输出:

for i in {1..3} ; do time (sleep $i) ; done

由于我的程序为 stdout 和 stderr 生成自己的输出,因此我看不到一种方法可以简单地预先添加所有参数(还有一些不仅仅是i),例如:

for i in {1..3} ; do echo -n "i=$i --> " ; time sleep $i ; done
zsh time
  • 2 个回答
  • 39 Views
Martin Hope
markfree
Asked: 2022-02-03 17:35:02 +0800 CST

将字符串时间转换为秒

  • 1

我收到这种格式的正常运行时间:

167h58m10.586582048s

我想将其转换为秒并丢弃分数部分。我知道awk如果只有接收到的字符串具有相同的分隔符,就可以做到这一点。事实并非如此。

我怎么能把它转换成秒?

date time
  • 1 个回答
  • 220 Views
Martin Hope
ksonofre
Asked: 2022-01-18 06:18:28 +0800 CST

自动时间同步:`ntpdate` 有效,但 `chrony` 无效

  • 2

我的 Linux 服务器的时间同步有问题。这台机器和 NTP 服务器都位于(较小的)大学数据中心,因此是本地地址。

奇怪的是该ntpdate命令有效:

ntpdate -u 172.16.0.25

输出:

17 Jan 15:03:53 ntpdate[25993]: adjust time server 172.16.0.25 offset 0.036043 sec

但是,chronyd没有(它只是挂起):

chronyd -q 'server 172.16.0.25 iburst'

我正在尝试所有方法来设置自动时间同步,ntpd但没有成功,最后求助于chrony但仍然无法弄清楚。

这是发生了什么事ntpd。我使用https://vitux.com/how-to-setup-ntp-server-and-client-on-debian-10ntpdate上的说明进行安装。conf文件有一个命令

server 172.16.0.25 prefer iburst

而系统状态ntp报告

Jan 18 10:26:11 akulab1 ntpd[26957]: kernel reports active service TIME_ERROR: 0x41: Clock Unsynchronized

具有以下ntpq -p输出

HKS-SRV01.unica .LOCL.           1 u    9   64   15    0.557  2275.65   9.515 – 

但是,一段时间后,服务报告

Jan 18 10:31:01 akulab1 ntpd[26957]: ntpd exiting on signal 15 (Terminated)

因为 NTP 同步没有成功。但是,ntpdate -u 172.16.0.25 报告同步:18 Jan 10:33:13 ntpdate[26990]: step time server 172.16.0.25 offset 2.282101 sec(如果我没记错的话......) – ksonofre 7 分钟前

这是我的/etc/ntp.conf文件:

driftfile /var/lib/ntp/ntp.drift

leapfile /usr/share/zoneinfo/leap-seconds.list

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

server 172.16.0.25 prefer iburst

restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited

restrict 127.0.0.1
restrict ::1

restrict source notrap nomodify noquery

我再次重新启动了 NTP 服务:systemctl restart ntp

的输出ntpq -np如下:

root@akulab1:~# ntpq -np
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 172.16.0.25     .LOCL.           1 u   63   64  377    0.518  104.685  14.815

但是,服务 ( systemctl status ntp) 仍然报告:

Jan 18 11:04:10 akulab1 ntpd[27089]: kernel reports TIME_ERROR: 0x4041: Clock Unsynchronized

而且,在我设置timedatectl set-ntp trueNTP 服务后,它会简单地关闭,即报告不活动。

我再次重新启动了 ntpd 服务并且它处于活动状态。此外,我已经等了一个多小时进行同步,但它从来没有得到它(服务器地址前面没有星号或加号) - 这是输出ntpq -np:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 172.16.0.25     .LOCL.           1 u   61   64  377    0.588  269.847  14.797

此外,这是ntpdate -qu命令的输出:

18 Jan 13:57:44 ntpdate[1975]: no servers can be used, exiting

好的,上面的命令不完整,所以ntpdate -qu 172.16.0.25有以下输出:

server 172.16.0.25, stratum 1, offset 0.435131, delay 0.02621
18 Jan 14:51:56 ntpdate[6951]: adjust time server 172.16.0.25 offset 0.435131 sec

并ntpq -np给出以下内容:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 172.16.0.25     .LOCL.           1 u   17   64  377    0.554  436.092  14.279

解决方案在下面接受的答案中给出。我假设时间同步现在正在工作,但我仍然会跟踪时钟漂移并更新我的问题,如果它没有正确同步。


最终解决方案发布在这篇文章中:ntp server reachable but never select/set the time

linux time
  • 1 个回答
  • 817 Views
Martin Hope
Manuel Jordan
Asked: 2021-09-20 11:57:48 +0800 CST

什么时候日期和时间datectl?

  • 2

关于日期和时间的报告和设置可用date和timedatectl命令 - 它与可通过网络获得的最常见结果一致。实际上两者都做同样的事情。

那么,对于一个或多个明确的场景,什么时候是强制性的呢?

date time
  • 3 个回答
  • 340 Views
Martin Hope
Tohkai
Asked: 2020-02-25 01:07:46 +0800 CST

系统是否需要在正确的时间才能获得 GPS 定位

  • 0

我正在使用安装了 Debian 的 ARM 设备。机器上安装了 GPS 芯片,我在程序中使用它。

话虽如此,它似乎非常、漫长,甚至有时甚至不可能得到修复。我的设备没有时钟。根据可用的来源,我可以从其他地方设置系统数据(如果用户将设备连接到 WIFI,则为 IE)

我真的不知道时区是如何运作的。我的国家只有一个,它会根据季节而变化。

我的第一个问题是:

  • 在 Debian 中,系统时间是否与 GPS 定位相关?
  • 如果是这样,我必须设置什么类型的日期?我的国家使用 GMT,但卫星甚至关心这种类型的概念似乎很奇怪,我假设他们使用 UTC - 是这样吗?现在我要离开一小时……我想。(09:05 UTC 而我国的时钟似乎是 10:05)
debian time
  • 1 个回答
  • 145 Views
Martin Hope
David
Asked: 2020-01-18 03:22:34 +0800 CST

一个系统上的无效日期;在另一个系统上完全有效?

  • 0

我的代码需要一个开始时间,然后从该开始时间定义一些其他日期/时间变量。像这样:

shour=$(date -d "yesterday 3PM" -u)

dd=$(date "+%d" -d "$shour" -u) 

sdate=$(date "+%Y%m%d" -d "$shour" -u)

这返回;

date: invalid date 'Thu 16 Jan 15:00:00 UTC 2020'
date: invalid date 'Thu 16 Jan 15:00:00 UTC 2020'

把我的头发拉出来!

date time
  • 3 个回答
  • 475 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve