Как я могу автоматически сохранить список открытых файлов в Geany, cron или другим способом?

1502
monguin

Я использую Geany IDE для программирования, и она не перезагружает мои ранее открытые файлы, например, после отключения питания. Я обнаружил, что у Geany есть функция командной строки, которая возвращает список всех открытых файлов в редакторе, поэтому я надеялся, что смогу быстро написать команду cron, которая будет автоматически сохранять этот список каждый час или около того.

В настоящее время у меня есть эта строка в моем crontab:

0 * * * * ~/bin/save_geany_files 

и скрипт содержит только одну строку:

geany --list-documents > ~/geany_files.txt 

Это не работает. Я заметил, что функция --list-documents Geany должна вызываться одним и тем же пользователем (я думаю), поэтому я попытался добавить «su - [myusername]» в сценарий, но, очевидно, su нельзя использовать из задания cron? Итак, я не знаю, как это автоматизировать. Я открыт для любых других решений моей проблемы, хотя опции / плагины Geany кажутся ненадежными (вот почему я попробовал это в первую очередь)

1
Вы сделали исполняемый файл `~ / bin / save_geany_files`? Он должен работать без `su` (задания cron запускаются пользователем, чей это crontab), пока« сценарий »(на самом деле не сценарий) является исполняемым. terdon 10 лет назад 0
Команды в вашем crontab (то есть добавленные через `crontab` без аргумента` -u`) по умолчанию запускаются под вашей учетной записью. Если вы не используете `geany` как пользователь, отличный от себя, что кажется маловероятным, проблема должна быть где-то еще, например, с предложением @ terdon, что, возможно, сценарий оболочки не является исполняемым. Aaron Miller 10 лет назад 0
И, как более общее решение, вы можете рассмотреть возможность использования более надежного редактора; Я нахожу Emacs (который имеет давно и хорошо проверенные средства сохранения и восстановления сессии) вполне подходящим. (Я знаю - «Emacs? Ау!» - но не верьте обману! Emacs чрезвычайно интуитивен, когда вы потратили несколько лет, изучая, как это работает. :) Aaron Miller 10 лет назад 0
@terdon: Да, файл исполняемый. Я думал, что задания cron выполнялись как владелец, но я поместил в строку отладки `echo" user: $ USER "`, и в выводе он показывает просто `user:`, так что я запутался. Я не использую Geany как другой пользователь. monguin 10 лет назад 0
Я не против изучения emacs, но это то, чем я буду заниматься в свое свободное время, поэтому придется подождать некоторое время. monguin 10 лет назад 0

1 ответ на вопрос

1
Anders Sandblad

By running the crontab like this:

0 * * * * ~/bin/save_geany_files 2> /tmp/geanyerror.log 

I found this error message in /tmp/geanyerror.log:

Geany: cannot open display 

I solved this by adding the following line to .bashrc:

xhost local:arune > /dev/null 

(where arune is my username) and changing my crontab to

0 * * * * export DISPLAY=:0.0 && ~/bin/save_geany_files 2> /tmp/geanyerror.log 

My own save_geany_files-script looks like this:

#!/bin/bash cp /home/arune/geany/savenew.txt /home/arune/geany/saveold.txt /usr/bin/geany --list-documents > /home/arune/geany/savenew.txt 

to store a "backup" for one hour extra.

Похожие вопросы