菜鸟科技网

at命令如何设置定时提醒铃声?

at 命令本身是一个用于在未来指定时间执行一次性任务的命令,它本身不直接包含 ring 这个子命令,但 ring 通常与 at 结合使用,特别是在一些系统(如 Solaris 或其衍生系统)中,用于在任务执行时发出声音提醒

at命令如何设置定时提醒铃声?-图1
(图片来源网络,侵删)

at ring 的作用是:at 指定的任务执行时,让终端发出铃声,以提醒用户。


at 命令基础回顾

我们快速回顾一下 at 命令的基本用法:

# 在明天上午9点执行一个脚本
at 9:00 AM tomorrow
# 在10分钟后执行一个命令
at now + 10 minutes
# 在今晚11点执行一个简单的echo命令
at 23:00
> echo "任务执行完毕!" # 输入要执行的命令
> <Ctrl+D> # 结束输入

当任务执行时,at 会将命令的输出(包括标准输出和标准错误)通过电子邮件发送给当前用户,但用户可能正在电脑前工作,不一定注意到新邮件。


at ring 的作用与用法

at ringat 命令的一个修饰符,它告诉 at 在执行任务时,除了正常的操作外,还要在用户的终端上产生一个铃声。

at命令如何设置定时提醒铃声?-图2
(图片来源网络,侵删)

语法

at [时间] ring

工作原理

当你使用 at ring 时,at 在执行你的任务之前,会先向你的终端发送一个响铃字符(ASCII 码为 0x07,通常表示为 \a),这个字符在大多数终端模拟器中都会被解释为“响铃”或“哔”的一声。

示例

假设你想在下午3点整让系统提醒你喝杯水,并发出声音。

# 使用 at ring 设置一个带提醒的任务
at 3:00 PM ring
> echo "该喝水了!休息一下吧!"
> <Ctrl+D>

当下午3点整到来时:

  1. 你的终端会发出一声“哔!”的铃声。
  2. 紧接着,终端上会打印出 该喝水了!休息一下吧! 这条信息(如果是在前台运行的终端)。

at ringmail 的对比

特性 at (默认) at ring
提醒方式 将命令输出通过 Email 发送给用户。 在用户的当前终端上发出声音,并打印输出。
适用场景 适用于服务器后台任务,用户不常在终端前的情况。 适用于用户在桌面前工作,需要即时、非侵入性提醒的场景。
依赖 需要系统邮件服务(如 sendmail, postfix)正常工作。 只需要终端模拟器支持响铃字符(绝大多数都支持)。
优点 可靠,即使用户关闭了终端,邮件也能被接收。 即时反馈,无需检查邮件。
缺点 用户可能不会及时查看邮件。 如果用户静音了终端或不在电脑前,则无效。

跨平台兼容性

重要提示: at ring 语法并非所有 Linux 发行版都默认支持

at命令如何设置定时提醒铃声?-图3
(图片来源网络,侵删)
  • 支持的平台:这个语法在 Solaris 和一些基于它的系统(如 illumos)中非常常见和标准。
  • 常见的 Linux 发行版 (如 Ubuntu, CentOS, Debian):标准的 at 包通常不包含 ring 修饰符,在这些系统上直接使用 at ring 会报错,at: illegal argument: ring

在普通 Linux 上如何实现类似功能?

如果你想在标准的 Linux 系统上实现 at ring 的效果(即执行任务时发出声音),可以在 at 命令中直接执行一个能发声的命令。

使用 echo -e "\a"

\a 是响铃字符的转义序列。

# 在5分钟后执行一个带声音提醒的任务
at now + 5 minutes
> echo -e "\a"  # 发出铃声
> echo "5分钟时间到了!"
> <Ctrl+D>

使用 printf

printf 对转义字符的支持更明确。

at now + 5 minutes
> printf "\a" # 发出铃声
> echo "5分钟时间到了!"
> <Ctrl+D>

使用系统声音播放器

如果你的系统安装了声音播放器(如 paplay, aplay),可以播放一个声音文件。

# 需要 pulseaudio-utils
at now + 5 minutes
> paplay /usr/share/sounds/freedesktop/stereo/complete.oga
> echo "任务完成!"
> <Ctrl+D>

  • at ring 是一个方便的语法,用于在 at 任务执行时发出声音提醒。
  • 它主要在 Solaris 系统上可用,并非标准 Linux 的 at 命令的一部分
  • 在标准 Linux 上,你可以通过在 at 任务中执行 echo -e "\a"printf "\a" 来达到相同的效果。
  • at ring 提供了一种比等待邮件更即时、更直接的提醒方式,非常适合在桌面环境中使用。
分享:
扫描分享到社交APP
上一篇
下一篇