Articles of 时间戳

bash – wget -N如果其他值检查

我正在使用一个bash脚本,只有当远程时间戳与本地时间戳不同时,才从FTP站点获取文件。 放入文件后,通过samba(smbclient)将文件复制到另外3台计算机上。 一切正常,但即使wget -N ftp://insertsitehere.com返回一个值,远程文件不新的文件副本。 检查脚本输出的最佳方法是什么,以便只有从FTP中取出新版本才会发生复制? 理想情况下,我想复制到计算机来保存时间戳,就像wget -N命令一样。 这里是我所拥有的一个例子: #!/bin/bash OUTDIR=/cats/dogs cd $OUTDIR wget -N ftp://user:password@sitegoeshere.com/filename if [ $? -eq 0 ]; then HOSTS="server1 server2 server3" for i in $HOSTS; do echo "Uploading to $i…" smbclient -A /root/.smbclient.authfile //$i/path -c "lcd /cats/dogs; put fiilename.txt" if [ $? -eq 0 ]; then echo "Upload to $i […]

硬件时间戳使用tcpdump

(Applogies提前我的英文不好,我不是母语的人) 我目前正在学习我的学士论文。 我的项目的目标是精确准确地对时间戳进行封装(在十微秒范围内至less要精确)。 我正在尝试使用tcpdump完成硬件时间戳,但是我遇到了一些问题。 我的设置: 2直接连接相同的服务器。 Linux:Debian 3.16.7 networking接口:Intel i350-T4 使用tcpdump命令: sudo /usr/sbin/tcpdump -i eth4 -s 59 port 33333 -x -n -tt -v -j adapter_unsynced –time-stamp-precision=nano -w name.pcap 现在,我的结果本身是有道理的,会给我想要的结果,但是他们有很大的抵消。 准确的时间是36秒。 我使用-j adapter_unsynced选项的结果的抖动大约是10μs,如果使用-j adapter选项,我会得到〜100μs的抖动(对于我的应用程序来说太不精确),而不是36秒的偏移量。 所有的时钟都可以同步,据我所知。 系统时钟都是同步的,NIC的PHC时钟也是同步的。 作为testing运行,我更改了其中一台服务器的系统时钟,并在使用-j adapter_unsynced时显示结果中的更改。 所以我的问题是:我做错了什么,是我想甚至可以用tcpdump做什么? 我很感谢任何build议。 问候,基督徒

编写linux脚本将时间戳超过1.1.1970转换为2.2.1970

我无法将我的文件与Owncloud同步,因为某些时间戳早于1.1.1970(Unix时间约定的开始)。 任何人都知道如何编写一个脚本来查找时间戳早于1.1.1970的所有文件,并将它们转换为1.1.1970之后的任何date,也许是1.1.1980? 谢谢 最好

如何编码和解码64位格式的NTP时间戳?

我正在编码和解码在RFC 5905第6节中提到的NTP时间戳(64位)格式。 请解释一下如何用一个例子对64位NTP时间戳进行编码和解码。

ALSA时间戳function返回什么结果,以及结果如何相互关联?

在ALSA中有几个“高分辨率”时间戳function: snd_pcm_status_get_trigger_htstamp snd_pcm_status_get_audio_htstamp snd_pcm_status_get_driver_htstamp snd_pcm_status_get_htstamp 我想了解结果函数代表什么时间点。 我目前的理解是, trigger_htstamp表示stream开始/停止/暂停的时间。 snd_pcm_status_get_trigger_htstamp返回一个常量值,当我将audio_htstamp添加到该值时,结果非常接近当前系统时间。 audio_htstamp似乎从我的系统上的零开始,并增加一个等于我使用的周期大小的值。 因此在我的系统上它是一个简单的帧计数器。 如果我理解ALSA正确audio_htstamp也可以以不同的更准确的方式工作,取决于系统的能力。 driver_htstamp我猜的名字是由audio驱动程序生成的时间戳。 问题1:什么时候通常会生成时间戳driver_htstamp ? 有了htstamp我真的不确定它在何时何地生成。 我有一个预感,它可能与DMA有关。 问题2:生成的htstamp在哪里? 问题3:何时生成htstamp ? 问题4:假设audio_htstamp < htstamp < driver_htstamp大致正确吗? 这似乎与我写了一个小testing程序 ,但我想validation我的假设。 我无法在ALSA文档中find这些信息。

调用一段时间的函数

我想要打一个电话 – 要么是一个函数调用,要么在一段时间内做一些条件…通常是10 – 20秒。 我会得到一些用户input的时间量,并做到这一点… 什么是在Linux / Unix系统上使用的正确function? gettimeofday似乎是要走的路…或者time_t time(time_t * t)…似乎很简单。 什么是首选?

