date +"%Y-%m-%d %H:%M:%S"
这里的%Y,%m,%d分别指代年,月,日。 %H,%M,%S分别指代时,分,秒
%Y,%m,%d之间的符号可以修改,可以用 - ,也可以用~,汉字等作为分隔符
date +"%Y年%m月%d日 %H:%M:%S"
对日期进行加减操作
linux的重定向需要借助 > 和 >> 两个符号
command >> file 将command的结果以追加的方式重定向输出到file文件中
command > file 将command的结果以覆盖的方式重定向输出到file文件中
要说明重定向,先要说明以下三个概念:
重定向的作用是将输出在终端上的信息转为输出到一个文件里面
第一条命令查询文件 1.txt 的信息,用的是标准输出流stdout将相关的文件信息输出打印在终端
具体的文件信息就是-rw-r–r--. 1 1001 1002 0 11月 2 19:51 1.txt
第二条命令查询了一个存在的文件 1.txt 和一个不存在的文件 a.txt,因此利用了标准输出流stdout打印正确的文件信息,又利用标准错误输出流stderr在终端打印错误信息
具体的错误信息就是这句ls: 无法访问a.txt: 没有那个文件或目录
现在希望这些信息不要打印在终端,而是都输出到一个文件中,比如说自己创建一个out.txt文件用来接收这些信息
利用 command > file 进行输出重定向后,发现只有正确的文件信息被输出到了out.txt问价里面,而错误信息依旧打印在了终端。
这是因为输出重定向默认是标准输出流stdout,也就是文件描述符为1的情况。这里如果希望让标准错误输出流stderr的信息也输出到文件中,就要把错误信息当正确信息使用。
方法是在输出重定向的语句的后面加上 2>&1
这样就可以发现没有在终端打印信息,而是将信息都写入了out.txt文件中
这时,如果希望执行命令后什么结果都不会打印,也不保存在某个文件中,就可以借助/dev/null文件
/dev/null :或称空设备,是一个特殊的设备文件,它会丢弃一切写入其中的数据(但报告写入操作成功)
可以把这个文件当成一个垃圾回收站,把信息都丢入其中,然后就都消失了。将输出重定向,定向到/dev/null,就相当于屏蔽了标准输出流stdout和标准错误输出流stderr
有输出重定向,自然也有输入重定向,command1 < file
输入重定向会让command,从键盘获取输入转为到文件读取内容。
假如我现在要利用shell脚本往一个文件里面输入一句话
#!/bin/sh
echo "hello,shell" > /usr/local/test/1.txt
但如果我希望,每隔一个固定的时间,就往这个文件里面,写入这句话呢?
利用crontab命令,我们可以实现定时器的效果
利用 crontab -e 命令创建crontab文件后,编写定时器的格式为
*(分钟) * (小时) * (日) * (月) * (星期) commend
具体的含义为:
第一个星号 * ,指分钟,取值范围是 0 ~ 59
第二个星号 * ,指小时,取值范围是 0 ~ 23
第三个星号 * ,指多少日,取值范围是 1 ~ 31
第四个星号 * ,指月份,取值范围是 1 ~ 12
第五个星号 * ,指第几周,取值范围是 0 ~ 7 (周日可以是0或者7)
command,用来被定时执行的命令
现在输入crontab -e 命令,然后编辑crontab文件
* * * * * sh /usr/local/test/shell/timetest1.sh
这里用sh /usr/local/test/shell/timetest1.sh是因为之前编写了shell脚本,这里改为echo “hello,shell” > /usr/local/test/1.txt也是可以的
编写好crontab文件后保存退出,然后利用tail -f /var/log/cron 查看相关的日志信息,来看看具体的动向
输入命令后,就可以在终端查看相关的日志记录了。发现这里各在21点02分和21点03分打印了一条日志
因为我用的是 > 而不是 >> ,所以覆盖了之前的输出结果,因此这里就一行结果
另外需要注意一件事情,如果只是为了学习练习,那么设置完定时器之后是要关闭的
具体的关闭措施可以用crontab -e 再编辑一下cron文件,然后清空里面的所有语句,再保存退出
直接输入五个型号*****的含义是每隔一分钟执行一次语句
也可以通过将星号改为具体的值来修改定时器执行语句的时间
15 21 * * * echo "hello,java" > /usr/local/test/1.txt
需要注意的是这里的路径都必须写成绝对路径
这里设置的是每月每天的21点15分来指定echo语句,往1.txt文件内写入“hello,java”
同样的,用 tail -f /var/log/cron 来监控日志记录
发现这里新增了一条日志记录,到1.txt文件里面进行查看
写入成功
同理也可以改为其他的时间,不同部分的取值范围再前面都已经给出
另外如果想写多个日期,比如每个星期的周一到周四,执行语句,就可以这么写
15 21 * * 1,2,3,4 command
也可以写成15 21 * * 1-4 command的形式