shell 脚本执行日志怎么才能带有shell 时间戳转日期

Linux查看History记录加时间戳小技巧
& & 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如
[root@servyou_web ~]# history &| &more
& & 6 &./test.sh&
& & 7 &vim test.sh&
& & 8 &./test.sh&
&但是这里只显示了命令,并没有显示执行命令的时间,因为保存历史命令的~/.bash_history里并没有保存时间。
通过设置环境变量 export HISTTIMEFORMAT=&%F %T `whoami` & 给history加上时间戳
[root@servyou_web ~]# export HISTTIMEFORMAT=&%F %T `whoami` &
[root@servyou_web ~]# history &| &tail
&-06-22 19:17:29 root & &15 & 19:13:02 root ./test.sh&
&-06-22 19:17:29 root & &16 & 19:13:02 root vim test.sh&
&-06-22 19:17:29 root & &17 & 19:13:02 root ./test.sh&
&-06-22 19:17:29 root & &18 & 19:13:02 root vim test.sh&
&-06-22 19:17:29 root & &19 & 19:13:02 root ./test.sh&
&-06-22 19:17:29 root & &20 & 19:13:02 root vim test.sh&
&-06-22 19:17:29 root & &21 & 19:13:02 root ./test.sh&
&-06-22 19:17:29 root & &22 & 19:13:02 root vim test.sh&
&-06-22 19:25:22 root & &22 & 19:13:02 root vim test.sh&
&-06-22 19:25:28 root history &| &tail
可以看到,历史命令的时间戳已经加上了,但是.bash_history里并没有加上这个时间戳。其实这个时间记录是保存在当前shell进程内存里的,如果你logout并且重新登录的话会发现你上次登录时执行的那些命令的时间戳都为同一个值,即当时logout时的时间。
尽管如此,对于加上screen的bash来说,这个时间戳仍然可以长时间有效的,毕竟只要你的server不重启,screen就不会退出,因而这些时间就能长时间保留。你也可以使用echo 'export HISTTIMEFORMAT=&%F %T `whoami` &' && /etc/profile 然后source一下就OK
本文已收录于以下专栏:
相关文章推荐
LINUX用户登录后精确命令记录(history 按时间、用户显示命令记录)
主要功能:
  可以记录哪个ip和时间(精确到秒)作了哪些命令
  通过用户登录时候,重新定义HISTFILE
显示历史命令之行时间
1.vi .bash_history
关于.bash_history的配置
export HISTCONTROL=ignoreboth
Don’t save duplicates
如何让linux的history命令显示时间记录
linux和unix上都提供了history命令,可以查询以前执行的命令历史记录但是,这个记录并不包含时间项目因此只能看到命令,但是不知道什么时...
在sudo vim /etc/profile
export HISTTIMEFORMAT=&%F %T `whoami` &
history | more
histoyr | t...
在问题定位时,我们有时需要查看history命令记录,看是否有删除/移动文件、修改配置等误操作,为history命令添上时间记录,可便于分析、定位问题。
默认的情况下,history执行结果显...
Linux查看History记录加时间戳小技巧
熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如
[root@servyou_web ~]# history
Linux查看History记录加时间戳小技巧
    熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如
