Я использую режим org и собираюсь экспортировать свою повестку дня ( пример повестки дня ) в текстовый файл, чтобы я мог отобразить его с помощью conky. В руководстве по режиму org приведен пример командной строки:
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
Я изменил это так:
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "e")' \
> ~/org/aux/agenda-export.txt
У меня это задание в качестве задания cron, которое запускается каждые 5 минут. Он прекрасно работает, если у меня не открыт emacs. Тогда я заметил, что файл agenda-export.txt
был пуст. При запуске этого вручную из строки coammand и через cron я получаю эту ошибку (или похожую в зависимости от открытых файлов):
...~/org/file.org locked by jwhendy (pid 10935): (s, q, p, ?)?
Я собирался написать сценарий для экспорта в agenda-export-test.txt
, а затем, возможно, проверить наличие пустого файла или отсутствие строк (wc -l == 0
, может быть?). Если true, оставьте существующий файл в покое и удалите agenda-export-test.txt
. Если нет, то переместите agenda-export-test.txt
на agenda-export.txt
.
Но ... когда я пытаюсь запустить такой скрипт, меня встречает тот же запрос emacs о том, украсть ли блокировку, продолжить или выйти. Я в порядке с продолжением, так как я не думаю, что org-повестки дня что-то делает с файлами, и, таким образом, это ничего не повредит ... но я не знаю, как сказать emacs "принудить" или выбрать "продолжить" «если возникнут проблемы. Мне нужно что-то неинтерактивное.
Итак, подведем итог, мои мысли должны были попытаться:
- передавая опцию --force или аналогичную emacs, чтобы она продолжалась во время паузы
- посмотреть, есть ли в экспортированном файле tmp какие-либо строки и обработать их соответственно
- сказать emacs работать в "режиме только для чтения" (но я не думаю, что он существует)
Основная проблема в том, что с cron я не могу сообщить процессу, что делать, и поэтому он просто создает пустой файл в качестве экспортируемых результатов. Как мне справиться с этим бизнесом с заблокированными файлами с помощью «слепого» процесса, такого как cron, который не может ответить?
Я тоже пытался спросить список рассылки, но ничего не получалось. [1] Я подумал, что у кого-то здесь могут быть идеи.
[1] http://www.mail-archive.com/emacs-orgmode@gnu.org/msg45056.html