如何在 shell 脚本中使用“at”命令?

如何在 shell 脚本中使用“at”命令?

我想使用录音机进行录音。它应该在特定时间开始录音并在几小时后停止录音。

答案1

我想你说的是这个软件但它只提供了非常有限的命令行选项。如果你想从命令行或脚本中录制音频,你最好坚持使用命令行程序——我基本上使用这种方法这里。为了使其正常工作,您可能需要安装一些软件包,请运行sudo apt install pulseaudio-utils lame以确保无误。

#!/bin/bash
sink="alsa_output.pci-0000_00_1b.0.analog-stereo"
echo 'f=$(date +%F_%R)_rec.mp3;timeout "'$2'" parec -d "'$sink'".monitor|lame -r -V0 - $f'|
at "$1"

您需要调整 的值sink以适应您的系统,pacmd list-sinks|grep name:将其显示在 中<>(不要复制它们!)。之后,使用 使脚本可执行,chmod +x SCRIPTNAME并运行它,例如/path/to/SCRIPTNAME 10pm 30m从晚上 10 点开始录制 30 分钟。录制将保存在您运行脚本的目录中,例如从此日期和时间开始的录制。如果您想更改它,请在脚本中2017-12-17_10:00_rec.mp3替换。$(date +%F_%R)_rec.mp3

示例运行

$ ./test.sh 10:00 10m
warning: commands will be executed using /bin/sh
job 1 at Sun Dec 17 10:00:00 2017
$ atq
1      Sun Dec 17 10:00:00 2017 a dessert
$ atrm 1
$ atq
$

如您所见,您可以使用atq来显示和atrm删除待处理的作业。

时间和持续时间格式

至于时间格式请参见man at,特别是:

At (…) 接受 HH:MM 格式的时间,以便在一天中的特定时间运行作业。(如果该时间已过,则假定为第二天。)您还可以指定午夜、中午或下午茶时间(下午 4 点),并且可以在时间后缀 AM 或 PM 中指定在早上或晚上运行。您还可以指定作业将在哪一天运行,方法是以 month-name day 格式给出日期,年份可选,或者以 MMDD[CC]YY、MM/DD/[CC]YY、DD.MM.[CC]YY 或 [CC]YY-MM-DD 格式给出日期。日期的指定必须遵循时间的指定。您还可以指定类似 now + count time-units 的时间,其中时间单位可以是分钟、小时、天或周,并且您可以通过在时间后缀中添加 today 来指示 at 今天运行作业,通过在时间后缀中添加 tomorrow 来指示 at 明天运行作业。

至于持续时间格式请参见man timeout,特别是:

DURATION 是一个浮点数,带有可选后缀:“s”表示秒(默认值)、“m”表示分钟、“h”表示小时或“d”表示天。

相关内容