我正在尝试在shell脚本中创建一个时间戳变量,以使日志记录更容易一些.我想在脚本的开头创建变量,并在每次发出时打印出当前时间echo $timestamp.事实证明,这比我想象的要困难得多.以下是我尝试过的一些事情:
timestamp="(date +"%T")" echo打印出来 (date +"%T")
timestamp="$(date +"%T")" echo打印变量初始化的时间.
我尝试过的其他事情只是轻微的变化,没有任何改善.有谁知道如何完成我想要做的事情?
是否有一种快速的,单行的方式将Unix时间戳转换为Unix命令行中的日期?
date可能会工作,除了指定每个元素(月,日,年,小时等)相当尴尬,我无法弄清楚如何让它正常工作.似乎可能有一种更简单的方法 - 我错过了什么吗?
我希望我的bash脚本睡到特定时间.所以,我想要一个像"睡眠"这样的命令,它不需要间隔但是结束时间,直到那时才睡觉.
"at"-daemon不是解决方案,因为我需要阻止正在运行的脚本直到某个日期/时间.
有这样的命令吗?
在我测试的两个系统上(一个32位的Ubuntu 12.04服务器和一个64位的Ubuntu 13.10 VM),time()给出的纪元以来的秒数可能与gettimeofday()不同.
具体来说,虽然我在调用time() 后调用gettimeofday(),但返回的值time()有时小于tv_sec返回的值gettimeofday().
这显然发生在时钟滚动到新的秒钟之后.
这导致了我的一些代码中的错误,这些代码期望time()和gettimeofday()的秒可以互换.
示例代码演示此问题:
#include <stdio.h>
#include <time.h>
#include <sys/time.h>
int main()
{
time_t start = time(NULL);
int same = 0;
int different = 0;
int max_usec = 0;
while (1) {
time_t t;
struct timeval tv;
gettimeofday(&tv, NULL);
t = time(NULL);
if (t < tv.tv_sec) {
different++;
if (tv.tv_usec > max_usec) {
max_usec = tv.tv_usec;
}
} else { …Run Code Online (Sandbox Code Playgroud)