gpt4 book ai didi

linux - 如何输出shell脚本的开始和停止日期时间(但不输出其他日志)?

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:10 27 4
gpt4 key购买 nike

我对 shell 脚本 (bash) 还很陌生...但是我已经编写了第一个脚本并且它正在按预期运行。

我目前正在做的是使用 sh name-of-script.sh >>/cron.log 2>&1 写入日志。然而这一切都写出来了。它非常适合调试,但现在我不需要它。

我现在只想查看开始日期和时间以及结束日期和时间

我仍然想写入 cron.log,但只是上面提到的日期,但我似乎不知道该怎么做。有人可以指出我执行此操作的正确方向...无论是在脚本内还是类似于我上面所做的那样?

最佳答案

一个简单的方法是添加如下内容:

echo `date`: Myscript starts

到脚本顶部

echo `date`: Myscript ends

到底部

echo `date`: Myscript exited because ...

无论它在何处退出并出现错误。

date 周围的反引号(不是普通引号)导致 date 命令的输出被插入到 echo 语句中。

您可以将其包装在函数等中以使其更整洁,或者使用 date -u 以 UTC 格式打印,但这应该可以帮助您继续。

您在评论中询问如何避免出现其余输出。

一种选择是将脚本中其他所有内容的输出和错误重定向到 /dev/null,方法是将“>/dev/null 2>&1”添加到输出内容的每一行,或者以其他方式将其静音。 EG

if fgrep myuser /etc/password ; then
dosomething
fi

可以写成:

if fgrep myuser /etc/password >/dev/null 2>&1 ; then
dosomething
fi

虽然

if fgrep -q myuser /etc/password ; then
dosomething
fi

在这种情况下效率更高。

另一种选择是将date 包装器放入crontab 条目中。像这样的东西:

0 * * * * sh -c 'echo `date`: myscript starting ; /path/to/myscript >/dev/null 2>&1; echo `date`: myscript finished'

最后,您可以使用子 shell。将脚本主体放入函数中,然后在子 shell 中调用该函数并重定向输出。

#!/bin/bash
do_it ()
{
... your script here ...
}

echo `date`: myscript starting
( do_it ) >/dev/null 2>&1
echo `date`: myscript finished

关于linux - 如何输出shell脚本的开始和停止日期时间(但不输出其他日志)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21498365/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com