Questions tagged «time»

time是一个命令行实用程序,用于运行其他程序并汇总资源使用情况

1
为什么strace不显示该过程正在等待某些东西?
强大的力量strace让我失望了。这怎么可能? time foo显示foo运行需要几秒钟(“真实”),但在用户空间(“用户”)和内核(“ sys”)中使用的CPU时间都可以忽略不计。对于好奇,foo定义如下。 因此,它花费大部分时间等待其他事情,而不是执行CPU指令。正常情况下,我可以看到它的等待状态strace-即哪个系统调用长时间处于阻塞状态。不幸的是,这种方法行不通。 strace -ttt -T -C -w foo显示系统调用,时间戳和系统调用所花费的(实际)时间的摘要。但是,此特定过程显示出在系统调用内花费的总(实际)时间微不足道。 foo实际上是journalctl -b -u dev-hugepages.mount。除非我每次都必须将最后一个参数更改为一个不同的systemd单元,以便重现此参数。换句话说,我正在调查的延迟是在我第一次尝试获取任何一个systemd单元的日志时发生的。 编辑:在回答了主要问题之后,我还意识到我遇到这个问题会导致延迟的原因。 此过程花费的时间是一个特定的问题,显然并非在所有系统上都发生。https://github.com/systemd/systemd/issues/7963



4
对每个命令强制使用“添加”别名
是否可以向其中的每个命令强行添加定时别名(因为缺少更好的用短语表达的方式)bash? 例如,我希望有一个特定的用户,每当运行命令时,该用户总是用date之前和之后或包裹time。 这可能吗?如果可以,怎么办?
11 bash  monitoring  alias  date  time 

4
Linux系统时间暂时跳跃
我在某些(硬件)服务器中看到了一个奇怪的系统时间更改行为:在中/var/logs/syslog,每条日志消息之前的日期时间有时会更改为随机时间,而在下一条消息中会恢复为正常,如下所示: Feb 22 2018 09:09:30 ... Feb 22 2018 09:09:32 ... Jan 13 2610 15:37:42 ... Feb 22 2018 09:09:33 ... Feb 22 2018 09:09:34 ... 如示例中所示,日期时间的突然变化可能长达数百年。 我可以确认带有奇怪时间戳记的日志消息不是来自任何特定的过程,而是可以随机发生的。 两次异常时间更改之间的持续时间在几分钟到几小时之间不等(但是,我怀疑异常时间更改可能会更频繁地发生,但是由于系统日志不是每秒写入一次,因此许多未在系统日志中显示出来)。 另外,由于它发生在多个服务器上,因此我认为这不是硬件问题。 有关服务器的更多信息:它们是一个具有一个控制器和几个计算节点的开放式堆栈安装。每个服务器都有正在运行的ntp服务。控制器配置为从其自己的硬件时钟中抽出时间,并且计算节点服务器从控制器同步时间。请注意,每个服务器都会以自己的速度进行异常的时间更改-看起来“错误的时间”不是通过ntp从控制器同步的。 我怀疑计算节点上的来宾系统(虚拟机)可能会影响其主机系统时间。但这不能解释为什么控制器在不运行任何虚拟机时仍存在相同的问题。 我需要一种检测方法:谁更改了系统时间,它是如何发生的?
11 logs  timestamps  time 

3
睡到下次特定时间
我需要一系列命令或一个可以休眠的命令,直到下一次出现“ 4:00”之类的特定时间为止。 我该怎么办? 该at命令或cronjob是不可选项,因为我一定不要离开当前所在的脚本。 我正在谈论的特定情况是在屏幕上运行的脚本。我不要停止脚本本身来执行脚本,这一点非常重要,因为在脚本的某些地方需要存储许多重要的变量。脚本不总是应该定期执行。它只需要在特定时间执行。 如果脚本必须创建任何文件或任何其他任务(例如cronjobs或其他屏幕),那将是非常有益的。这只是设计问题。 我只是有一个可怕的主意: difference=$(($(date -d "4:00" +%s) - $(date +%s))) if [ $difference -lt 0 ] then sleep $((86400 + difference)) else sleep $difference fi 您有更好的主意吗? 如果需要,将添加更多信息!
11 bash  date  time  sleep 

1
在命令行中使用“时间”时,“系统时间”是什么
我曾经在Ubuntu 14.04的标准终端上time为Perl脚本计时。 我读过那real time是秒表时间;从用户启动程序直到程​​序终止,我一直是用户使用的时间。但我没有得到什么user或sys时间。time至少可以说,手册页上含糊不清。 尽管很明显real时间是分开的user,sys但不清楚它们代表什么。 在我的脚本中,我正在将基准测试[1]与C ++和Perl进行对比,以了解它们之间的区别,并且我想知道我实际上正在获取什么数据。输出示例为: real 0m24.198s user 0m23.120s sys 0m1.030s 有人可以解释一下默认的时间格式告诉用户吗?我是Linux的新手,所以请不要承担太多。 [1]有趣的是,尽管C ++在real时间方面比我的基准测试中的Perl快得多,但sys时间差别不大,因为C ++实际使用的sys时间比Perl多。这就是为什么我想知道它们的意思
10 time 

