Comment exécuter anacron en mode utilisateur?

30

Je souhaite configurer une tâche planifiée via anacronmais je souhaite le faire en mode utilisateur. Comment puis-je atteindre cet objectif?

Glutanimate
la source
Si vous voulez que la tâche s'exécute en mode utilisateur, vous pouvez faire ce que j'ai fait et simplement ajouter sudo -u <user>avant la tâche dansanacrontab
Karthik T
2
A également répondu ici: serverfault.com/questions/172989/user-specific-anacrontab/… et voici une belle solution entièrement écrite: akeil.net/posts/user-controlled-anacron.html
Simon Woodside

Réponses:

33

Vous pouvez configurer une instance anacron distincte pour qu'elle s'exécute en mode utilisateur:

  1. Créez un .anacrondossier dans votre répertoire personnel et dans celui-ci deux sous-dossiers, etcet spool:

    mkdir -p ~/.anacron/{etc,spool}
  2. Créez un nouveau fichier ~/.anacron/etc/anacrontabavec un contenu similaire au suivant:

    # /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  command
    1         10     testjob         test.sh
  3. Ajoutez la ligne suivante à votre crontab en utilisant crontab -e:

    @hourly /usr/sbin/anacron -s -t $HOME/.anacron/etc/anacrontab -S $HOME/.anacron/spool
Glutanimate
la source
Juste pour confirmer, cela exécute le script spécifié en tant qu'utilisateur, donc un whoamidans le script donnera le nom d'utilisateur?
Christoph
hm ouais, après une inspection plus approfondie, je ne vois pas pourquoi pas ...
Christoph
3
Je pense que vous devez exécuter anacronpériodiquement; il semble fonctionner une fois puis quitter. L'anacron du système est appelé une fois toutes les heures. Je suppose qu'une stratégie similaire fonctionnerait ici, c'est-à-dire appeler l'utilisateur anacrondepuis l'utilisateur crontab.
Sparhawk du
1
@Sparhawk a accepté, en particulier Ubuntu 15.10 anacron utilise les deux /etc/apm/event.d/anacronet /etc/init/anacron.confpour prendre en charge les redémarrages.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Vous devez exécuter anacron toutes les heures avec un travail cron, par exemple01 * * * * /usr/sbin/anacron -t /home/user/.anacron/etc/anacrontab -S /home/user/.anacron/spool
Simon Woodside
0

Cela a fonctionné pour moi (merci), mais je n'ai pas utilisé la dernière étape donnée dans la réponse:

Ajoutez ensuite la ligne suivante à votre ~/.profile:

J'utilise Ubuntu Studio 12.10 Quantal et dans mon cas, au lieu de cette dernière étape, je mets cette ligne ici: "Menu Applications" → "Paramètres" → "Gestionnaire de paramètres" puis dans le gestionnaire de paramètres sous "Session et démarrage" puis le Onglet «Démarrage automatique de l'application».

C'est pour ceux d'entre nous qui sont des utilisateurs de l'interface graphique, car il ~/.profilen'est fourni par bash que lorsqu'il démarre un shell interactif de connexion (même ~/bashrcn'est pas si utile car cela n'est fourni que lorsque bash démarre un shell interactif).

sam
la source
Mmh, je suis moi-même un utilisateur de l'interface graphique et la ligne en .profilea toujours bien fonctionné pour moi (Ubuntu 12.04 ici).
Glutanimate