
使用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
Linux常用命令
ls常用命令
cd常用命令
rm常用命令
grep常用命令
grep命令用于查找文件里符合条件的字符串。
常用指令名称
-A
–after-context
显示符合范本样式的那一行之外及该行之后的内容
输出内容:
aaaa // 该行高亮
bbbb
-b
–byte-offset
输出匹配行并且在在该行前展示第几行
输出内容:
0: aaaa
-c
–count
输出符合匹配字符串的行数
输出内容:
1
其他命令
获取当前界面元素
获取任务列表
app入口
启动应用
列出当前已连接的设备
输出内容:
连接指定设备
例:(SERIAL的值为adb devices -l 输出的值)
屏幕截图
获取屏幕截图
录制视频
获取录制视频
测试界面性能
输出中会包含录制阶段所发生的动画帧的相关性能信息。以下命令使用 gfxinfo 收集指定软件包名称的界面性能数据:
输出最近帧性能信息
检查网络诊断信息
netstats 服务可提供自设备上次启动以来收集的网络使用情况统计信息
检查电池诊断信息
batterystats 服务会生成关于设备电池用量的统计数据
options列表
使用以下命令以计算机可读的 CSV 格式生成 batterystats 输出:
输出内容:
##1控制执行时间间隔:使用sleep:
echo hello
sleep 10s #等10秒
echo hello
sleep 10m #等10分钟
echo hello
sleep 10h #等10hour
echo hello
sleep 10d #等10days
##2控制执行时间点:使用crontab
Step 1:
使用命令crontab -e编辑一个定时执行的任务或在/var/spool/cron/crontabs目录下新建一个与自己用户名相同的任务
即:
#每隔一分钟执行一次后台程序tmpmail
/home/milch/tmpmail
顺便提一下crontab中的命令格式:
第一个 表示分钟 (0-59),
第二个 表示小时 (0-23),
第三个 表示月份中的某一天 (1-31),
第四个 表示一年中的某一月 (1-12),
第五个 表示一周中的星期几 (0-6 with 0=Sunday)
实例说明
# crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall
# (/tmp/crontab3672 installed on Thu Jan 1 15:55:18 2004)
# (Cron version -- $Id: crontabc,v 213 1994/01/17 03:20:37 vixie Exp $)
0 0-23/6 /usr/bin/webalizer
30 3 /root/fbin/bak-web
#
先前曾提到,crontab 的格式分成六个部分,前五个是时间参数。在上例中你会发现除了数字与英文名称,有使用到符号"",这个符号代表每一单位的意思,譬如 30 3 既代表 30分 3点 每日 每月 星期的每天。
时间的指定,可以是单一的数字,或几个数字用逗号来连接。看下例
30 3,12 /root/fbin/bak-web
其中的第二项为 3,12,这代表 3 以及 12 小时的意思。再来看下例
30 /6 /root/fbin/bak-web
我把第二项改成 /6 这代表每 6 小时,也相当於 6,12,18,24 的作用。此外还有一个区段的做法
30 8-18/2 /root/fbin/bak-web
我把第二项改成 8-18/2 这代表在 8 小时到 18 小时之间每 2 小时,也相当於 8,10,12,14,16,18 的作用。
1file /home/ |awk -F: '$2~/executable/{print $1}'
2桌面 右键 更改桌面背景,我的图形界面是这样gnome
3chmod +x info
4mount /dev/设备名(比如sda2) /mnt/(你的挂载目录)
cd /mnt/
exit
umount /dev/设备名
5mkdir tmpdir
mv tmpdir /移动位置
cp -r /移动位置/tmpdir /移动位置2
mv /移动位置2/tmpdir /移动位置2/tmpdir2 (改名字)
rm -rf /移动位置2/tmpdir2
6
7#!/bin/bash
for i in `seq 1 5`
do
echo $i$i |bc
done
8?
9?
11useradd someone
groupadd somegrp
userdel someone
groupdel somegrp
12 vi somefile (建立)
输入冒号 wq 保存退出 模式是指esc 冒号下边有命令行 和i 插入或者替换编辑这三个模式么,不清楚
13echo 2\(3+4\) |bc
14
#!/bin/bash
flag=`ls -l yourfile |grep ^c`
if [ -n "$flag" ] ;then
cp yourfile /dev
fi
15
for i in `seq 4`
do
mkdir /m$i
mv m$itxt /m$i
done
16
#!/bin/bash
echo "Please input your commond"
read commond
case $commond in
start)myfile start;;
stop) myfile stop;;
status)myfile status;;
)echo "EXIT";exit;;
esac
以上就是关于Linux下用shell获取指定文件的最后修改时间并与系统时间比对,如果相差时间超过3分钟则执行另一个脚本全部的内容,包括:Linux下用shell获取指定文件的最后修改时间并与系统时间比对,如果相差时间超过3分钟则执行另一个脚本、Shell脚本常用命令、linux shell 问题2等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)