datesleep和usleep命令
Posted 骏马金龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了datesleep和usleep命令相关的知识,希望对你有一定的参考价值。
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
1.1 date命令
date用于获取和设置操作系统的时间,还有hwclock是获取硬件时间。
date有个选项"-d",可以用来描述获取什么时候的时间,描述的方式非常开放,但不能使用"now"关键字,其他的如3天前"3 days ago",3天后"3 days",昨天"yesterday",下周一"next Monday",epoch时间"@EPOCH"等等。
Linux中设置date命令的显示格式:date [+format],其中"+"表示从前面的时间中获取其中的格式部分,如date -d "yesterday" +"%Y"获取的是昨天的年份部分。
format格式如下所示:标红色的较常用。
|
符号 |
意义 |
描述 |
年 |
%y |
年(后两位) |
last two digits of year (00..99) |
%Y |
年 |
year |
|
月 |
%m |
月 |
month (01..12)
|
日 |
%j |
年中天 |
day of year (001..366) |
%d |
月中天 |
day of month (如01) |
|
%w |
周中天 |
day of week (0..6); 0 is Sunday |
|
%u |
周中天 |
day of week (1..7); 1 is Monday |
|
周 |
%U |
年中周(00-53) |
week number of year with Sunday as first day |
%W |
年中周(00-53) |
week number of year with Monday as first day |
|
时 |
%H |
时(24时制) |
hour (00..23) |
%I |
时(12时制) |
hour (01..12) |
|
分 |
%M |
分 |
minute (00..59) |
秒 |
%S |
秒 |
second (00..60) |
%N |
纳秒 |
ns of current minute |
|
%s |
秒 |
从1970-01-01到目前时间的秒数总数 |
|
完整 格式 |
%T |
完整时间 |
time; same as %H:%M:%S |
%D |
日期完整格式 |
date; same as %m/%d/%y |
|
%F |
日期完整格式 |
date; same as %Y-%m-%d |
|
特殊 格式 |
%n |
换行 |
a newline |
%t |
tab键 |
a tab |
[root@xuexi ~]# date +%F 2016-09-25 [root@xuexi ~]# date +"%F %T" # 有空格需要使用双引号或引号来分隔 2016-09-25 10:48:34 [root@xuexi ~]# date +"%Y-%m-%d %H:%M:%S" 2016-09-25 10:47:49
使用date命令可以计算时间差。例如:
# 以下3个命令等价 date -d "3 days ago" +%F date -d "-3 days" +%F date -d "now - 3 days" +%F
再例如,给定一个时间,计算它的前几天,后几天。
# 以下两条命令等价 date -d "2018-02-19 3 days ago" +%F date -d "2018-02-19 - 3 days" +%F
给定一个日期,计算该日期所在星期的星期一是几月几号。例如,2018-05-12是星期六,那么星期一是2018-05-07。
#!/bin/bash src_date="2018-05-12" src_weekday=`date -d $src_date +%w` Mon_date=`date -d "$src_date - $(( src_weekday - 1 )) days" +%F` echo $Mon_date
date命令还可以计算延迟时间(两个时间点的时间差)。如果要计算精确度为秒级的延迟,可直接使用%s计算,但如果要计算毫秒级、微秒级甚至是纳秒级的时间差,则需要对date的结果进行一番计算和转换。以下是秒级时间差计算方法,毫秒级计算方法见:计算毫秒级、微秒级时间差。
#!/bin/bash start_time=$(date +"%s") find / -type f -name "*.db" &>/dev/null end_time=$(date +"%s") time_diff=$(( start_time - end_time )) echo $time_diff
1.2 sleep和usleep
在shell中常使用sleep命令指定休眠时间,休眠的意思表示让当前进程进入睡眠状态。例如:
sleep 5
sleep默认的休眠单位为秒,因此上面表示休眠5秒钟。如果要休眠毫秒级、微秒级,则可以使用小数。例如:
sleep 0.5
表示休眠半秒钟。
此外,还有专门的微秒级的休眠命令usleep。例如:
usleep 1000
表示休眠1000微秒,即1毫秒。
以上是关于datesleep和usleep命令的主要内容,如果未能解决你的问题,请参考以下文章
在我的 Qt 应用程序中,我可以用啥来代替 sleep 和 usleep?
php--------暂停函数 sleep() 与 usleep() 的区别