首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >经过时间计数

经过时间计数
EN

Unix & Linux用户
提问于 2021-05-02 11:00:59
回答 1查看 306关注 0票数 0

我有一个小脚本(基本上很简单--这是我写的第一个脚本),并且喜欢知道经过的时间,完成它需要多长时间。

有可能计算这两个变量之间的差异吗?($SSS和$EEE),我也尝试过使用$SECONDS,但结果是0。

可能需要使用一种不同的方法来完成这项工作,所以我需要了解如何解决这个问题。

我的剧本:

代码语言:javascript
复制
echo "****************************************************************************"
SECONDS=0
#!/bin/bash
SSS=$(date '+%Y.%m.%d. @ %H:%M:%S')
echo "Start time: ${SSS}"
echo ""
echo "Starting update and upgrade"
echo "==================================="
sudo apt-get update && sudo apt-get upgrade -y
echo ""
echo "Starting autoremove"
echo "==================================="
sudo apt-get autoremove -y
echo ""
echo "Starting autoclean"
echo "==================================="
sudo apt-get autoclean -y
echo ""
echo "Check for Pi-Hole update"
echo "==================================="
sudo pihole -up
echo ""
echo "Starting gravity update for Pi-Hole"
echo "==================================="
sudo pihole -g
echo ""
EEE=$(date '+%Y.%m.%d. @ %H:%M:%S')
echo "Start time: ${SSS}"
echo "End   time: ${EEE}"
duration=$SECONDS
echo "Elapsed time $(($duration / 60)) minutes and $(($duration % 60)) seconds."
echo "****************************************************************************"
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-05-02 16:25:38

脚本的问题与命令的时间无关。您的脚本的问题是它运行在一个与从命令行运行它的环境不同的环境中。

例如,PATH变量可能是不同的,导致找不到一些实用程序,或者脚本的交互元素在非交互环境中运行时显然无法执行。

您还提到在评论中使用sh而不是bash启动脚本,这意味着SECONDS变量可能不存在(取决于由哪个shell sh实现)。

我可以看到,脚本使用sudo执行几乎所有的命令。这使我建议您应该在root自己的crontab中运行脚本,而不是在非特权用户帐户的crontab中运行脚本(并从脚本中删除所有sudo调用)。使用sudo crontab -e修改根用户的crontab。

此外,确保脚本中的PATH变量设置为目录列表,允许您查找所使用的所有实用程序。例如,

代码语言:javascript
复制
#!/bin/bash

PATH=/bin:/usr/bin:/usr/local/bin:$PATH

SECONDS=0

apt-get update && apt-get upgrade

# etc.

您尤其应该确保PATH变量包含apt-getpihole所在的目录(在命令行中使用command -v piholecommand -v apt-get查找这些目录)。

还要确保#!-line是文件的第一行(如我在示例中所示)。问题中的代码不是这样做的。注意,如果在调用脚本时在命令行上使用显式解释器,则#!-line将被完全忽略。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/647692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档