Wie kann ich automatisch eine Liste der geöffneten Dateien in Geany, mit cron oder auf andere Weise speichern?

1588
monguin

Ich verwende die Geany IDE zum Programmieren und lädt meine zuvor geöffneten Dateien nicht zuverlässig, beispielsweise nach einem Stromausfall. Ich fand heraus, dass Geany eine Befehlszeilenfunktion hat, die eine Liste aller geöffneten Dateien im Editor zurückgibt. Ich hoffte, dass ich schnell einen cron-Befehl schreiben könnte, der diese Liste automatisch jede Stunde oder so speichert.

Ich habe derzeit diese Zeile in meiner Crontab:

0 * * * * ~/bin/save_geany_files 

und das Skript enthält nur eine Zeile:

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

Das funktioniert nicht. Mir ist aufgefallen, dass Geanys --list-documents-Funktion von demselben Benutzer aufgerufen werden muss (glaube ich), also habe ich versucht, "su - [myusername]" zum Skript hinzuzufügen, aber anscheinend kann su nicht innerhalb eines Cron-Jobs verwendet werden. Ich weiß nicht, wie ich das automatisieren kann. Ich bin offen für andere Lösungen für mein Problem, obwohl die Optionen / Plugins von Geany unzuverlässig zu sein scheinen (weshalb ich das überhaupt ausprobiert habe).

1
Haben Sie `~ / bin / save_geany_files` ausführbar gemacht? Es sollte ohne `su` funktionieren (Cron-Jobs werden von dem Benutzer ausgeführt, dessen Crontab es ist), solange das" Skript "(nicht wirklich ein Skript) ausführbar ist. terdon vor 10 Jahren 0
Befehle in Ihrer Crontab (dh über `crontab` ohne Argument '-u' hinzugefügt) werden standardmäßig unter Ihrem Konto ausgeführt. Wenn Sie nicht als Benutzer "geany" als Benutzer ausgeführt werden, was unwahrscheinlich unwahrscheinlich erscheint, muss das Problem an einer anderen Stelle liegen, z. B. mit @ terdons Vorschlag, dass das Shell-Skript möglicherweise nicht ausführbar ist. Aaron Miller vor 10 Jahren 0
Als allgemeinere Lösung können Sie einen zuverlässigeren Editor in Betracht ziehen. Ich habe Emacs (die seit langem bewährte und bewährte Funktionen zum Speichern und Wiederherstellen von Sitzungen hat) für ziemlich geeignet befunden. (Ich weiß - "Emacs? Augh!" - aber glauben Sie nicht an den Hype! Emacs ist extrem intuitiv, nachdem Sie mehrere Jahre gelernt haben, wie es funktioniert. :) Aaron Miller vor 10 Jahren 0
@terdon: Ja, die Datei ist ausführbar. Ich dachte, dass Cron-Jobs als Eigentümer ausgeführt wurden, aber ich habe eine Debugging-Zeile eingefügt, "echo" user: $ USER "", und in der Ausgabe wird nur "user:" angezeigt, also bin ich verwirrt. Ich betreibe Geany nicht als einen anderen Benutzer. monguin vor 10 Jahren 0
Ich bin nicht dagegen, Emacs zu lernen, aber das ist etwas, was ich zu meiner eigenen Zeit tun würde, also muss es eine Weile warten. monguin vor 10 Jahren 0

1 Antwort auf die Frage

1
Anders Sandblad

Führen Sie die Crontab so aus:

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

Ich habe diese Fehlermeldung in /tmp/geanyerror.log gefunden:

Geany: cannot open display 

Ich habe das Problem gelöst, indem ich die folgende Zeile in .bashrc eingefügt habe:

xhost local:arune > /dev/null 

(wobei arune mein Benutzername ist) und ändert mein crontab in

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

Mein eigenes save_geany_files-Skript sieht folgendermaßen aus:

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

ein "Backup" für eine zusätzliche Stunde speichern.