linux crontab添加log ,及2>&1 添加时间戳
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
默认情况下,使用
grep CRON /var/log/syslog
可以看到crontab的一些相关log,但是信息并不太多。你能看到crontab执行了哪个命令,但是看不到命令执行的输出信息。
如果希望看到crontab中执行的脚本或命令的输出信息及错误信息可以使用2>&1
将这些信息输出到log文件。
首先解释一下:
2>&1
我们知道>和<是文件重定向符。那么1和2是什么?
在shell中,每个进程都和三个系统文件 相关联:标准输入stdin
,标准输出stdout
、标准错误stderr
,三个系统文件的文件描述符分别为0
,1
,2
。所以2>&1
的意思就是将标准错误也输出到标准输出当中。
所以在crontab中如果0点0分执行一个命令(例如python ~/myscript.py
),需要看它的log可以这样做:
0 0 * * * python ~/myscript.py > /tmp/myscript.log 2>&1
但是这样默认是没有时间戳
的,如果你想加上时间戳,有如下几种方法:
1. 使用moreutils
的ts
(本人推荐,简单明了)
sudo apt-get install moreutils
然后上述命令改写为:
0 0 * * * python ~/myscript.py 2>&1|ts > /tmp/myscript.log
2. 使用脚本
新建一个~/predate.sh
:
#!/bin/bash
while read line ; do
echo "$(date): ${line}"
done
那么上述命令可以改为:
0 0 * * * python ~/myscript.py 2> >( ~/predate.sh > /tmp/myscript.log )
3. 把predate.sh直接写在命令行中:
0 0 * * * python ~/myscript.py 2> >( while read line; do echo "$(date): ${line}"; done > /tmp/myscript.log )
参考文献:
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献19条内容
所有评论(0)