我编写了一个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
答案 0 :(得分:2)
会话中运行的Dock和其他交互式命令可以访问会话的信息,包括密钥环和屏幕。 Cron没有这个。尝试从crontab
运行交互式程序注定要失败,如果不是在常规主要使用场景中,那么在烦人的角落情况下。