# Killer toutes les applications à une certaine heure ?



## DocRunner (11 Novembre 2022)

Bonjour

Je suis médecin, et souvent l'appareil à carte vitale, ne supporte pas de rester allumé H24. De plus pour les économies d'énergie, éteindre le mac le soir est préférable
Je peux programmer l'extinction du mac le soir automatiquement mais certaines applications parfois bloquent le processus

Comment faire via automator pour exemple pour executer un kill all genre 1 min avant l'extinction prévue ?

-Merci d'avance pour votre aide

PS : existe t il quelque part une formation à automator ?


----------



## zeltron54 (11 Novembre 2022)

Bonjour,

Pour programmer cela, il me semble que passer par la commande "cron" du système serait le plus fiable.
"Cron" tourne en tache de fond et exécute une commande aux heures et jours prévus.

Pour installer un cron:
Tu ouvres le terminal (dans application—>utilitaires), dans la fenêtre du terminal tu tapes
env EDITOR=nano sudo crontab -e
une demande de mot de passe , tu le tapes en aveugle (rien ne s’affiche à l’écran) et tu valides avec enter.

Tu es dans l’application minimaliste Nano

Là tu entres ta commande au format :
minute (entre 0 et 59)
heure (entre 0 et 23)
jour (entre 1 et 31)
mois (entre 1 et 12)
jour semaine (entre 0 et 6 —> 0 = dimanche)
Commande à exécuter (exemple pour un bip: echo -e '\a'

Chaque valeur étant séparée par un espace
Dans les valeurs une * = tous
plusieurs valeurs à séparer par une virgule
Une série —>  début-fin

exemple pour 2 bis  toutes les heures, de 10h à 16h, les lundi, jeudi et vendredi
0 10-16 * * 1,4,5 echo -e '\a'; echo -e '\a'

Pour enregistrer cette commande faire ctrl+o puis enter
Puis ctrl+x pour quitter nano

Dans le terminal Tu devrais avoir la confirmation: “installing new crontab

Pour éteindre le mac même si des applications sont ouvertes la commande sera:

echo mot_de_passe | sudo -S  halt -q

Le mot de passe est à renseigner car seul un administrateur est autorisé...
A l'allumage tu retrouves le mac comme il était lors de l'extinction.

Si l'utilisation du terminal te dérange tu peux télécharger l'application "cronnix" qui fait la même chose avec une interface graphique. https://code.google.com/archive/p/cronnix/downloads


----------



## DocRunner (12 Novembre 2022)

Un grand merci ! Comment fait on pour supprimer la commande ainsi créée ? Cron ça a l'air vraiment super. Existe t il un bouquin là dessus ou un tuto ?
Pour le rallumer, je passe par le gestionnaire du mac ? Ou le mieux est aussi de créer une commande Cron ? Merci également.


----------



## zeltron54 (13 Novembre 2022)

-Je ne connaît pas de bouquin, il ne s'agit que d'une commande unix.
-Des tutos - avec une recherche sur le net.
-la commande cron tourne en tache de fond sur l'ordi allumé donc pas possible d'allumer l'ordi comme çà .pour l'allumer il faut passer par les préférences système-->économiseur d'énergie-->programmer.
-Pour supprimer un crontab: depuis le terminal
s'il à été créé pour un utilisateur alors depuis la session de cet utilisateur --> crontab -r
S'il à été créé pour le root (Sudo) alors --> sudo crontab -r

Pour voir la crontab existante  idem:  crontab -l    ou  sudo crontab -l

Dans le terminal un man cron donne toutes les infos

Pour ton cas le plus simple est de faire un applescrit, contenant  la commande pour éteindre, qui sera enregistré en tant qu'application, puis de faire un cron (la programmation) qui lancera cet applescript.
Si tu est intéressé par cette solution je pourrais te préparer le script avec un tuto !


----------



## zeltron54 (15 Novembre 2022)

Bonjour,
En repensant à ton problème, le fait d'appeler un applescript pour éteindre l'ordi devrait permettre de programmer via ce script l'allumage pour le lendemain ...
Il suffit donc d'avoir les horaires d'extinction et d'allumage des jours concernés pour programmer çà.


----------



## zeltron54 (18 Novembre 2022)

Bonjour,

Pour la mise en place de cette programmation:

pour installer le script
Ouvrir Editeur de script qui se trouve dans Application—>Utilitaires
Clic sur le bouton “Nouveau document” en bas à gauche
Dans la fenêtre qui s’ouvre faire un copier coller du script ci-dessous
Modifier:

le mot de passe
les jours et les heures de l'allumage de l'ordi (voir les commentaires dans le script)
Faire un enregistrer sous:
Choisir format de fichier : Application
Choisir le nom du fichier et son emplacement
Attention ces choix sont définitif car il seront entrés dans la crontab.

Pour entrer le cron dans la crontab sudo:

Tu ouvres le terminal (dans application—>utilitaires), dans la fenêtre du terminal tu tapes 
env EDITOR=nano sudo crontab -e
une demande de mot de passe , tu le tapes en aveugle (rien ne s’affiche à l’écran) et tu valides avec enter.

Tu es dans l’application minimaliste Nano

Là tu entres ta commande au format : Un espace entre chaque élément.
minute (entre 0 et 59)
heure (entre 0 et 23)
jour (entre 1 et 31)
mois (entre 1 et 12)
jour semaine (entre 0 et 6 —> 0 = dimanche)

Suivi de la commande open
suivi du chemin de l'application issue du script (faire un glissé déposer" du fichier dans la fenêtre. Perso j'ai mis le fichier dans application sous le nom eteind_ordi.app


Exemple: pour extinction tous les lundi à 19H15: 15 19 * * 1 open /Applications/eteind_ordi.app
pour extinction les lundi, mardi, mercredi, jeudi, vendredi à 18H30:  30 18 * * 1,2,3,4,5 open /Applications/eteind_ordi.app

Faire autant de lignes que nécessaire pour couvrir tous cas. (faire attention que les instructions ne se chevauchent pas)

Pour enregistrer cette ou ces commandes faire ctrl+o puis enter
Puis ctrl+x pour quitter nano

Dans le terminal Tu devrais avoir la confirmation: “installing new crontab

Dis-moi si problèmes. chez moi tout fonctionne !

```
set ladate to date string of (current date)
set lejour to word 1 of ladate
set MDP to "Mot_de_passe" -- changer Mot_de_passe par le mot de passe de seesion administrateur

if lejour is "Lundi" then -- si l'extinction à lieu le lundi --> allumage programmé le mardi à 07:00:00 (les 2 lignes ci-dessous)
    set lejour to "mardi"
    set heur to "07:00:00"
else if lejour is "mardi" then -- si l'extinction à lieu le mardi --> allumage programmé le mercredi à 07:00:00 (les 2 lignes ci-dessous)
    set lejour to "mercredi"
    set heur to "07:00:00"
else if lejour is "mercredi" then -- si l'extinction à lieu le mercredi --> allumage programmé le jeudi à 07:00:00 (les 2 lignes ci-dessous)
    set lejour to "jeudi"
    set heur to "07:00:00"
else if lejour is "jeudi" then -- si l'extinction à lieu le jeudi --> allumage programmé le vendredi à 07:00:00 (les 2 lignes ci-dessous)
    set lejour to "vendredi"
    set heur to "07:00:00"
else if lejour is "vendredi" then -- si l'extinction à lieu le vendredi --> allumage programmé le samedi à 07:00:00 (les 2 lignes ci-dessous)
    set lejour to "samedi"
    set heur to "07:00:00"
else if lejour is "samedi" then -- si l'extinction à lieu le samedi --> allumage programmé le dimanche à 07:00:00 (les 2 lignes ci-dessous)
    set lejour to "dimanche"
    set heur to "07:00:00"
else if lejour is "dimanche" then -- si l'extinction à lieu le dimanche --> allumage programmé le lundi à 07:00:00 (les 2 lignes ci-dessous)
    set lejour to "lundi"
    set heur to "07:00:00"
end if
set lalist to {"Lundi", "M", "mardi", "T", "Mercredi", "W", "Jeudi", "R", "vendredi", "F", "samedi", "S", "dimanche", "U"}
set a to ""
repeat with i from 1 to count of lalist
    if item i of lalist is lejour then set a to item (i + 1) of lalist
end repeat

set commande to "echo " & MDP & " | sudo -S pmset repeat poweron " & a & " " & heur -- prépare la commande pour allumage
do shell script commande

set commande to "echo " & MDP & " | sudo -S  halt -q" -- prépare la commande pour extinction
do shell script commande
```


----------

