在 MacOSX 10.8.2 下,我可以在 bash shell 中运行 vim,如下所示:
/usr/bin/vim -c "normal G" -c 'startinsert' ~/.journal
如果我将完全相同的命令放入脚本中:
#! /bin/bash
export DISPLAY=:0
echo -n -e "\n[" `date` "]:\n\n">>~/.journal
/usr/bin/vim -c "normal G" -c 'startinsert' ~/.journal
并运行脚本,它也可以正确打开vim。
但是,如果我将名为 01diaryscript 的脚本放入 crontab 中:
MAILTO=""
* * * * * ~/01diaryscript
vim 打不开...但是每分钟都会创建一个新的 vim 进程,并具有自己唯一的 id。
另一方面,如果我使用 MacVim 包中包含的 vim(也是 7.3),则 cron 可以工作。
有没有办法强制在 cron 中运行第一个脚本时创建的 vim 进程可访问?
答案1
您的 crontab 中的行明确要求每天的每一分钟启动您的脚本。正如您在流程中看到的那样。
现在你看不到 vim 的原因是因为 cron 生成了你在“后台”设置的命令。所以你不能直接访问它们。我无法解释为什么 MacVim 包中的 vim 可以工作,因为我不知道。
可行的方法是打开图形 VIM 或内部装有 vim 的新 xterm。就像是:xterm -e /usr/bin/vim -c "normal G" -c 'startinsert' ~/.journal
答案2
cron
在后台运行命令,无需任何终端(或 X 显示,就此而言)。所述输出应该去哪里?在我的屏幕上显示随机用户的 cron 作业的输出?没有意义。
您在此试图解决的问题是什么?