Pages : 1
#1 Le 08/01/2023, à 02:15
- Oxxi
crontab & chromium
Hello.
Bon après quelques heures de galère, je me résigne à demander ici en espérant que quelqu'un aura la solution à mon problème.
Résumé : je cherche à lancer une session Brave (avec un profil spécifique) à une heure déterminée (16:00) tous les jours.
Pour ce faire, j'ai testé avec un bash, ci-dessous son contenu
openB282.sh
#!/bin/bash
# brave-browser --profile-directory='Profile 282'
brave-browser --profile-directory='Profile 282' &
sleep 10
Et ça fonctionne bien.
Oui, j'ai bien chmod +x le fichier
Ensuite, c'est là que ça se corse, je n'ai pas trop l'habitude, pas du tout même, du crontab.
De ce fait, j'ai épluché un peu de la doc et je suis parvenu à faire via mon utilisateur
0 16 * * * /home/julien/Documents/openB282.sh
J'ai fait juste un test pour chaque minute que ça tente de faire un lancement avec
* * * * * /home/julien/Documents/openB282.sh >>/home/julien/Documents/open.log 2>&1
Or, ça ne fonctionne pas.
julien@APCX:~/Documents$ tail -f open.log
[0108/024501.793461:ERROR:file_io_posix.cc(144)] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq: No such file or directory (2)
[0108/024501.793535:ERROR:file_io_posix.cc(144)] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq: No such file or directory (2)
/usr/bin/brave-browser : ligne 48 : 652916 Trappe pour point d'arrêt et de trace (core dumped) "$HERE/brave" "$@"
en parallèle, j'ai fait tourner un echo car j'avais un doute, j'ai bien un retour toutes les minutes dans le .log
* * * * * echo hello>>/home/julien/Documents/lecho.log
* * * * * /home/julien/Documents/openB282.sh
Ensuite, je me suis dit c'est le brave-browser qui merde car le cron comprend rien comment et où le lancer.
Alors plusieurs choses, j'ai tenté d'explorer depuis une session Brave le brave://version/ afin d'avoir un peu plus d'infos, j'obtiens
...
Chemin d'accès exécutable /opt/brave.com/brave/brave
Chemin d'accès au profil /home/julien/.config/BraveSoftware/Brave-Browser/Profile 282
...
J'ai tenté de faire un raccourci et de le lancer... mais pareil échec ...
Pour ce faire, je suis allé choper le .desktop de l'appli et je l'ai copié sur le bureau en éditant évidemment le contenu pour que ça pointe sur le bon profil --profile-directory='Profile 282' %U
cd /usr/share/applications/
cp brave-browser.desktop /home/julien/Bureau/
Puis ensuite, même délire je teste avec le crontab ...
* * * * * /home/julien/Bureau/brave-browser.desktop
Rien....
Je sèche.
Je suis un peu dépité de ne pas y parvenir.
Donc si une personne sait comment s'y prendre, je suis tout ouï
Je pense m'y prendre mal quelque part mais je ne vois pas où.
J'ai quand même tester de mettre mon utilisateur dans le crontab, comme ça
* * * * * julien /home/julien/Bureau/brave-browser.desktop
* * * * * julien /home/julien/Documents/openB282.sh
Ni l'un ni l'autre ne fonctionne.
Au passage chose étrange
* * * * * echo hello $USER>>/home/julien/Documents/lecho.log
Ca me donne une ligne vide.
J'ai l'impression que le crontab est perdu au niveau environnement utilisateur.
Ps: désolé j'ai spam le bouton valider comme un âne et ça a posté 3 fois le message
Dernière modification par Oxxi (Le 08/01/2023, à 03:10)
Hors ligne
#2 Le 08/01/2023, à 03:40
- sputnick
Re : crontab & chromium
C'est compliqué de lancer une application GUI en crontab. Il lui manque des variables. Essaye:
* * * * * DISPLAY=:0 /home/julien/Bureau/brave-browser.desktop &>/tmp/log
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 08/01/2023, à 09:50
- Tawal
Re : crontab & chromium
Hello,
Oui, ça vient des variables d'environnement.
L'environnement de cron n'est pas le même que celui de l'utilisateur.
Je me sers aussi de cron pour gérer un conky (application graphique).
La solution de sputnick est bonne mais peut ne pas suffire.
Il est possible de définir des variables d'environnement dans la table cron plutôt que cas par cas (solution de sputnick).
Voici en exemple ma table cron :
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
PATH=/usr/bin:/usr/local/bin:/home/tawal/bin
DISPLAY=:0.0
XDG_RUNTIME_DIR=/run/user/1000
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
*/10 * * * * conky_mem
conky_mem est un script bash qui redémarre conky en cas de dépassement d'une consigne de mémoire.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#4 Le 08/01/2023, à 11:19
- Christophe C
Re : crontab & chromium
tu as lu la doc ?
BountySource - Faite un petit don, ponctuel ou récurent, pour soutenir le développement de XFCE.
Timeshift - Sécurité : pensez à paramétrer des points de restauration système.
Euclide : « Ce qui est affirmé sans preuve peut être nié sans preuve ».
Hors ligne
#5 Le 08/01/2023, à 13:40
- Oxxi
Re : crontab & chromium
Hello.
Je prend un café et je m'y remet et je vous dis ça.
...
C'est compliqué de lancer une application GUI en crontab. Il lui manque des variables.
...
Oui c'est bien ce que j'avais commencé à comprendre après moultitest
Mais je ne suis pas super à l'aise avec l'environnement linux
Hello,
Oui, ça vient des variables d'environnement.
L'environnement de cron n'est pas le même que celui de l'utilisateur.Je me sers aussi de cron pour gérer un conky (application graphique).
La solution de sputnick est bonne mais peut ne pas suffire.
Il est possible de définir des variables d'environnement dans la table cron plutôt que cas par cas (solution de sputnick).Voici en exemple ma table cron :
# Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any'). # # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command PATH=/usr/bin:/usr/local/bin:/home/tawal/bin DISPLAY=:0.0 XDG_RUNTIME_DIR=/run/user/1000 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus */10 * * * * conky_mem
conky_mem est un script bash qui redémarre conky en cas de dépassement d'une consigne de mémoire.
Oki je vais essayé, je n'avais pas pensé que le crontab pouvait manger de la variable
tu as lu la doc ?
https://usagif.com/wp-content/uploads/gifs/non-7.gif
Après 2h du mat, ça devenait compliqué :x
Modération - Image animée bien lourde et parfaitement inutile 1
Dernière modification par cqfd93 (Le 08/01/2023, à 17:11)
Hors ligne
#6 Le 08/01/2023, à 14:14
- Oxxi
Re : crontab & chromium
Hello.
Je prend un café et je m'y remet et je vous dis ça.
sputnick a écrit :...
C'est compliqué de lancer une application GUI en crontab. Il lui manque des variables.
...Oui c'est bien ce que j'avais commencé à comprendre après moultitest
Mais je ne suis pas super à l'aise avec l'environnement linuxTawal a écrit :Hello,
Oui, ça vient des variables d'environnement.
L'environnement de cron n'est pas le même que celui de l'utilisateur.Je me sers aussi de cron pour gérer un conky (application graphique).
La solution de sputnick est bonne mais peut ne pas suffire.
Il est possible de définir des variables d'environnement dans la table cron plutôt que cas par cas (solution de sputnick).Voici en exemple ma table cron :
# Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # # To define the time you can provide concrete values for # minute (m), hour (h), day of month (dom), month (mon), # and day of week (dow) or use '*' in these fields (for 'any'). # # Notice that tasks will be started based on the cron's system # daemon's notion of time and timezones. # # Output of the crontab jobs (including errors) is sent through # email to the user the crontab file belongs to (unless redirected). # # For example, you can run a backup of all your user accounts # at 5 a.m every week with: # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # # For more information see the manual pages of crontab(5) and cron(8) # # m h dom mon dow command PATH=/usr/bin:/usr/local/bin:/home/tawal/bin DISPLAY=:0.0 XDG_RUNTIME_DIR=/run/user/1000 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus */10 * * * * conky_mem
conky_mem est un script bash qui redémarre conky en cas de dépassement d'une consigne de mémoire.
Oki je vais essayé, je n'avais pas pensé que le crontab pouvait manger de la variable
Christophe C a écrit :tu as lu la doc ?
https://usagif.com/wp-content/uploads/gifs/non-7.gif
Après 2h du mat, ça devenait compliqué :x
>>>>>>> EDIT :
Bon bah GG les gens !
ça venait bien d'un problème de variables environnement graphique.
La solution de sputnick est en effet surement un peu incomplète car ça ouvre correctement le Brave mais dans le log j'ai ces erreurs
[15342:15366:0108/140802.347845:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
[15342:15366:0108/140802.347903:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix")
Ca semble pas poser vraiment de problème mais j'aime pas les erreurs ^^
Du coup, j'ai opté pour la solution de Tawal . J'ai juste rajouté bête et méchant ce bout
PATH=/usr/bin:/usr/local/bin:/home/tawal/bin
DISPLAY=:0.0
XDG_RUNTIME_DIR=/run/user/1000
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
Et là aucune sortie d'erreur donc farpait !
Je vous remercie pour l'aide
Dernière modification par Oxxi (Le 08/01/2023, à 14:15)
Hors ligne
#7 Le 08/01/2023, à 14:15
- Watael
Re : crontab & chromium
et en passant par systemctl --user, avec une WantedBy=graphical-session.target ?
il semble ne pas y avoir besoin de spécifier en dur le DISPLAY...
le truc ne se lancerait même que lorsqu'une session graphique existe, alors que cron, lui, va toujours essayé de l'exécuter.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#8 Le 08/01/2023, à 14:20
- Oxxi
Re : crontab & chromium
et en passant par systemctl --user, avec une WantedBy=graphical-session.target ?
il semble ne pas y avoir besoin de spécifier en dur le DISPLAY...
le truc ne se lancerait même que lorsqu'une session graphique existe, alors que cron, lui, va toujours essayé de l'exécuter.
Tu m'as un peu perdu là :x
J'ai maté le systemctl --user, y'a pas mal d'info mais j'y comprend pas tous
Le truc que je trouve bizarre dans le cron, c'est le faire de faire un echo $USER et là ça sort rien.
En gros, à ce que j'ai compris, le cron ne semble connaître aucune variable d'environnement tant qu'on ne lui définit pas; comportement étrange je dirais vu qu'on lance le crontab depuis un utilisateur donné
Hors ligne
#9 Le 08/01/2023, à 14:33
- iznobe
Re : crontab & chromium
Le truc que je trouve bizarre dans le cron, c'est le faire de faire un echo $USER et là ça sort rien.
heureusement que ca ne repond pas Jeanine par exemple , ou bien Terminator alias Arnold... c ' est un programme le cron pas un utilisateur
Dernière modification par iznobe (Le 08/01/2023, à 14:34)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#10 Le 08/01/2023, à 14:38
- Tawal
Re : crontab & chromium
Dans ta crontab, au sujet du PATH, enlève le :/home/tawal/bin à la fin.
Ce dossier n'existe pas chez toi.
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#11 Le 08/01/2023, à 14:43
- Oxxi
Re : crontab & chromium
Oxxi a écrit :Le truc que je trouve bizarre dans le cron, c'est le faire de faire un echo $USER et là ça sort rien.
heureusement que ca ne repond pas Jeanine par exemple , ou bien Terminator alias Arnold... c ' est un programme le cron pas un utilisateur
Effectivement, c'est louable.
Et dans le cas d'un cron où à une certaine heure tu veux faire un Hello $USER, à l'utilisateur évidemment connecté, tu lui balances quoi et comment ?
Dans ta crontab, au sujet du PATH, enlève le :/home/tawal/bin à la fin.
Ce dossier n'existe pas chez toi.
Bien vu ^^
J'avais dit bête et méchant xD
Dernière modification par Oxxi (Le 08/01/2023, à 14:44)
Hors ligne
#12 Le 08/01/2023, à 14:55
- Watael
Re : crontab & chromium
Le truc que je trouve bizarre dans le cron, c'est le faire de faire un echo $USER et là ça sort rien.
En gros, à ce que j'ai compris, le cron ne semble connaître aucune variable d'environnement tant qu'on ne lui définit pas; comportement étrange je dirais vu qu'on lance le crontab depuis un utilisateur donné :/
mais, tu voudrais que ça le sorte où ?
les messages de cron sont envoyés via le système de mail local de la machine.
à défaut de système de mail local, il faut rediriger la sortie vers un fichier* :
* * * * * echo $USER > /tmp/cron.msg
dans ce fichier il y aura le nom de l'utilisateur à qui appartient la crontab.
--
* ou utiliser un programme "fenêtré" en indiquant le DISPLAY
Dernière modification par Watael (Le 08/01/2023, à 14:58)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#13 Le 08/01/2023, à 19:14
- Oxxi
Re : crontab & chromium
Oxxi a écrit :Le truc que je trouve bizarre dans le cron, c'est le faire de faire un echo $USER et là ça sort rien.
En gros, à ce que j'ai compris, le cron ne semble connaître aucune variable d'environnement tant qu'on ne lui définit pas; comportement étrange je dirais vu qu'on lance le crontab depuis un utilisateur donnémais, tu voudrais que ça le sorte où ?
les messages de cron sont envoyés via le système de mail local de la machine.
à défaut de système de mail local, il faut rediriger la sortie vers un fichier* :* * * * * echo $USER > /tmp/cron.msg
dans ce fichier il y aura le nom de l'utilisateur à qui appartient la crontab.
--
* ou utiliser un programme "fenêtré" en indiquant le DISPLAY
Dans mon message initial, j'avais dit avoir fait tourner en parallèle un echo afin de voir si crontab fonctionnait
Bon évidemment, ça ce n'est plus valide mais c'est ce que j'avais fait.
Dans cette exemple, oui j'avais bien un hello dans lecho.log
Par contre, j'avais testé aussi avec echo hello $USER et là j'avais juste une ligne vide dans le .log
* * * * * echo hello>>/home/julien/Documents/lecho.log
* * * * * /home/julien/Documents/openB282.sh
et le crontab -e je le lance bien à partir de mon utilisateur
Hors ligne
#14 Le 08/01/2023, à 19:35
- Watael
Re : crontab & chromium
désolé, j'ai pris le sujet en cours pour évoquer systemctl --user.
et , en effet, ce n'est pas normal. D'autant plus que le premier affichage dans le fichier toutes les minutes (echo hello) a fonctionné...
quelque chose passe derrière pour écraser le fichier ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#15 Le 08/01/2023, à 21:30
- Tawal
Re : crontab & chromium
C'est de cette ligne crontab dont vous parlez :
* * * * * echo hello $USER>>/home/julien/Documents/lecho.log
?
J'avais noté le souci mais je ne sais pas quoi en dire.
Il faudrait faire des tests du genre :
* * * * * echo "$USER" >>/home/julien/Documents/lecho.log
ou
* * * * * /usr/bin/env >>/home/julien/Documents/lecho.log
Et regarder le fichier .log.
@iznobe :
c ' est un programme le cron pas un utilisateur
Ben, un peu que si
Une tâche cron appartient forcément à un utilisateur, donc $USER devrait retourner une valeur.
Edit:
Quoique ...
Le retour de la tâche cron récupérant le retour de env :
LC_TIME=fr_FR.UTF-8
HOME=/home/tawal
LC_MONETARY=fr_FR.UTF-8
LOGNAME=tawal
PATH=/usr/bin:/bin
LC_ADDRESS=fr_FR.UTF-8
LANG=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
SHELL=/bin/sh
LC_MEASUREMENT=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
PWD=/home/tawal
LC_NUMERIC=fr_FR.UTF-8
LC_PAPER=fr_FR.UTF-8
Pas de variable USER là dedans ...
Et évidemment, la tâche renvoyant la valeur de la variable USER donne une ligne vide.
Dernière modification par Tawal (Le 08/01/2023, à 21:39)
Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
#16 Le 09/01/2023, à 20:25
- Oxxi
Re : crontab & chromium
désolé, j'ai pris le sujet en cours pour évoquer systemctl --user.
et , en effet, ce n'est pas normal. D'autant plus que le premier affichage dans le fichier toutes les minutes (echo hello) a fonctionné...
quelque chose passe derrière pour écraser le fichier ?
non rien écrase le .log
Alors petit test pour $USER
et donc oui ça retourne jamais rien car il n'est pas défini, c'est moche... enfin si on veut xD
#test1 echo $USER
* * * * * echo salut $USER >>/home/julien/Documents/test1.log
#test1 echo $USER
* * * * * echo salut "$USER" >>/home/julien/Documents/test2.log
#test1 echo $USER
* * * * * echo salut `$USER` >>/home/julien/Documents/test3.log
julien@APCX:~/Documents/$ cat test1.log
salut
julien@APCX:~/Documents/$ cat test2.log
salut
julien@APCX:~/Documents/$ cat test3.log
salut
En fait, il doit falloir utiliser $LOGNAME qui récupère sûrement la session en cours.
Je viens d'essayer ça fonctionne
Dernière modification par Oxxi (Le 09/01/2023, à 20:28)
Hors ligne
#17 Le 09/01/2023, à 20:50
- Watael
Re : crontab & chromium
$USER n'est pas en effet POSIX, pourtant c'est reconnu par /bin/dash.
que retourne
* * * * * env >/tmp/env.log
?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#18 Le 09/01/2023, à 21:40
- Oxxi
Re : crontab & chromium
$USER n'est pas en effet POSIX, pourtant c'est reconnu par /bin/dash.
que retourne
* * * * * env >/tmp/env.log
?
LC_TIME=es_ES.UTF-8
HOME=/home/julien
LC_MONETARY=es_ES.UTF-8
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
LOGNAME=julien
PATH=/usr/bin:/usr/local/bin
LC_ADDRESS=es_ES.UTF-8
XDG_RUNTIME_DIR=/run/user/1000
DISPLAY=:0.0
LANG=fr_FR.UTF-8
LC_TELEPHONE=es_ES.UTF-8
LC_NAME=es_ES.UTF-8
SHELL=/bin/sh
LC_MEASUREMENT=es_ES.UTF-8
LC_IDENTIFICATION=es_ES.UTF-8
PWD=/home/julien
LC_NUMERIC=es_ES.UTF-8
LC_PAPER=es_ES.UTF-8
Hors ligne
#19 Le 09/01/2023, à 22:15
- Watael
Re : crontab & chromium
ok. et realpath /bin/sh ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#20 Le 09/01/2023, à 22:28
- Watael
Re : crontab & chromium
je n'avais pas lu tout l'env de Tawal, qui n'a pas de $USER sous cron, c'est bizarre cette implémentation de /bin/sh...
et dans bash ?
$ env | grep ^USER
Dernière modification par Watael (Le 09/01/2023, à 22:28)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#21 Le 09/01/2023, à 22:41
- Watael
Re : crontab & chromium
je poursuis l'enquête
(Another note: the LOGNAME variable is sometimes called USER on BSD
systems... on these systems, USER will be set also.)
LOGNAME n'est pas non plus POSIX.
c'est la fête !
résumé : dans cron, pour être portable, il vaut mieux en effet utiliser LOGNAME.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#22 Le 12/01/2023, à 20:09
- Oxxi
Re : crontab & chromium
ok. et realpath /bin/sh ?
ulien@APCX:~$ realpath /bin/sh
/usr/bin/dash
je n'avais pas lu tout l'env de Tawal, qui n'a pas de $USER sous cron, c'est bizarre cette implémentation de /bin/sh...
et dans bash ?
$ env | grep ^USER
julien@APCX:~$ env | grep ^USER
USERNAME=julien
USER=julien
je poursuis l'enquête
man 5 crontab a écrit :(Another note: the LOGNAME variable is sometimes called USER on BSD
systems... on these systems, USER will be set also.)LOGNAME n'est pas non plus POSIX.
c'est la fête !
résumé : dans cron, pour être portable, il vaut mieux en effet utiliser LOGNAME.
La doc révèle toujours la vérité xD
Dernière modification par Oxxi (Le 12/01/2023, à 20:12)
Hors ligne
#23 Le 12/01/2023, à 20:29
- Watael
Re : crontab & chromium
ce n'est donc pas l'implémentation du shell (j'ai trouvé USER dans tous les shells à ma disposition: dash, bash, ksh(AT&T), zsh), c'est l'environnement minimaliste de cron, le responsable.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
Pages : 1