Qu'entendez-vous par «application»? Doit-il s'agir d'un programme GUI ou launchd (que je suggère ci-dessous) est-il acceptable? Si vous faites ce qu'est une application graphique, que voulez-vous qu'elle fasse? Demander l'heure à laquelle l'ordinateur doit être arrêté, lors de son exécution?
TJ Luoma
Réponses:
25
Ok, donc suite à ma réponse précédente, je peux vous expliquer comment obtenir cron (un service de planification UNIX intégré) pour exécuter une commande d'arrêt planifié pour vous.
Tu n'as pas besoin d' sudoy mettre ? Je sais que cela provoquera probablement un blocage, mais je suis sûr que vous devez être root pour fonctionner shutdown.
daviesgeek
Aucune exception n'est nécessaire, c'est une réponse étonnante, très heureusement surpris, surtout après avoir répondu grossièrement à vous. Merci beaucoup pour votre aide
Harry
3
@daveisgeek - Vous avez tout à fait raison, mais notez que nous démarrons crontab avec sudo. Cela signifie que nous modifions la crontab de root et donc toutes les commandes planifiées seront exécutées en tant que cet utilisateur.
macaco
Hé, je l'ai fait, et à l'heure fixée, j'ai eu une boîte de dialogue qui dit, cet ordinateur va s'éteindre dans 10 minutes? Et il me demande d'annuler. Je ne sais pas si c'était le résultat du truc cron, ou du truc d'économie d'énergie que j'ai fait aussi. La chose cron est-elle censée forcer un arrêt sans une boîte de dialogue d'annulation?
Harry
3
shutdownest dans /sbinlequel n'est probablement pas dans le $ PATH par défaut de cron. Pour résoudre ce problème, sudo crontab -erecommencez, tapez ddpour supprimer la ligne (en supposant que le fichier ressemble à celui que vous avez lié ci-dessus) et entrez à nouveau la ligne sous 30 22 * * * /sbin/shutdown -h now.
Lors de l'ajout de la commande shutdown à un agent launchd dans / Library / LaunchAgents /, cela n'a pas fonctionné et «console» consignait «shutdown: NOT super-user». Peut-être que cela aurait fonctionné dans / System / Library / LaunchAgents (mais vous n'êtes pas censé y mettre des choses :-)) Je n'avais besoin que d'un arrêt normal, alors je suis allé avec l'osascript et je l'ai mis dans ~ / Library / LaunchAgents /bla.shutdown.plist. A bien fonctionné.
commonpike
J'ai dû utiliser <code> osascript -e 'tell app "Finder" pour fermer' </code>
commonpike
Ceci est la seule bonne réponse. (à mon avis)
CousinCocaine
9
Cela peut être planifié dans Préférences Système> Économiseur d'énergie> Planification . Je ne suis pas certain que cela entraînera un arrêt forcé, vous devrez l'essayer. Mais c'est une option intégrée pour automatiser la mise hors / sous tension programmée.
Vous pouvez également arrêter de force le système avec une commande de terminal (nécessite root):
arrêt -h maintenant
Vous pouvez placer cette commande dans une tâche planifiée launchd ou cron . Consultez cet article pour plus d'informations sur ces deux services.
Vous pouvez également vouloir vérifier une application comme le bien nommé iWannaSleep (vous ne savez pas si cela force l' arrêt).
Vous voudrez peut-être paraître moins ingrat, mais si vous relisez ma réponse, vous verrez que je recommande une application et si vous faites une petite recherche indépendante, vous verrez qu'il y a en fait quelques autres applications qui ont cette capacité!
macaco
iWannaSleep est le premier résultat que les gens recommandent sur Google, et il ne fait pas ce que je veux. Et vous me recommandez d'apprendre quelque chose d'unix pour éteindre l'ordinateur?
Harry
3
Je le recommande car c'est un moyen efficace d'atteindre ce que vous voulez en utilisant des outils intégrés. Si vous ne parvenez pas à trouver une application qui convient à vos besoins, vous devrez peut-être chercher quelque chose dans le sens de ma suggestion.
macaco
1
Energy Saver »Schedule n'est pas une bonne réponse, car il invitera l'utilisateur 10 minutes avant l'arrêt et proposera d'annuler le processus.
TJ Luoma
3
Vous pouvez utiliser shutdowndirectement pour planifier un arrêt à tout moment dans le futur:
shutdown -h time
où heure spécifie une heure future dans l'un des deux formats: + nombre ou yymmddhhmm, où l'année, le mois et le jour peuvent être définis par défaut sur les valeurs système actuelles. La première forme fait descendre le système en nombre de minutes et la seconde à l'heure absolue spécifiée.
Tous les utilisateurs actifs reçoivent une notification suffisante.
Un grand avertissement s'affiche peu de temps avant le début de l'arrêt.
Les applications en cours d'exécution sont invitées à quitter.
Les applications ignorant la belle demande sont fermées plus fermement.
La déconnexion est laissée pour se terminer, avant que le Mac ne soit finalement arrêté.
Il est très difficile pour une application ou un processus non autorisé de bloquer ces étapes.
Pourquoi pas shutdown
L'utilisation shutdownforcera la fermeture de tous les processus sur votre Mac, y compris les applications graphiques. Pour de nombreuses applications, il s'agit d'un comportement agressif et ne donne pas à l'application beaucoup de possibilités d'enregistrer l'état ou les données.
Assistant de planification
Power Manager inclut une tâche Assistant Planification pour arrêter un programme .
Divulgation: je travaille avec l'entreprise qui fabrique Power Manager.
vous pouvez utiliser SendAppleEventToSystemProcess (kAEShutDown), puis vous pouvez utiliser la commande killall -u username pour tuer toutes les applications (puisque vous ne voulez pas qu'il soit annulable), vous pouvez également consulter la classe de la minuterie: developer.apple.com/library/ mac / # documentation / Cocoa / Reference /…
Samantha Catania
1
Excellent article, mais OP hésitait à utiliser cron ou launchd, je doute qu'il cherche à coder sa propre solution à ce problème.
macaco
1
Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Réponses:
Ok, donc suite à ma réponse précédente, je peux vous expliquer comment obtenir cron (un service de planification UNIX intégré) pour exécuter une commande d'arrêt planifié pour vous.
Il s'exécutera en tant que root et sera forcé.
sudo crontab -e
Vous devrez entrer votre mot de passe de connexion, puis appuyez sur Entrée.
Vous serez maintenant dans un éditeur de texte (vim). Saisissez soigneusement les touches suivantes.
Supposons que vous souhaitiez que la machine s'arrête à 2 heures du matin tous les jours, nous saisissons maintenant:
Si vous souhaitez que la machine s'arrête tous les jours à 2h30, vous devez entrer:
Vous devriez maintenant être renvoyé à la ligne de commande où vous avez commencé.
Vous avez terminé!
la source
sudo
y mettre ? Je sais que cela provoquera probablement un blocage, mais je suis sûr que vous devez être root pour fonctionnershutdown
.shutdown
est dans/sbin
lequel n'est probablement pas dans le $ PATH par défaut de cron. Pour résoudre ce problème,sudo crontab -e
recommencez, tapezdd
pour supprimer la ligne (en supposant que le fichier ressemble à celui que vous avez lié ci-dessus) et entrez à nouveau la ligne sous30 22 * * * /sbin/shutdown -h now
.Il peut cependant être annulé:
Arrêtez-vous à
yymmddhhmm
:Arrêt en 4 minutes:
/Library/LaunchAgents/me.lri.forceshutdown.plist
:Si le plist appartenait à un utilisateur normal, essayer de le charger entraînerait l'erreur
launchctl: Dubious ownership on file (skipping)
:L'agent peut être chargé en se déconnectant et se reconnectant, ou avec:
sudo crontab -e
Cela effectuerait un arrêt normal non forcé:
la source
Cela peut être planifié dans Préférences Système> Économiseur d'énergie> Planification . Je ne suis pas certain que cela entraînera un arrêt forcé, vous devrez l'essayer. Mais c'est une option intégrée pour automatiser la mise hors / sous tension programmée.
Vous pouvez également arrêter de force le système avec une commande de terminal (nécessite root):
arrêt -h maintenant
Vous pouvez placer cette commande dans une tâche planifiée launchd ou cron . Consultez cet article pour plus d'informations sur ces deux services.
Vous pouvez également vouloir vérifier une application comme le bien nommé iWannaSleep (vous ne savez pas si cela force l' arrêt).
la source
Vous pouvez utiliser
shutdown
directement pour planifier un arrêt à tout moment dans le futur:où heure spécifie une heure future dans l'un des deux formats: + nombre ou yymmddhhmm, où l'année, le mois et le jour peuvent être définis par défaut sur les valeurs système actuelles. La première forme fait descendre le système en nombre de minutes et la seconde à l'heure absolue spécifiée.
la source
# voir note ci-dessous
Remarque:
Tel qu'écrit, le plist entraînera l'arrêt de l'ordinateur à 23h (heure locale) tous les jours.
Si vous souhaitez modifier l'heure, modifiez le script dans n'importe quel éditeur de texte. Modifiez les touches Heure et Minute, extraites ici:
(notez l'utilisation du temps de 24 heures)
la source
Arrêt planifié plus agréable
Si vous souhaitez arrêter votre Mac en toute sécurité à une heure planifiée, pensez à Power Manager ; il s'arrête bien sans laisser les applications bloquer le processus:
Il est très difficile pour une application ou un processus non autorisé de bloquer ces étapes.
Pourquoi pas
shutdown
L'utilisation
shutdown
forcera la fermeture de tous les processus sur votre Mac, y compris les applications graphiques. Pour de nombreuses applications, il s'agit d'un comportement agressif et ne donne pas à l'application beaucoup de possibilités d'enregistrer l'état ou les données.Assistant de planification
Power Manager inclut une tâche Assistant Planification pour arrêter un programme .
Divulgation: je travaille avec l'entreprise qui fabrique Power Manager.
la source
Je jetterais un œil à cette note technique d'Apple
la source