我正在使用 Lubuntu 20.04 LTS。我想为一些 wav 文件添加时间戳,以便将它们上传到网站。我希望第一个文件是 Garden2021-05-02_04-10-00.wav 和以下文件,每个文件增加 30 秒。请问我怎样才能最好地做到这一点?
我需要将正在运行的命令的输出重定向到带有时间戳的日志文件(因此是一个函数而不是日志文件本身),但是错误和输出都不应该显示在控制台中。以下 -
command | my_func 2> /dev/null
不管用。
就像是
command 2> logfile
有效,但我无法在第二种情况下记录时间戳。我应该怎么办?
在我的 xubuntu 19.10-amd64 系统上,我有 cron 每天午夜运行备份作业。因此,由 rsync 命令创建的目标目录的时间戳应为 00:00。但是,我在时间戳中看到了奇怪之处。
tcsh(我首选的交互式 shell)连续几天正确显示 00:00 的时间戳,但 bash 和 /bin/sh 都列出了所有目标目录的时间戳不正确的日期和时间(参见屏幕截图)。因为时间戳是相同的,所以“ls -lt”的顺序在 /bin/sh 脚本中是任意的(即错误的),并且我的脚本无法找到“最旧的”备份。源和目标都在本地 ext4 文件干上(本地 SSD 到本地 HDD);不涉及 nfs,也没有远程系统。如果我手动“触摸”其中一个目标文件夹,bash 和 tcsh 都会报告新的时间戳。我找不到任何关于报告不同时间戳的不同 shell 的先前讨论。关于我应该在哪里寻求帮助解决此问题的任何建议?谢谢...
dean/ 101 >tcsh
dean/ 89 >ls -ltd /mnt/HDD4/Backups/CUDA1.home.0.*
drwxr-xr-x 4 root root 4096 Nov 18 00:00 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-18/
drwxr-xr-x 4 root root 4096 Nov 17 00:00 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-17/
drwxr-xr-x 4 root root 4096 Nov 16 00:00 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-16/
dean/ 90 >bash
dean@CUDA1:~$ ls -ltd /mnt/HDD4/Backups/CUDA1.home.0.*
drwxr-xr-x 4 root root 4096 Nov 14 16:31 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-16
drwxr-xr-x 4 root root 4096 Nov 14 16:31 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-17
drwxr-xr-x 4 root root 4096 Nov 14 16:31 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-18
dean@CUDA1:~$ sudo touch /mnt/HDD4/Backups/CUDA1.home.0.2019-11-18
[sudo] password for dean:
dean@CUDA1:~$ !ls
ls -ltd /mnt/HDD4/Backups/CUDA1.home.0.*
drwxr-xr-x 4 root root 4096 Nov 18 12:52 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-18
drwxr-xr-x 4 root root 4096 Nov 14 16:31 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-16
drwxr-xr-x 4 root root 4096 Nov 14 16:31 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-17
dean@CUDA1:~$ exit
exit
dean/ 91 >!ls
ls -ltd /mnt/HDD4/Backups/CUDA1.home.0.*
drwxr-xr-x 4 root root 4096 Nov 18 12:52 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-18/
drwxr-xr-x 4 root root 4096 Nov 17 00:00 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-17/
drwxr-xr-x 4 root root 4096 Nov 16 00:00 /mnt/HDD4/Backups/CUDA1.home.0.2019-11-16/
我有一个 bash 脚本,它将进入一个文件夹并通过匹配键字符串来提取时间戳。然后它将日期和时间戳s转换为标准格式,并在两个时间戳s之间进行减法,然后返回输出值。该脚本正在运行,但问题是输出错误。
我的脚本:
cd /data/version1/logs/log_Job_7702260850557985265/
{
TDS="$(grep 'Logfile started' manoj.log | awk '{print $3,$4}' | cut -d: -f2-)"
echo "$TDS"
TDE="$(grep 'Process removed' manoj.log | awk '{print $1,$2}')"
echo "$TDE"
convert_date(){ printf '%s-%s-%s %s' ${1:6:4} ${1:3:2} ${1:0:2} ${1:11:8}; }
# Convert to timestamp
TDS_TS=$(date -d "$(convert_date "$TDS")" +%s)
echo "$TDS_TS"
TDE_TS=$(date -d "$(convert_date "$TDE")" +%s)
echo "$TDE_TS"
# Subtract
TD=$((TDE_TS-TDS_TS))
echo "$TD"
# convert to HH:MM:SS (note, that if it's more than one day, it will be wrong!)
TotalDuration=$(date -d "@$TD" +%H:%M:%S)
echo "$TotalDuration"
}
以下是所有变量的输出:
TDS = 21.07.2019 05:04:50
TDE = 21.07.2019 05:27:52
TDS_TS = 1563678290
TDE_TS = 1563679672
TD = 1382
TotalDuration = 01:23:02
如果您是前 2 个变量 TDS,TDE 是从 .log 文件中提取的变量(我已经手动验证了它们并且它们是正确的)。基于这些值,TotalDuration 应该等于 00:23:02,但脚本将 TotalDuration 指定为 01:23:02。
有人可以帮我找出我的错误并指导我解决问题以获得正确的结果。
我想查看终端中每个命令的时间。
当我执行此命令时:
export PROMPT_COMMAND='echo -n "$(date +%H:%M:%S) "
关闭终端后,我需要再次输入。
即使我将其关闭并再次打开,我如何才能永久保存它。
在阅读有关 Linux 的文章时,我得到以下信息:
touch 提供了几个选项,但这里是一个有趣的选项:
-t 选项允许您设置文件的日期和时间戳。要将时间戳设置为特定时间:
$ touch -t 03201600 myfile
这会将文件 myfile 的时间戳设置为 3 月 20 日下午 4 点 (03 20 1600)。
在这里,我没有理解 03201600 背后的逻辑 --> 3 月 20 日下午 4 点。