2
比较时间的好方法?
我需要检查当前时间,如果不是我应该运行它的一天中的适当时间,则中止脚本。另外,如果其他任何人运行它,它都应该中止。 例如:我需要脚本仅在10 PM到2 AM(4小时窗口)之间启动时才能运行。 目前,我正在执行以下操作。花时间date +%k%M与硬编码进行比较 #!/bin/sh currTime=`date +%k%M` check_time_to_run() { tempTime=$1 if [ $tempTime -gt 200 -a $tempTime -lt 2200 ]; then echo "Time is between 2 AM and 10 PM. Aborting." exit 1 else echo "Time is after 10 PM and before 2 AM. Running normally." fi } …

1
了解长时间运行进程的ps经过时间格式
我在ps练习中使用命令来识别运行时间超过给定阈值的进程。 我正在使用以下模板来获取已知流程命令的经过时间: ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}' 我注意到,对于运行时间较短的进程,etime(经过的时间)值采用格式minutes:seconds,因此,我可以轻松地确定进程运行了多长时间。 对于运行时间非常长的进程(几天之久),我不了解其格式。 我有一个MySQL服务器进程,htop显示已运行126个小时。 执行ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'给出的值为9-03:35:32。 我最好的猜测是,这意味着9个小时,3小时35分钟32秒。我不知道9的单位是多少。 该过程已运行126个小时,约5.25天。这表明以上输出中的9不代表天。他们也不可以是半天,因为(9 * 12)小时+ 3小时+ 35分钟+ 32秒少于5天。 如何解释长时间运行的进程所经过的时间值?以上输出中的9伴随什么单位?
10 process  time  ps 

5
如何配置shell脚本?
我有几个正在Shell脚本中执行的程序: ./myprogram1 ./myprogram2 ... 我知道我可以通过编辑源代码来分析每个程序,但是我想知道是否有一种方法可以通过分析脚本本身来测量执行的总时间。是否有可以用于此目的的计时器程序?如果是这样,它的测量精度如何?

2
我如何有条件地将子壳传递给“时间”?
我有一个Vagrant框的设置脚本,该脚本过去曾用来测量单个步骤time。现在,我想有条件地启用或禁用时间测量。 例如,以前的一行如下所示: time (apt-get update > /tmp/last.log 2>&1) 现在我以为我可以做这样的事情: MEASURE_TIME=true [[ $MEASURE_TIME = true ]] && TIME="time --format=%e" || TIME="" $TIME (apt-get update > /tmp/last.log 2>&1) 但这不起作用: syntax error near unexpected token `apt-get' `$TIME (apt-get update > /tmp/last.log 2>&1)' 这是什么问题
9 bash  shell  quoting  time 

2
我在Arch Linux中弄乱了系统时钟
我几天前安装了Arch。刚意识到日期/时间相差一天零一个小时。 我使用进行了更改timedatectl set-time。然后用来hwclock --systohc设置硬件时钟。之后,由于https证书错误,我无法进入某些网站,例如Gmail。我尝试更改时间,但没有成功。 我重新启动,然后遇到了问题,因为分区在不同的时间挂载,因此我fsck /dev/sda在分区上使用后可以启动。现在时钟不是问题,但我确实需要检查我的邮件。我不得不使用Facebook登录到stackexchange 密码。 帮帮我? 这就是Gmail的错误页面所说的内容: 该服务器的安全证书尚未生效!您试图访问gmail.com,但是服务器出示的证书尚未生效。没有信息可用于指示该证书是否可以信任。Chromium无法可靠地保证您与gmail.com进行通信,而不是与攻击者进行通信。您计算机的时钟当前设置为2012年1月10日,星期二,12:14:47 PM。看起来正确吗?如果不是,则应更正系统时钟,然后刷新此页面。 您无法继续,因为网站运营商已要求为此域提高安全性。

4
如何防止atd跑过去的工作?
at守护程序是一个很棒的工具!但是,如果计划在上午8:00进行作业,并且此时计算机已关闭,则在启动计算机时at将运行该作业。我想做的是,如果时间已到,请停止运行它。我已经搜索了手册页,并且在线查找,但是要么找不到答案,要么找不到答案。我正在使用Arch,但据我所知,在各个发行版中它非常相似。 任何帮助深表感谢!
9 time  scheduling  daemon  at 

6
查找上次关闭时间
这是我正在使用的命令: last -x|grep shutdown | head -1 但这给了我2小时的持续时间: shutdown system down 3.14-1-amd64 Mon Jul 21 08:43 - 22:19 (13:36) 最后一次关闭时间(08:43)是正确的,但启动时间(22:19,应为20:19)不正确。 是否有更好的命令来检查PC关闭多久了?还是我的DST设置或其他原因导致了这种情况? PS:我正在使用Debian测试(Linux rig 3.14-1-amd64#1 SMP Debian 3.14.12-1(2014-07-11)x86_64 GNU / Linux)
9 logs  time  shutdown 

3
在脚本中测量时间
此线程显示了如何测量运行脚本所花费的时间。就我而言,我有兴趣测量脚本中两点之间的时间 。这是我想如何使用此示例: start_measuring_time Line 1 Line 2 .. Line N stop_measuring_time show_elapsed_time 我希望显示的时间是人类可读的(秒,分钟,小时,天等),如果可能的话。任何想法如何做到这一点?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.