我正在使用組織模式並希望將我的日程(example of an agenda)導出爲文本文件,以便我可以用conky顯示它。該org-mode manual擁有此命令行例子來做到這一點:從命令行運行emacs並處理鎖定的文件
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-agenda對文件做任何事情,因此它不會損害任何東西......但我不知道如何告訴emacs「強制」或選擇「繼續「如果遇到問題。我需要一些非互動的東西。
因此,要總結,我的想法是嘗試:
- 傳遞--force選項或類似emacs的,使其繼續在暫停
- 看看導出的tmp文件有任何行並相應地處理它
- 告訴emacs的運行中「只讀模式」(但我不認爲它的存在)
的主要問題是:用cron,我不在那裏告訴處理做什麼,等等只需將一個空文件作爲導出結果。我該如何處理這個鎖定的文件業務,像cron這樣的「盲」過程,無法迴應?
我試過問郵件列表以及沒有工作結果。 [1]我想知道這裏有人可能有想法。
[1] http://www.mail-archive.com/[email protected]/msg45056.html
關於使用'wc -l'測試空文件的無用性的切線註釋。 'man test'(特別是'test -s')或者'grep',如果你想查找非空行或者其他東西。 – tripleee
@tripleee:謝謝。任何想象力都不是我的專家。謝謝你的提示! – Hendy