web-dev-qa-db-fra.com

différence linux entre "Sudo crontab -e" et juste "crontab -e"

J'ai remarqué que lorsque j'ai tapé Sudo crontab -e Je ne vois pas ma commande cron, mais quand je ne le fais que crontab -e il y a ma commande.

Y a-t-il une différence entre les 2? Si c'est le cas, où dois-je mettre ma commande cron, doit-elle être dans Sudo ou sans sudo?

Merci!

16

Y a-t-il une différence entre les 2?

Oui, en effet, ils sont différents. La différence est qu'avec Sudo crontab -e les commandes sont planifiées avec root les informations d'identification de l'utilisateur. Pour que les commandes de la table cron de Sudo soient exécutées en tant qu'utilisateur root.

Mais avec crontab -e, les commandes sont planifiées avec l'utilisateur normal qui est connecté.

Où dois-je placer ma commande cron, que ce soit dans Sudo ou sans sudo?

Eh bien, la réponse à cela dépend du type de commande que vous souhaitez exécuter.
Si la commande nécessite un accès Sudo alors Sudo crontab -e Devrait être utilisé.
Sinon, si la commande cron ne nécessite aucune autorisation spéciale, utilisez crontab -e.

Exemple :
Si l'interface réseau Ethernet eth0 doit être désactivé ou activé à un moment précis, vous devez alors utiliser la commande
ifconfig eth0 up ou ifconfig eth0 down
Comme les commandes ci-dessus nécessitent une autorisation spéciale (Sudo), ces commandes sont censées être ajoutées à Sudo's onglet cron

Toute autre commande nécessitant une autorisation minimale ou aucune autorisation, comme la suppression d'un fichier du répertoire tmp comme $ rm /tmp/somefile utilise la crontab de l'utilisateur normal.

24
Santosh A

La partie principale du problème est de prendre soin de l'utilisateur avec lequel vous voulez faire vos choses. Sinon, cela ne déclenchera pas votre tâche cron. Et assurez-vous que vous écrivez la sortie de votre commande dans n'importe quel fichier. Il vous aidera à déboguer le problème qui pourrait très probablement être lié à vos chemins d'accès relatifs. C'est pour cela que j'ai rencontré des difficultés. Vous pouvez avancer en suivant l'étape ci-dessous:

  1. identifiez votre nom d'utilisateur avec lequel vous souhaitez vous rendre. Utilisez la commande whoami.
  2. Passez au mode utilisateur sélectionné et tapez crontab -e.
  3. Et ajoutez la ligne <cron-schedule your-command >> output_filename.cron 2> & 1>
  4. C'est tout.

Merci!

0
Hafiz Hashim