Wenn Sie möchten, dass die Aufgabe im Benutzermodus ausgeführt wird, können Sie das tun, was ich getan habe, und sudo -u <user>vor der Aufgabe inanacrontab
Sie können eine separate Anacron-Instanz für die Ausführung im Benutzermodus einrichten:
Erstellen Sie einen .anacronOrdner in Ihrem Home-Verzeichnis und darin zwei Unterordner etcund spool:
mkdir -p ~/.anacron/{etc,spool}
Erstellen Sie eine neue Datei ~/.anacron/etc/anacrontabmit ähnlichem Inhalt:
# /etc/anacrontab: configuration file for anacron# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# period delay job-identifier command110 testjob test.sh
Fügen Sie Ihrer Crontab die folgende Zeile hinzu crontab -e:
Nur zur Bestätigung wird das angegebene Skript als Benutzer ausgeführt, sodass ein whoamiim Skript den Benutzernamen angibt .
Christoph
hm ja, bei genauerem Hinsehen verstehe ich nicht, warum nicht ...
Christoph
3
Ich denke, Sie müssen anacronregelmäßig laufen ; es scheint einmal zu laufen und dann zu beenden. Das Anacron des Systems wird einmal pro Stunde aufgerufen. Ich nehme an, eine ähnliche Strategie würde hier funktionieren, dh den Benutzer anacronvom Benutzer aus anrufen crontab.
Sparhawk
1
@Sparhawk stimmte zu, insbesondere Ubuntu 15.10 verwendet anacron sowohl /etc/apm/event.d/anacronals auch /etc/init/anacron.conf, um Neustarts durchzuführen.
Ciro Santilli
1
Sie müssen anacron stündlich mit einem Cron-Job ausführen, z. B.01 * * * * /usr/sbin/anacron -t /home/user/.anacron/etc/anacrontab -S /home/user/.anacron/spool
Simon Woodside
0
Das hat bei mir funktioniert (danke), aber ich habe den letzten Schritt in der Antwort nicht ausgeführt:
Fügen Sie dann die folgende Zeile hinzu ~/.profile:
Ich verwende Ubuntu Studio 12.10 Quantal und in meinem Fall anstelle des letzten Schritts habe ich diesen einen Zeilenumbruch hier eingefügt: "Anwendungsmenü" → "Einstellungen" → "Einstellungsmanager", dann im Einstellungsmanager unter "Sitzung und Start" Registerkarte „Application Autostart“.
Dies ist für diejenigen unter uns, die GUI-Benutzer sind, da ~/.profileBash ~/bashrcnur verwendet, wenn eine interaktive Anmeldeshell gestartet wird.
sudo -u <user>
vor der Aufgabe inanacrontab
Antworten:
Sie können eine separate Anacron-Instanz für die Ausführung im Benutzermodus einrichten:
Erstellen Sie einen
.anacron
Ordner in Ihrem Home-Verzeichnis und darin zwei Unterordneretc
undspool
:Erstellen Sie eine neue Datei
~/.anacron/etc/anacrontab
mit ähnlichem Inhalt:Fügen Sie Ihrer Crontab die folgende Zeile hinzu
crontab -e
:quelle
whoami
im Skript den Benutzernamen angibt .anacron
regelmäßig laufen ; es scheint einmal zu laufen und dann zu beenden. Das Anacron des Systems wird einmal pro Stunde aufgerufen. Ich nehme an, eine ähnliche Strategie würde hier funktionieren, dh den Benutzeranacron
vom Benutzer aus anrufencrontab
./etc/apm/event.d/anacron
als auch/etc/init/anacron.conf
, um Neustarts durchzuführen.01 * * * * /usr/sbin/anacron -t /home/user/.anacron/etc/anacrontab -S /home/user/.anacron/spool
Das hat bei mir funktioniert (danke), aber ich habe den letzten Schritt in der Antwort nicht ausgeführt:
Ich verwende Ubuntu Studio 12.10 Quantal und in meinem Fall anstelle des letzten Schritts habe ich diesen einen Zeilenumbruch hier eingefügt: "Anwendungsmenü" → "Einstellungen" → "Einstellungsmanager", dann im Einstellungsmanager unter "Sitzung und Start" Registerkarte „Application Autostart“.
Dies ist für diejenigen unter uns, die GUI-Benutzer sind, da
~/.profile
Bash~/bashrc
nur verwendet, wenn eine interaktive Anmeldeshell gestartet wird.quelle
.profile
hat für mich immer gut funktioniert (Ubuntu 12.04 hier).