使用date命令加上合适的时间格式化字符串(+%s),会显示当前时间(或-d参数指定的时间)与1970-01-01 00:00:00相差的秒数(详细可以参考date的man手册)
所以基本想法就是使用date命令分别获取当前时间与文件修改时间的秒数,然后看这2个秒数之间是否有相差180秒以上。
获取当前时间比较简单,直接date +%s就ok了
下面看看如何获取文件时间
使用stat 命令后面跟一个文件名可以获取文件的状态,包括文件修改时间。其中文件修改时间会单独一行显示,格式如下:Modify: 2013-02-21 17:58:05404876407 +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 tttxt | grep Modify | awk '{print $2}'`
filetime=`stat tttxt | 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
本文介绍以下2个知识点,为后后续在工作过程中安装一键安装脚本打好基础:
如下shell脚本中传入的参数依次值如下:
如脚本 getoptssh
执行 /getoptssh -a dd -b ,打印如下结果
如脚本 forsh
有时候shell脚本可以放在>
不知道你的日期格式是咋样的,不过思路是
获取目录名,进行拆分,年,月,日
然后判断是否合理
如果是日期格式,那么就获取时间戳,和当前时间戳相减
30天,就是30246060=2592000,判断下差值是大于2592000的,就删掉目录
求大神解决 编写一个shell程序 可以计算还有几天过生日并求1到该数字的 1、例子birthdaysh
#!/bin/sh
if [[ -z $1 ]];then
echo Usage $0 20170101;
exit 0;
fi
birthday=$1
startDate=`date -d now +%s`
endDate=`date -d $birthday +%s`
if [[ $startDate -gt $endDate ]];then
echo today is:$(date +%Y%m%d)
echo Please input date after today
exit 0;
fi
((stampDiff=endDate-startDate))
((dayDiff=stampDiff/86400))
echo Your Birthday is:$(date -d $birthday +%Y%m%d)
echo There is still $dayDiff days from your birthday;
for ((i=2;i<=$dayDiff;i=i+2));
do
((sum=sum+i))
done
echo $sum
2、使用
/birthdaysh 20170101
3、根据日期的时间戳,计算秒数差,除每天的秒数
shell编程计算你还有几天可以过生日
#!/bin/bash
read -p "请输入你生日的月份:" BMON
read -p "请输入你生日的日期: " BDAY
BYEAR=`date +%Y`
BIRTHDAY=`date -d ${BYEAR}${BMON}${BDAY} +%j 2>/dev/null`
NOWDAY=`date +%j`
REMAIN=$(($BIRTHDAY-$NOWDAY))
echo -e "目前距离你生日还剩下:\033[5m${REMAIN}\033[0m 天"
[flycat@redhat ~]$ /birthdaysh
请输入你生日的月份:11
请输入你生日的日期: 30
目前距离你生日还剩下:5 天
#符合要求的话,麻烦请点下采纳
Linux中编写一个shell程序,读入一组数字,使用for循环计算该数组数字的乘积。
#!/bin/bashread -p "请输入一组数字:" -a arrayaumulate=1for num in ${array[@]} do aumulate=$(( $aumulate num)) doneecho "乘积是:" $aumulate 计算读入的一组数字(在同一行输入)的积
c#编写一个程序,计算n=1+2+3+…50的算法求大神啊,急。
用循环固然没问题,但是,可以用数学公式进行简化,能提高运行效率。算法问题可以百度搜索,等差数列前N项和公式。
设等差数列{an}的前n项和为Sn,公差d
即 Sn=a1+a2++an;
公式:Sn=na1+n(n-1)d/2
int num1=1;
int num2=50;
int sum=(num1+num2)50/2
用c语言编写一个程序,来计算文件中字符、数字的个数。
#include "stdioh"
#include "stdlibh"
void main()
{
FILE fp;
char ch;
int charCounts=0,numCounts=0;
if((fp=fopen("testtxt","r"))==0)注意,由于我不知道你想打开的文件的位置和名称,我随意写的一个文件名,你自己要按你文件的路径和名称做修改
{
printf("文件读取失败!\n");
exit(0);
}
while((ch=fgetc(fp))!=EOF)
{
if(ch>='0'&&ch<='9')
numCounts++;
else
charCounts++;
}
printf("该文件中数字字符共有%d个,除数字这外的其它字符共有%d个。\n",numCounts,charCounts);
fclose(fp);
}
如何编写一个计算数字总和的程序
sum=0;累加器
for(你自己写)
{
sum+=varible;varible 为你的变量的值
}
编写一个程序,可以生成四个算术运算(+ - /)20到25位有效数字的结果。
#include
#include
int main(void)
{
int a,b,c=0;
char q;
while(!c){
printf("请输入两个整数值:");
puts("\n");
scanf("%d%d",&a,&b);
fflush(stdin);
printf("请输入一个运算符号(+-/)\n");
scanf("%c",&q);
if(q=='+')
printf("a+b的值是:%d",a+b);
else if(q=='-')
printf("a-b的值是:%d",a-b);
else if(q=='')
printf("ab的值是:%d",ab);
else if(q=='/')
printf("a/b的值是:%d",a/b);
else
{
printf("输入错误!");
c=1;
}
printf("再算一次吗?1:退出,0:继续\n");
scanf("%d",&c);
}
system("PAUSE");
return 0;
}
求程序“编写一个程序,统计用户输入的字符串中数字的个数” 急!
看看:
:hibaidu/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/644b57c3bd5694020ff47727
编写一个shell程序
find /PATH -type f -exec grep -l "root" {} \;
你可以在-type f这里制定更丰富的内容,仅供参考
为什么要用awk呢?
简单的进行时间转换就行了。不超过10行
redhat4环境下:
datesh内容:
flag=$1
time1=`date -d "$flag" +'%Y-%m-%d %H:%M'`
echo $time1
time2=`date -d "$time1" '+%s'`
echo $time2
time3=`expr $time2 + 180`
time4=`date -d "1970-01-01 UTC "$time3" seconds" +"%d-%b-%Y %H:%M"`
echo $time4
time5=`expr $time2 - 180`
time6=`date -d "1970-01-01 UTC "$time5" seconds" +"%d-%b-%Y %H:%M"`
echo $time6
检查结果:
[root@localhost ~]# sh datesh 00:00
2010-09-18 00:00
1284739200
18- 9月-2010 00:03
17- 9月-2010 23:57
[root@localhost ~]# sh datesh 00:12
2010-09-18 00:12
1284739920
18- 9月-2010 00:15
18- 9月-2010 00:09
每次执行结果最后两行就是你要的答案
以上就是关于Linux下用shell获取指定文件的最后修改时间并与系统时间比对,如果相差时间超过3分钟则执行另一个脚本全部的内容,包括:Linux下用shell获取指定文件的最后修改时间并与系统时间比对,如果相差时间超过3分钟则执行另一个脚本、shell脚本获取参数&在线执行shell脚本、Linux中shell脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)