'at'命令不会打开程序

时间:2017-07-04 13:55:59

标签: bash

我有一个打开VLC播放器的Python脚本;当我从命令行运行它时,它运行得很好。

我有一个bash函数,用一个时间输入调用这个程序,如下所示:

alarm (){
    echo "python /Users/thumbtackthief/Documents/code/steven_alarm/alarm.py" | at ${1:-0800}
}

当我调用此函数时,它会在适当的时间运行,但实际上并不会打开程序。我知道它正在运行,因为在/ var / mail中我收到一条带有函数的任何打印语句的消息(不知道为什么它输出到/ var / mail;我没有设置它)。有没有什么不同我应该做的实际打开VLC播放器?播放器和视频的权限设置为755。

以下是/ var / mail中的消息:

From thumbtackthief@My-iMac.local  Tue Jul  4 09:51:16 2017
Return-Path: <thumbtackthief@My-iMac.local>
X-Original-To: thumbtackthief
Delivered-To: thumbtackthief@My-iMac.local
Received: by My-iMac.local (Postfix, from userid 501)
    id 51B758F818FC; Tue,  4 Jul 2017 09:51:15 -0400 (EDT)
Subject: Output from your job a00017017d429f
Message-Id: <20170704135116.51B758F818FC@My-iMac.local>
Date: Tue,  4 Jul 2017 09:51:15 -0400 (EDT)
From: thumbtackthief@My-iMac.local (Atrun Service)

python /Users/thumbtackthief/Documents/code/steven_alarm/alarm.py

1 个答案:

答案 0 :(得分:1)

At不在您的login-shell下执行。至于您通过邮件收到输出的原因:这是正常现象,请参阅man at

  

用户将邮寄标准错误和标准输出   命令,如果有的话。邮件将使用该命令发送   / usr / sbin目录/ sendmail的。如果从su(1)shell执行at,则&gt;登录shell的所有者将收到邮件。

因此,由于您处于不同的环境中,脚本不知道在哪里显示您的VLC。分发DISPLAY变量会有所帮助,但VLC也需要有权在那里显示。

是的,它可能更像是一个unix / linux的东西。

如果你处于一个充分封闭的环境中(这是我环境中的剪切和粘贴),可以尝试一下:

[ljm@verlaine ~]$ xhost +
access control disabled, clients can connect from any host
[ljm@verlaine ~]$ echo $DISPLAY
:0.0

:0.0中使用了at

[ljm@verlaine ~]$ at 19:30
warning: commands will be executed using /bin/sh
at> DISPLAY=:0.0 xclock  # 
at> <EOT>
job 6 at Tue Jul  4 19:30:00 2017

在该特定时间显示一个xclock。