A. linux下用shell获取指定文件的最后修改时间并与系统时间比对,如果相差时间超过3分钟则执行另一个脚本
使用date命令加上合适的时间格式化字符串(+%s),会显示当前时间(或-d参数指定的时间)与1970-01-01 00:00:00相差的秒数(详细可以参考date的man手册)
所以基本想法就是使用date命令分别获取当前时间与文件修改时间的秒数,然后看这2个秒数之间是否有相差180秒以上。
获取当前时间比较简单,直接date +%s就ok了
下面看看如何获取文件时间
使用stat 命令后面跟一个文件名可以获取文件的状态,包括文件修改时间。其中文件修改时间会单独一行显示,格式如下:Modify: 2013-02-21 17:58:05.404876407 +0800 (具体的精度可能系统不同略微有些差别,但大致格式是这样)
所以我们可以stat myfilename | grep Modify来获取文件的修改时间的信息,然后通过awk分别获取时间的日期和时间段
stat myfilename | grep Modify | awk '{print $2}' #这句获取了日期段,即上面例子里面的2013-02-21
stat myfilename | grep Modify | awk '{split($3,var,".");print var[1]}' #这句获取了时间段,即上面例子里面的17:58:05,具体关于awk的使用可以参考awk的使用手册
那么现在可以获取文件修改时间与1970-01-01 00:00:00相差的描述了,就是date -d "$file_date $file_time" +%s
那么这个时间与当前时间想减的结果与180相比就可以知道是否满足条件了,满足条件的话就可以执行相应的命令。
参考代码如下:
current_datetime=`date +%s`
filedate=`stat tt.txt | grep Modify | awk '{print $2}'`
filetime=`stat tt.txt | grep Modify | awk '{split($3,var,".");print var[1]}'`
file_datetime=`date -d "$filedate $filetime" +%s
timedelta=`expr $current_datetime - $file_datetime`
if [ "$timedelta" -gt "180" ];then
echo "match condition"
fi
B. linux 怎么用命令查看日期
date命令用于显示及设置系统的时间或日期,格式为:"date [选项] [+指定的格式]"。
强大的date命令只需键入以"+"号开头的参数即可按照指定格式来输出系统的时间或日期,这样日常工作时咱们便可以将打包数据的备份命令与指定格式输出的时间信息结合到一起,使得咱们可以更加便捷的区分每个文件的备份时间啦,date命令常见的格式如下:
参数 作用
%t 跳格[TAB键]
%H 小时(00-23)
%I 小时(01-12)
%M 分钟(00-59)
%S 秒(00-60)
%X 相当于%H:%M:%S
%Z 显示时区
%p 显示本地AM或PM
%A 星期几 (Sunday-Saturday)
%a 星期几 (Sun-Sat)
%B 完整月份 (January-December)
%b 缩写月份 (Jan-Dec)
%d 日(01-31)
%j 一年中的第几天(001-366)
%m 月份(01-12)
%Y 完整的年份
按照默认的格式查看当前的系统时间:
[root@linuxprobe ~]# date
Mon Aug 24 16:11:23 CST 2016
按照"年-月-日 小时:分钟:秒"的格式查看当前的系统时间:
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2016-08-24 16:29:12
设置当前的系统时间为2016年9月1日8点30分:
[root@linuxprobe ~]# date -s "20160901 8:30:00"
Tue Sep 1 08:30:00 CST 2016
再次按照默认的格式查看当前的系统时间:
[root@linuxprobe ~]# date
Tue Sep 1 08:30:01 CST 2016
查看今天是一年中的第几天:
[root@linuxprobe ~]# date "+%j"
245
reboot命令用于重启系统,格式为:"reboot"。
重启计算机这种操作会涉及到对硬件资源的管理权限,因此默认只能使用root用户来重启您的电脑:
[root@linuxprobe ~]# reboot
poweroff命令用于关闭系统,格式为:"poweroff"。
关机命令也同理,默认只有root用户才可以关闭您的电脑:
[root@linuxprobe ~]# poweroff
如果你对Linux感兴趣的话,可以看看http://www.linuxprobe.com/chapter-02.html,非常适合初学者学习。
C. linux中date和date -d -y 有什么不一样
date 可以用来显来示或设定系统自的日期与时间。
命令参数:
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。更多Linux命令请看下图:
D. linux取当前时间前两天linux取当前时间
如何在Linux中使用date命令修改日期时间?
方法一:Date命令在Linux中,你可以通过date命令来更改系统的日期和时间:
#date--set=‘NEW_DATE’
其中NEW_DATE是诸如“Sun,28Sep201416:21:42”或者“2014-09-2916:21:42”的可读格式的日期字符串。
日期格式也可以手动指定以获得更精确的结果:
#date+FORMAT--set=‘NEW_DATE’
例如:#date+’%Y%m%d%H%m’--set=‘1518’
你也可以用相对的方式地增加或减少一定的天数,周数,月数和秒数,分钟数,小时数。
你也可以把日期和时间的参数放到一个命令中。
#date--set=‘+5minutes’
#date--set=‘-2weeks’
#date--set=‘+3months’
#date--set=‘-3months+2weeks-5minutes’
最后,把硬件时钟设置为当前系统时钟:
#hwclock--systohc运行hwclock--systohc的目的是将硬件时钟同时钟同步,这可以更正硬件时钟的系统漂移(即时钟按照一定的速度走快或走慢)。
另一方面,如果硬件时钟是正确的,但系统时钟有误,可以用下面的命令更正:
#hwclock--hctosys在两种情况下,hwclock命令都是将两个时钟同步。否则,重启后时间会是错误的,因为当电源关闭时硬件时钟会记忆时间。
然而,这对于虚拟机器并不适用,因为虚拟机器并不能访问硬件时钟。
方法二:NTP另一种使系统日期和时间保持精确的方法是使用NTP(网络时间协议)。在Linux上,ntpdate命令通过NTP将系统时钟和公共NTP服务器同步。
你可以使用如下命令来安装ntpdate:在Debian及基于Debian的发行版上:#aptitudeinstallntpdate在基于RetHat的发行版上:#yuminstallntpdate使用NTP同步系统时钟:
#ntpdate-u《NTP服务器名或IP》
#hwclock--systohc除了一次性使用ntpdate来同步时钟,你也可以使用NTP守护进程(ntpd),它会始终在后台运行,不断地通过NTP来调整系统时钟。
如何查看Linux系统安装的时间?
查看bin,daemon,adm等这些帐号的建立时间,这些帐号是在系统安装的时候创建的,所以这些帐号的创建时间基本上就是Linux系统的安装时间
1、查看bin帐号密码的时间
2、查看daemon帐号密码的时间
3、查看adm帐号密码的时间
通过已上用户查看到我这台机器是于2014年10月29日安装的。
如何查询linux服务器当前时间?
Linux系统显示时间与日期的命令是date,直接输入date命令将会显示时间日期,也可以输入date+%H:%M只显示时间。
linuxdate格式化时间和日期?
Linux的时间内部是timestemp。这个时间输出是根据当前时区的设置进行输出,当前时区的设置文件是/etc/localtime(如果我没记错)。
就算你没设置时区,那么系统依然会有一个默认的时区进行输出。
系统默认有一个localtime,好像格式设置是英国表示法。时区没有,应该是local时间而不是GMT。一个正确使用的linux专用机器,计算机时间一般是保存为格林威治标准时间,系统在输出时会根据localtime进行转换输出。
自定义默认日期应该是在输出时间时设置输出格式信息,而不是强行的去设置整个系统的环境。
因为这个设置只对考虑时区设置的输出格式的一些程序管用,在系统内部,依然是通用的timestemp存储。
而且很多程序有自己独立的设置,尤其是在某些程序里面,他不同的情况下会进行不同的输出。
比如mysql,非timestemp时间的存储用的是ISO标准格式,也就是YYYY-MM-DDHH:mm:ss的样子(如果还是我没记错),如果你需要格式要求,需要自己查询后或者查询时进行格式转换。
你正在一个错误的方向进行一个错误的折腾。
linux如何修改锁屏时间?
一般linux界面左上角有System→Preferences→ScreenSaver点开拖动里面的时间条就可以设置屏幕的锁屏时间了
E. Linux如何得到上月月末日期
1、上个月来末
date -d `date +%y%m01`"-1 day" +%d
2、往前倒源
date -d -`date +%d`day +%d
3、条件
if [`date +%d -d tomorrow` == 01 ];
4、上个月
date -d last-month
date -d -1month
5、下个月
date -d next-month
date -d 1month
6、本月初
date -d 1`date +%B`
上个月初
date -d 1`date -d last-month +%B`
指定月份
day -d 1May