我有一个打开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
答案 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。