‘at’ 命令在 Arch Linux 中不起作用

‘at’ 命令在 Arch Linux 中不起作用

当我at使用Arch Linux它没有得到执行当时间到了,但它确实得到了从队列中删除

这是我安排任务的一个例子。

at now + 2 min
warning: commands will be executed using /bin/sh
at Thu Jul  2 15:34:00 2020
at> code
at> google-chrome-stable
at> <EOT>
job 16 at Thu Jul  2 15:34:00 2020

我只想用该at命令打开几个应用程序。 code是打开 Visual Studio Code 的命令。 google-chrome-stable打开 Google Chrome

请帮忙!!

答案1

我不使用 Arch,因此无法在 Arch 中轻松测试;但at在我的 Kubuntu 中没有保留 的值DISPLAY。您要运行的命令需要显示窗口,对吗?

在我的测试中,尝试仅安排kate(GUI 文本编辑器)失败。我需要指定DISPLAY

at> DISPLAY=:0 kate
at> <EOT>

然后它就起作用了。

使用正确的值(echo "$DISPLAY"运行前调用at可能会有帮助)。请注意,这是 X Window System 的解决方案。我不熟悉 Wayland。

如果您需要运行多个命令,请记住所有输入都会at为创建一个脚本。像在脚本中一样sh创建第一行,以便变量影响后面的所有行。示例:export DISPLAY=:0

at> export DISPLAY=:0
at> code
at> google-chrome-stable
at> <EOT>

以下 shell 函数将export DISPLAY=…行注入到通过管道传输到实际的代码中at。它从当前 shell 中存在的变量中获取值,因此它at的工作方式就像保留了值一样DISPLAY

at () { { printf 'export DISPLAY="%s"\n' "$DISPLAY"; cat; } | command at "$@"; }

at就像问题不存在时一样使用它。问题主体中的代码现在应该可以工作了。

相关内容