[root@servyou_web ~]# history ...
FTP安装配置参考:
CentOS5.4安装配置vsftpd
对CentOS防火墙的设置问题,有很多的网友一直存在着不少的疑问,下面,就是我找到设置CentOS防火墙的方法,给...
如何进步快做技术已经有半年有余了。总觉得技术进步慢。自己总结技术进步快的途径1有个良好扎实的基础知识(第一步)2然后加盟一家,有实力的正规软件企业(争取是日企,或着欧美企业)刚上班 主要是学习,俯下身...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)10494人阅读
shell(32)
linux(53)
shell命令格式严格,不像python那样命令行中可以添加空格。如等号两边无空格。有多余空格错误,日期date命令就是最明显的例子。
命令格式:
date [-u] [-d datestr] [-s datestr] [--utc] [--universal][--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT][MMDDhhmm[[CC]YY][.ss]]
date +%Y%m%d&&&&&&&&&&&& :以yyyymmdd格式输出()
date --date=&1 day ago& +%Y%m%d :一天前的日期
date -d &-2 day & +%Y%m%d
for i in `seq 0 6` & & :循环看 参数顺序无关,命令都一样
& &&date -d &$day +$i day&&+%Y%m%d & :正数可以省略符号
& &&date +%Y%m%d -d &$day +$i day&&
& & date +%Y%m%d -d &$i day $day &
& & date +%Y%m%d -d &+$i day $day &
& &&date +%Y%m%d -d $day
格式注意
1,date后面每个空格之间都是一个独立的参数,分别看做整体,用双引号格式能看的更为清楚,如date &+%Y%m%d %H:%M:%S& -d &+1 hour&
& & & & i.&&&&&&&&&&&&&-d“-2 day”指定输出内容
& & & & ii.&&&&&&&&&&&&&“+%Y%m%d”是一个整体,控制输出格式,+后面无空格
2,参数顺序无关,如
& & & & & & & &&date -d &-2 day & +%Y%m%d
&&&&&&&&&&&&&&
date +%Y%m%d&-d &-2 day &
date +%Y%m%d&-d &&-2 day&
& & & &都一样。
3,独立参数有无双引号都行,
+%s和date -d&& &+%s&是一样的,还有date -d'' +%s
时间字符串的转化:
用date 的输出格式控制实现,但“月日年”和“时分秒”必须分开处理,否则会无法识别。such as
20:12:59 或者 :12:59
1,二者用空格分割;
2,年月日作为整体,格式十分灵活,可以随意写。但时分秒必须用冒号”:”分开,否则无法识别。
1 date字符串与时间戳格式互转:
A)字符串转时间指定格式:
计算2011111前两天&&&&
date -d &-2 day & +%Y%m%d&& (输出为 )&&&&&
或者date --date=&&+%Y%m%d
B)字符串转换为时间戳:
date -d & 00:00:00& +%s&& &(输出& )
-d参数指定字符串,+%s表示输出时间戳。
C)时间戳转换为字符串:
date -d ' UTC
seconds' +&%Y-%m-%d %T&(输出 00:00:00)
& & & & 或者直接用@符号&
&&&&&&&&&date -d @&&+%Y-%m-%d
D)时间戳的日期计算:
seconds=`date -d & 00:00:00& +%s`&&& &#得到时间戳
seconds_new=`expr $seconds + 86400`&&& &&&&&&#加上一天的秒数86400
date_new=`date -d @$seconds_new &+%Y-%m-%d&`&& #获得指定日前加上一天的日前
2 分钟计算的两种方法:
1)date时间计算,输出用格式控制符:
date &+%Y-%m-%d %H:%M:%S& -d &-15 minute$yearof-$monthof-$dayof 20:12:59&
yearof=&2013&
monthof=&10&
dayof=&30&
echo $nowth
echo $dayof
date &+%G-%m-%d %H:%M:%S& -d &0:12:59&
date &+%Y%m%d%H%M%S& -d & 20:12:59&
mytime=`date &+%Y-%m-%d %H:%M:%S& -d&$yearof-$monthof-$dayof 20:12:59&`
echo &$mytime is&
mytime=`date &+%Y-%m-%d %H:%M:%S& -d &-15 minute$yearof-$monthof-$dayof 20:12:59&`
echo &$mytime now is&
nowtime=`date &+%Y%m%d%H%M%S& -d&$yearof-$monthof-$dayof 20:12:59&`
#time must be with :, if no, wrong
echo &$nowtime is&
nowtime=`date &+%Y%m%d%H%M%S& -d &-15 minute${yearof}${monthof}${dayof} 20:12:59&`
echo &$nowtime now is&
2)转为时间戳计算:
#date &+%Y-%m-%d %H:%M:%S& -d &59&
#date -d &$yearof-$monthof-$dayof 14:32:12& +%s
#date -d &$yearof-$monthof-$dayof 14:32:12& +%s
3 屏蔽字符串,如分和秒归0:
true_time=& 15:36:11&
start_time=`date &+%Y%m%d%H0000& -d&$true_time&`
echo $start_time
##mytime=`date -d &$start_time& &+%s&`#invalid
test_time=`date &+%Y-%m-%d %H:00:00& -d&$true_time&`
echo $test_time
start_time=`date -d &$test_time& &+%s&`
echo $start_time
4 按日期循环执行的shell:
dbname=&wizad&
for i in `seq 0 60`
&&& onedayid=$(date -d&${oneday} +$i day& +%Y-%m-%d)
&&&& hive -e &use${dbname};
&&&& alter tablewizad_mdm_cleaned_hdfs add partition (day='${onedayid}',adn='3') location'/user/wizad/data/wizad/raw/${onedayid}/3_1/';
&&&& alter tablewizad_mdm_cleaned_hdfs add partition (day='${onedayid}',adn='5') location'/user/wizad/data/wizad/raw/${onedayid}/5_1/';
5 一些date常用案例:
1,将增加时间变成秒
&time2=$((1*60*60+20*60))
&echo$time2
2,两个时间相加,计算出结果时间
time1=$(date +%s -d ' 01:01:01')
time1=$(($time1+$time2))
time1=$(date +%Y-%m-%d\ %H:%M:%S -d& UTC $time1 seconds&);
echo $time1
3,时间差计算方法
11:11:11 时间差
原理:同样转成时间戳,然后计算天,时,分,秒
time1=$(($(date +%s -d '') -$(date +%s -d ' 11:11:11')));
echo time1
将time1 / 60 秒,就变成分了。
4,小时的计算:
date#当前时间
current_time=`date &+%Y-%m-%d%H:00:00& -d &-1 hour&` #取一小时前的时间,分秒清零
echo $current_time
start_time=`date -d&$current_time& &+%s&`#转化为时间戳
echo $start_time
end_time=`date &+%Y%m%d %H:%M:%S&-d &+1 hour ${current_time}&`#
echo $end_time
my_time=`date &+%Y-%m-%d%H:00:00&`
echo $my_time
上面两个都是取当前时间的分秒清零。
t_time=`date -d &$my_time&&+%s&`
echo $t_time
t2_time=$((start_time+3600))& #注意,转化为时间戳后可以直接计算,用shell的简便计算符$((表达式)),直接求出一小时后的时间(时间戳格式)
echo $t2_time
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1023309次
积分:11833
积分:11833
排名:第1338名
原创:243篇
转载:183篇
评论:104条
(1)(2)(1)(1)(1)(5)(2)(4)(2)(1)(1)(3)(3)(3)(2)(3)(9)(2)(8)(12)(4)(13)(11)(9)(8)(5)(3)(9)(12)(5)(12)(29)(36)(36)(18)(9)(27)(27)(15)(20)(19)(9)(4)(17)(3)第一种 使用date -d 选项
& & & & & & & date &+&%Y%m%d& -d &&+n days& & & & & 今天的后n天日期 &
& & & & & & &&date &+&%Y%m%d& -d &&-n days& & & & & &今天的前n天日期
自己写函数
#!/bin/ksh
#获取昨天的日期
Today=`date +%Y%m%d`
YEAR=`echo $Today|cut -c 1-4`
MONTH=`echo $Today|cut -c 5-6`
DAY=`echo $Today|cut -c 7-8`
if [ $DAY -eq 1 ]
if [ $MONTH -eq 1 ]
YEAR=`expr $YEAR - 1`
MONTH=`expr $MONTH - 1`
#如下两种方法皆可
#DAY=`echo \`cal $MONTH $YEAR\`|tail -n1|awk '{print $NF}'`
DAY=$(cal $MONTH $YEAR | tail -n2|sed -n 1,1p | awk '{print $NF}')
DAY=`expr $DAY - 1`
LAST=$(echo &$YEAR $MONTH $DAY&|awk '{if (length($2)==1) $2=0$2;if (length($3)==1) $3=0$3;printf &%s%s%s&,$1,$2,$3}')
}GetLastDate()
TODAY=`date &+%Y %m %d&`
LASTDATE=`echo $TODAY|awk \
Year=$1; Month=$2; Day=$3; \
M[1]=31; M[2]=28; M[3]=31; M[4]=30; M[5]=31; M[6]=30; \
M[7]=31; M[8]=31; M[9]=30; M[10]=31; M[11]=30; M[12]=31; \
if (Year%4==0 && (Year%100!=0 || Year%400==0)) M[2]=29; \
else M[2]=28; \
if (Day-1==0) \
if (Month-1==0) { Year-=1; Month=12; } \
else Month-=1; \
Day=M[Month]; \
else Day-=1; \
printf(&%04d%02d%02d&, Year, Month, Day); \
echo &***************&
echo ${LAST}
echo &***************&
GetLastDate
echo ${LASTDATE}-----------------------------------------------------------常用日期格式 [root@localhost tmp]# date +&%F&
[root@localhost tmp]# date +&%D&
[root@localhost tmp]# date +&%Y%m%d %H:%M:%S&
[root@localhost tmp]# date +&%Y%m%d&
[root@localhost tmp]# date +&%Y%m%d %H:%M:%S& -d &+1 hours&
[root@localhost tmp]# date +&%Y%m%d %H:%M:%S& -d &+1 days&
[root@localhost tmp]# date +&%Y%m%d %H:%M:%S& -d &+1 months&
[root@localhost tmp]# date +&%Y%m%d %H:%M:%S& -d &+1 years&
:53:07[root@localhost tmp]# date +&%T&
[root@localhost tmp]# date +&%F %T&
[root@localhost tmp]# date +&%D %T&
06/08/12 05:03:39
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &+10hour&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &+24hour&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &-24hour&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &-20minute&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &+20minute&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &+2day&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &-2day&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &-2month&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &+2month&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &+2year&
[root@localhost riqi]# date +&%Y-%m-%d %H:%M:%S& -d &-2year&
---------------------------------------------------
date&+%s&&&可以得到UNIX的时间戳;
用shell将时间字符串与时间戳互转:
&&&&&&date&-d&&&00:00:00&&+%s&&&&&&&&&输出形如:
而时间戳转换为字符串可以这样做:
&&&&&&date&-d&@&&&+%Y-%m-%d&&&&&输出形如:
如果需要得到指定日期的前后几天,可以:
&&&&&&1、seconds=`date&-d&&&00:00:00&&+%s`&&&&&&&#得到时间戳
&&&&&&2、seconds_new=`expr&$seconds&+&86400`&&&&&&&&&&&&&&&&&&&#加上一天的秒数86400
&&&&&&3、date_new=`date&-d&@$seconds_new&&+%Y-%m-%d&`&&&#获得指定日前加上一天的日前
本文已收录于以下专栏:
相关文章推荐
在shell开发中,经常要用到跟获取日期相关的东西,这里记录一下Linux shell 获取日期的方法
获取当前日期:today=`date +&%Y-%m-%d&`
获取昨天的日期:yesterda...
在shell脚本里常常需要获取系统时间来处理某项操作,今天系统的学习了一下如何获取系统时间。记录如下:
linux的系统时间在shell里是可以直接调用系统变量的如:
获取今天时期:`date ...
获得当天的日期
date +%Y-%m-%d
date1=$(date --date='1 days ago +%Y%m%d')    #前一天的日期
关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总
结,感觉很全面,所以就转过来研究研究,嘿嘿...
1、 for((i=1;i
2、在shell中常...
来源 :http://book.csdn.net/bookfiles/31562.shtml1.1 以root特权身份运行命令有些命令可能会损坏文件系统或者让操作系统瘫痪,还有...
date命令中格式输出类型字符含义如下:%% 一个文字的 %
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前local...
原文地址:/html/os/linux/0.htmllinux中用shell获取昨天、明天或多天前的日期:在Linux中对man dat...
date命令的帮助信息
 [root@localhost source]# date --help
用法:date [选项]... [+格式]
 或:date [-u|--utc|--unive...
shell date 命令说明
用法:date [选项]... [+格式]
 或:date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
以给定的...
shell获取指定日期前n天的数据:
shell获取指定日期前1天的数据:
date -d &0; 1 days ago &  &+%Y%m%d&
date -d &20151...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 shell 获取当前时间戳 的文章

 

随机推荐