Est-il possible d'exécuter manuellement une seule unité de service couplée par minuterie systemd à des fins de test?

21

J'ai un ensemble de minuterie / unité de service qui devrait fonctionner une fois par jour dans certaines --userconditions. Il apparaît avec systemctl --user statuset obtient un journal de connexion, mais une partie de la commande échoue.

Il semble que quelque chose dans la commande ne soit pas interprété correctement. Je veux futz avec le fichier d'unité et exécuter le service, examiner le journal, etc. pour déboguer le problème; cependant éditer la minuterie pour déclencher une minute dans le futur, attendre et vérifier le journal est ... fastidieux.

Peut faire quelque chose comme systemctl --user execute xxxxxx.servicesimplement exécuter la chose dang comme si la minuterie se déclenchait?

Gus
la source

Réponses:

12

Vous pouvez activer n'importe quelle unité manuellement, à moins qu'elle ne contienne une directive RefuseManualStart=yeset / ou RefuseManualStop=yes(qui font exactement ce qu'elles disent). Il suffit d'émettre systemctl --user start <whatever>(etsystemctl --user stop <whatever> de faire le contraire).

Pour citer systemctl (1) :

début MOTIF ...

Démarrez (activez) une ou plusieurs unités spécifiées sur la ligne de commande.

<...>

Arrêtez PATTERN ...

Arrêtez (désactivez) une ou plusieurs unités spécifiées sur la ligne de commande.

intelfx
la source
Ne fonctionne pas ici:Failed to restart {foo}.service: Operation refused, unit {foo}.service may be requested by dependency only.
eMPee584
1
@ eMPee584 Depuis que cette réponse a été écrite, systemd a gagné de nouvelles directives RefuseManualStart=et RefuseManualStop=(qui font exactement ce qu'elles disent). J'ai mis à jour ma réponse pour le mentionner.
intelfx