比较不同机器之间的时间戳

我工作的环境涉及在一个链路上处理数据的LAN上的多台机器(Linux) 。 我想用某种方式来标记时间戳 ,以便我可以看到每个节点收到/发送的时间,以便稍后比较整个链的时间戳。 这是一个低延迟的系统。 我想了解是否可以将不同机器上的时间戳与分辨率微秒进行比较 。 人们通常使用什么样的服务来同步时钟,以及可能期望的分辨率? 什么时钟漂移和其他东西? 例如,N个节点,都需要在秒/毫秒/微秒同步时钟,这是可能的,什么是需要的,什么是开销? 当然,我希望它对networking和处理时间是非侵入性的。 😉 我完全看着不可能完成的事情吗? 期待阅读您的答案! 谢谢!

审计特定的系统调用参数值

我想部署审计集中在我的GNU / Linux机器上的一些更复杂的情况,比如执行像touch -m'faketime'somefile这样的命令。 我调整了exec,发现了正常的触摸和触摸与时间戳修改标志之间的区别。 这些分别是: utimes(“/ proc / self / fd / 0”,NULL)= 0 utimes(“/ proc / self / fd / 0”,{{1364383142,0},{1364383160,875693}})= 0 所以看起来好像很容易捕捉到系统调用的怀疑发生; 其第二个(a1)参数必须为NULL。 我试图设置以下审计规则: – 退出,总是-F arch = b32 -S utimes -F a1!= 0 -k TIMESTAMP_TAMPERING 然而它没有接到电话。 auditd在a1-4参数中不接受值(NULL)的文本表示,至less我试图实现它的麻烦。 有什么build议么? 提前致谢。

Linux,UDP数据报和内核时间戳:稍后有大量的例子和堆栈溢出条目,仍然不能获得时间戳

我一直在尝试和无法让Linux(内核4.1.4)给我发送和接收UDP数据报的时间戳。 我已经阅读了原始内核文档( https://www.kernel.org/doc/Documentation/networking/timestamping.txt ),以及大量的例子和一些stackoverflow条目。 我可以在发送者和接收者之间发送数据报,没有任何问题。 但是我无法获取发送或接收数据报的时间戳,我无法弄清楚我做错了什么。 奇怪的是,当我使用MSG_ERRQUEUE通道获取发送的数据报的时间戳信息时,我得到了原始的传出数据包,并且得到了第一个辅助消息(SOL_IP,IP_RECVERR),但是我没有收到第二个消息(它应该是级别SOL_SOCKET,typesSCM_TIMESTAMPING)。 在获取发送数据包时间戳的另一个stackoverflow条目( 时间戳发送数据包 )中,有人提到有些驱动程序可能不会实现对skb_tx_timestamp的调用,但是我检查了我的(Realtek),那个调用肯定在那里。 以下是我如何设置UDP接收器(error handling代码未显示): inf->fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); timestampOn = SOF_TIMESTAMPING_RX_SOFTWARE | SOF_TIMESTAMPING_RX_HARDWARE; r = setsockopt(inf->fd, SOL_SOCKET, SO_TIMESTAMPING, &timestampOn, sizeof(timestampOn)); r = setsockopt(inf->fd, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)); memset(&(inf->local), 0, sizeof(struct sockaddr_in)); inf->local.sin_family = AF_INET; inf->local.sin_port = htons(port); inf->local.sin_addr.s_addr = htonl(INADDR_ANY); r = bind(inf->fd, (struct sockaddr *)&(inf->local), […]

Linux文件创build时间戳争用条件

我试图做我认为是Linux下的一件简单的事情。 我有一个运行各种testing程序的bash脚本,我想确定当前目录中的哪些文件是由testing程序创build的。 所以我正在做这样的事情: 触摸时间戳文件 运行testing find -newer timestamp-file -type f>列表文件 rm -f时间戳文件 发现find-newer的粒度很差,所以通常情况下,testing程序生成的一些文件显示为OLDER而不是timestamp文件。 那么我试过这个: ls -tr1 | sed'1,/ timestamp-file / d' 生成相同的列表。 这通常有效,但并不总是。 我还是会遇到由testing生成的文件显示为比时间戳文件更早的情况。 谢谢! PS我可以通过两个目录的快照,一个在testing程序运行之前,然后一个在之后进行比较来完成另一种方式。 第二个列表中不在第一个列表中的任何文件都必须由testing程序创build(我不关心后台作业或其他用户写入目录)。 但是这个方法并不是我想要的,因为如果在运行testing之前没有删除输出文件(它们应该是,但在某些情况下它们可能不是),这个方法会说它不是由testing程序,因为它在testing程序运行之前在目录中。