5
votes

Crontab n'exécute pas local / bin / script. Catalina, BigSur

Je viens de commencer à utiliser crontab et j'ai quelques problèmes avec. J'ai déjà lu quelques articles sur la façon de l'utiliser sur macOS, mais cela ne fonctionne toujours pas.

Donc, j'écris crontab -e , puis je le */1 * * * * cliclick -w 1 m:3,3 en */1 * * * * cliclick -w 1 m:3,3 (par exemple) - ce qui signifie répéter le clic en x = 3; y = 3 toutes les 1 min. Et rien n'a changé. Mais, lorsque j'utilise uniquement cette commande depuis le terminal, tout va bien.

J'ai déjà essayé de créer un fichier script.sh , et la même situation: à partir de la commande manuelle, cela fonctionne et à partir de crontab ne l'est pas.

Peut-être que je fais quelque chose de mal? MISE À JOUR : Crontab a un accès complet au disque.

UPDATE2: J'ai essayé de le refaire sur le BigSur. Tout d'abord, j'utilise une commande plus simple comme echo :

* * * * * echo 'test' >> /*/Desktop/text.txt Et cela fonctionne bien. Après cela, j'écris mon propre script.sh

echo '2test' >> /Users/***/Desktop/t.txt
/usr/local/bin/cliclick -w 1 m:1,3
cliclick -w 1 m:55,44

Et le cliclick ne fonctionne pas, comme les autres fichiers bin situés dans /usr/local/bin/ (cliclick situé dans ce chemin)

Notez que si j'exécute ./script.sh alors cliclick fonctionne bien dans les deux cas.

J'ai soigneusement cherché sur Google et trouvé que lancer cliclick (et autre) n'est PAS possible via crontab : https://github.com/BlueM/cliclick/issues/103


1 commentaires

J'ai lu que le problème venait de PATH (output.log dit que la commande n'est pas trouvée, car elle a fonctionné d'une manière différente de celle du terminal, mais je ne sais pas comment le résoudre. "/ Bin / sh: cliclick: commande non trouvé "echo $ PATH: / usr / local / bin: / usr / bin: / bin: / usr / sbin: / sbin: / Library / Framew‌ orks / Mono.framework / ‌ Versions / Current / Com‌ mands: / Applications / ‌ Wireshark.app/Conten‌ ts / MacOS Mon fichier .sh sur le bureau. Comment écrire correctement dans ce fichier? Merci!


3 Réponses :


0
votes

Vous pouvez vérifier s'il y a des erreurs lors de l'exécution du cron en le configurant comme ci-dessous.

*/1 * * * * cliclick -w 1 m:3,3 >> output.log 2>&1

la dernière partie 2>&1 redirigera également le STDERR vers le fichier output.log.


5 commentaires

Pour votre problème de chemin. Vous pouvez essayer quelque chose comme. * / 1 * * * * cd / Users / votre-nom-d'utilisateur / Bureau && ./cliclick.sh


Ça ne marche pas. Maintenant output.log est vide du tout. cliclick c'est des utilitaires de brassage. Si vous pouvez m'aider, un chemin vers cliclick est: 1) / usr / local / Cellar / cliclick. 2) Où je suis: / Users / my-name / 3) echo $ PATH return: / usr / local / bin: / usr / bin: / bin: / usr / sbin: / sbin: / Library / Framew‌ orks / Mono.framework / ‌ Versions / Actuel / Commandes: / Applications / ‌ Wireshark.app/Conten‌ ts / MacOS 4) Dans différents StackOverflow répond la même chose, mais tout à fait une situation différente, donc ils écrivent PATH. sh fichiers, mais cela ne m'a pas aidé. 5) Hm ... de quelle manière je devrais écrire ... Peut-être connaissez-vous différents utilitaires de planification?


pouvez-vous essayer d'exécuter cette commande /usr/local/Cellar/cliclick -w 1 m:3,3 dans le terminal et voir ce qui se passe?


formulae.brew.sh/formula/cliclick - c'est donc cliclick. Peu importe où je reste, par exemple / usr / local / Cellar / cliclick ou simplement / Users ou /. En fait, ne comprenez pas ce que vous voulez dire: /usr/local/Cellar/cliclick -w 1 m:3,3 , /usr/local/Cellar/cliclick est un moyen de dossier, comme une manière différente de brasser des utilitaires. Si vous voulez dire cd / usr / local / Cellar / cliclick puis cliclick -w 1 m: 3,3, cela fonctionne correctement. J'ai déjà résolu le problème d'utilisation en C ++, mais c'est une mauvaise idée, je pense. Merci


ok, je pensais que cliclick était installé dans / usr / local / Cellar et c'est la raison pour laquelle je voulais que vous essayiez cette commande.



1
votes

Vous devez autoriser l' accès complet au disque pour terminal.app dans Paramètres> Sécurité et confidentialité> Confidentialité.


0 commentaires

11
votes

Mon problème était que cron n'avait pas accès au disque, donc il ne pouvait pas exécuter mon script. J'ai dû donner un accès complet au disque pour /usr/sbin/cron

Voir ce billet de blog: https://blog.bejarano.io/fixing-cron-jobs-in-mojave/


1 commentaires

Toujours incapable de courir. Connaissez-vous une autre raison pour laquelle il peut ne pas fonctionner sous MacOS? J'utilise Mojave 10.14.5.