mac crontab open应用程序的行为与从Dock打开的行为不同

时间:2015-03-24 20:48:00

标签: macos bash shell cron crontab

我编写了一个shell脚本,用于检查Microsoft Lync是否正在运行,如果未运行则打开应用程序。如果我直接从bash终端执行shell脚本,它会打开Lync,并且当单击“记住用户名/密码”时,它会正常登录。 我在crontab条目中输入的相同脚本每分钟运行一次,因此如果没有运行,我可以启动Lync。但由于某些原因,当从此crontab脚本执行打开Lync时,Lync应用程序不会自动登录并要求我输入Lync密码。 为什么这种行为不同?

crontab条目 -

  

* 9-17 * * 1-5 $ HOME / lync.sh

#!/bin/bash

LYNC_PID=$(launchctl list | grep "Lync" | awk '{print $1}')

if [ "$LYNC_PID" = "" ]
then
echo "Lync not running"

ERROR_REPORTER_PID=$(ps -ef | grep -i "[m]icrosoft error reporting" | awk '{print $2}')
if [ "$ERROR_REPORTER_PID" != "" ]
then
    echo "Killing Microsoft Error Reporter" 
    kill -9 $ERROR_REPORTER_PID
fi
echo "Starting Lync" 
open /Applications/Microsoft\ Lync.app

fi

1 个答案:

答案 0 :(得分:2)

会话中运行的Dock和其他交互式命令可以访问会话的信息,包括密钥环和屏幕。 Cron没有这个。尝试从crontab运行交互式程序注定要失败,如果不是在常规主要使用场景中,那么在烦人的角落情况下。