Outils pour utilisateurs

Outils du site


issue145:c_c

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue145:c_c [2019/06/06 23:49] d52frissue145:c_c [2019/06/07 15:43] (Version actuelle) auntiee
Ligne 1: Ligne 1:
 **One of the programs I’ve written that I use pretty much every day is something I call “media-tracker”. It’s a Ruby on Rails app that allows me to add/track movie (cinema and DVD) and game releases. Lately, I’ve also started tracking current episodes of shows from streaming services (Netflix, Crunchroll, Amazon Prime Video) due to the frequency with which I start a show, watch a chunk of it, and then notice it’s been removed from the streaming service. This way I can pick up where I’ve left off if the show pops up somewhere else or I buy a DVD of it. Long story short - I start this app in Tmux manually every time I log in. I’ve finally gotten tired of this, and instead created a small systemd service to run the script on boot.** **One of the programs I’ve written that I use pretty much every day is something I call “media-tracker”. It’s a Ruby on Rails app that allows me to add/track movie (cinema and DVD) and game releases. Lately, I’ve also started tracking current episodes of shows from streaming services (Netflix, Crunchroll, Amazon Prime Video) due to the frequency with which I start a show, watch a chunk of it, and then notice it’s been removed from the streaming service. This way I can pick up where I’ve left off if the show pops up somewhere else or I buy a DVD of it. Long story short - I start this app in Tmux manually every time I log in. I’ve finally gotten tired of this, and instead created a small systemd service to run the script on boot.**
  
-Un des programmes que j'ai écrits et j'utilise presque chaque jour est quelque chose que j'ai appelé « media-tracker ». C'est une appli Ruby on Rails qui me permet de d'ajouter/de pister un film (de cinéma ou de DVD) et les publications de jeux. Dernièrement, j"'ai aussi commencé à suivre les épisodes actuels des émissions sur les services de streaming (Netflix, Crunchroll, Amazon Prime Video) du fait  de la fréquence à laquelle je commence une émission, j'en regarde un bout, puis je m'aperçois qu'elle a été retirée du service de streaming. De cette façon, je peux détecter où je me suis arrêté si l'émission apparaît quelque part ailleurs ou si je l'achète en DVD. Pour faire court je démarre cette appli manuellement dans Tmux chaque fois que je me connecte. J'en ai eu finalement marre et, à la place, j'ai créé un petit service systemd pour lancer le script au démarrage.+Un des programmes que j'ai écrits et que j'utilise presque chaque jour est quelque chose que j'ai appelé « media-tracker ». C'est une appli Ruby on Rails qui me permet de d'ajouter/de pister un film (de cinéma ou de DVD) et les publications de jeux. Dernièrement, j'ai aussi commencé à suivre les épisodes actuels des émissions sur les services de streaming (Netflix, Crunchroll, Amazon Prime Video) du fait de la fréquence à laquelle je commence une émission, j'en regarde un bout, puis je m'aperçois qu'elle a été retirée du service de streaming. De cette façon, je peux détecter où je me suis arrêté si l'émission apparaît quelque part ailleurs ou si je l'achète en DVD. Pour faire courtje démarre cette appli manuellement dans Tmux chaque fois que je me connecte. J'en ai eu finalement marre et, à la place, j'ai créé un petit service systemd pour lancer le script au démarrage.
  
 **Notes **Notes
Ligne 11: Ligne 11:
 Notes Notes
  
-Cet article se concentrera sur l'installation et le fonctionnement de l'appli Rails par systemd. Si vous utilisez quelque chose de différent, les grandes lignes seront les mêmes, mais vous aurez peut-être des variables d'environnement en plus à ajuster.+Cet article se concentrera sur l'installation et le fonctionnement d'une appli Rails via systemd. Si vous utilisez quelque chose de différent, les grandes lignes seront les mêmes, mais vous aurez peut-être des variables d'environnement en plus à ajuster.
  
-Toutes les commandes ont été lancées sur un système ArchLinux. Si votre distribution a un format différent (par ex., systemctl <service> <command>), restez sur le format de votre distribution. Si vous hésitez, utilisez les commande que je liste et voyez quelles erreurs apparaissent.+Toutes les commandes ont été lancées sur un système ArchLinux. Si votre distribution a un format différent (c'est-à-dire systemctl <service> <command>), restez sur le format de votre distribution. Si vous hésitez, utilisez les commandes que je liste et voyez quelles erreurs apparaissent.
  
 **Getting set up **Getting set up
Ligne 24: Ligne 24:
 This is important, as you’ll need to tell Systemd what to set these variables to, otherwise commands will fail or simply not be found.** This is important, as you’ll need to tell Systemd what to set these variables to, otherwise commands will fail or simply not be found.**
  
-Paramétrage+Faire le paramétrage
  
 D'abord, vous voudrez bien noter où se trouvent vos fichiers et tous les chemins que vous devez connaître (tel que $GEM_HOME et la partie adéquate de votre $PATH). Vous pouvez trouver ces informations en lançant simplement ce qui suit dans votre terminal préféré : D'abord, vous voudrez bien noter où se trouvent vos fichiers et tous les chemins que vous devez connaître (tel que $GEM_HOME et la partie adéquate de votre $PATH). Vous pouvez trouver ces informations en lançant simplement ce qui suit dans votre terminal préféré :
Ligne 31: Ligne 31:
 echo $GEM_HOME echo $GEM_HOME
  
-C'est important, car vous devrez dire à Systemd à quelles valeurs paramétrer ces variables, sinon les commandes planteront ou ne seront simplement trouvées.+C'est important, car vous devrez dire à Systemd à quelles valeurs paramétrer ces variables, sinon les commandes planteront ou ne seront simplement pas trouvées.
  
 **Decide - user or system service? **Decide - user or system service?
Ligne 42: Ligne 42:
 Think about it and make your decision. Then skip ahead to the relevant section.** Think about it and make your decision. Then skip ahead to the relevant section.**
  
-À décider - Service utilisateur ou système+À décider - Service utilisateur ou service système ?
  
-Les systèmes les plus modernes ont systemd paramétré pour tourner à la fois dans une version système et dans une version spécifique à l'utilisateur. Elles sont séparées (et elles surveillent des dossiers différents). L'approche est similaire dans les deux cas, mais voici les principales différences :+Les systèmes les plus modernes ont paramétré systemd pour tourner à la fois dans une version système et dans une version spécifique à l'utilisateur. Elles sont séparées (et elles surveillent des dossiers différents). L'approche est similaire dans les deux cas, mais voici les principales différences :
  
 1. Les services de systemd à l'échelle du système, quand ils sont autorisés, tournent au démarrage. Les services basés sur l'utilisateur démarreront à la connexion. 1. Les services de systemd à l'échelle du système, quand ils sont autorisés, tournent au démarrage. Les services basés sur l'utilisateur démarreront à la connexion.
 2. Les services basés sur l'utilisateur ne peuvent être configurés pour fonctionner aussi en tant qu'autre utilisateur (par exemple, si vous voulez lancer Apache comme un utilisateur « html », ou similaire). Vous devrez alors utiliser la version à l'échelle du système. 2. Les services basés sur l'utilisateur ne peuvent être configurés pour fonctionner aussi en tant qu'autre utilisateur (par exemple, si vous voulez lancer Apache comme un utilisateur « html », ou similaire). Vous devrez alors utiliser la version à l'échelle du système.
  
-Réfléchissez-y et prenez votre décision. Puis, sautez à la section adéquate.+Réfléchissez-y et prenez votre décision. Puis, sautez à la section pertinente.
  
 **System-wide service **System-wide service
Ligne 63: Ligne 63:
 Le fichier media-tracker.service que j'ai créé ressemble au code présenté ci-dessous. Le fichier media-tracker.service que j'ai créé ressemble au code présenté ci-dessous.
  
-Comme vous pouvez le voir, il y a quelques points importants dans ce fichier. D'abord, je paramètre Type à « simple », ce qui signifie que je m'attends à ce que la commande ExecStart tourne dès que le service est actif. Il y a d'autres types (par exemple, si une commande démarre puis se termine, comme un script bash). Cependant, dans la plupart des cas, j'imagine que « simple » sera suffisant. Puisje règle l'utilisateur avec mon nom d'utilisateur, pour m'assurer que le service a accès à mes fichiers d 'applis et les Gems installés.+Comme vous pouvez le voir, il y a quelques points importants dans ce fichier. D'abord, je paramètre Type à « simple », ce qui signifie que je m'attends à ce que la commande ExecStart tourne dès que le service est actif. Il y a d'autres types (par exemple, si une commande démarre puis se termine, comme un script bash). Cependant, dans la plupart des cas, j'imagine que « simple » sera suffisant. Puis je règle l'utilisateur avec mon nom d'utilisateur, pour m'assurer que le service peut accéder à mes fichiers d'applis et aux Gems installés.
  
-En parlant de Gems, j'ai besoin de configurer les variables d'environnement pour pointer sur les chemins de mes répertoires .gem ; autrement, le service ne trouvera pas les commandes correctes. La plupart des articles que j'ai vu sur ce sujet affirment que « bash -lc » chargera le profil shell de l'utilisateur (et par conséquent les variables), mais ça ne semble pas être le cas dans ArchLinux. Si vous voulez tester pour voir si ces lignes sont nécessaires sur votre machine, supprimez-les simplement et vérifiez la sortie de votre service par journalctl.+En parlant de Gems, j'ai besoin de configurer les variables d'environnement pour pointer sur les chemins de mes répertoires .gem ; autrement, le service ne trouvera pas les commandes correctes. La plupart des articles que j'ai vus à ce sujet affirment que « bash -lc » chargera le profil shell de l'utilisateur (et par conséquent les variables), mais ça ne semble pas être le cas dans ArchLinux. Si vous voulez tester pour voir si ces lignes sont nécessaires sur votre machine, il suffit de les supprimer, puis de vérifier la sortie de votre service par journalctl.
  
 **Lastly, I set the WorkingDirectory (path to my app files), and then ExecStart to run bundle exec rails server. **Lastly, I set the WorkingDirectory (path to my app files), and then ExecStart to run bundle exec rails server.
Ligne 79: Ligne 79:
 To stop/disable the service, just replace start or enable with the word stop or disable. Similarly, you can run status to get the exit code and current status of the service.** To stop/disable the service, just replace start or enable with the word stop or disable. Similarly, you can run status to get the exit code and current status of the service.**
  
-Enfin, je paramètre le WorkingDirectory (répertoire de travail - le chemin vers mes fichiers d'applis) puis ExecStart pour tourner conjointement avec le serveur rails.+Enfin, je paramètre WorkingDirectory (répertoire de travail - le chemin vers mes fichiers d'applis)puis ExecStart pour tourner conjointement avec le serveur rails.
  
 Les autres options sont assez compréhensibles par elles-mêmes, ou n'ont pas besoin d'être modifiées. Les autres options sont assez compréhensibles par elles-mêmes, ou n'ont pas besoin d'être modifiées.
Ligne 89: Ligne 89:
 sudo systemctl enable media-tracker.service sudo systemctl enable media-tracker.service
  
-Pour arrêter/désactiver le service, remplacez simplement start ou enable par le mot stop ou disable. De même, vous pouvez lancer status pour obtenir le code de sortie et l'état actuel du service.+Pour arrêter/désactiver le service, il suffit de remplacer start ou enable par le mot stop ou disable. De même, vous pouvez lancer status pour obtenir le code de sortie et l'état actuel du service.
  
 **If you make changes to the service file, you may get a warning that the files need to be reloaded. To do that, run: **If you make changes to the service file, you may get a warning that the files need to be reloaded. To do that, run:
Ligne 121: Ligne 121:
 Le fichier que j'ai créé pour un service spécifique à un utilisateur ressemble au code présenté ci-dessus. Le fichier que j'ai créé pour un service spécifique à un utilisateur ressemble au code présenté ci-dessus.
  
-La principale différence entre lui et le service à l'échelle du système est l'absence de la valeur « User » (Utilisateur).+La principale différence entre lui et le fichier service à l'échelle du système est l'absence de la valeur « User » (Utilisateur).
  
 **As I said in the section above (for anyone jumping directly to this section): **As I said in the section above (for anyone jumping directly to this section):
Ligne 129: Ligne 129:
 4. The other options in the file are self-explanatory, or, in the case of WantedBy, shouldn’t need to be adjusted.** 4. The other options in the file are self-explanatory, or, in the case of WantedBy, shouldn’t need to be adjusted.**
  
-Comme je l'ai dit dans la section au-dessus (pour tous ceux qui ont sauté directement à cette section) :+Comme je l'ai dit dans la section au-dessus (pour tous ceux qui sont passés directement à cette section) :
 1. Paramétrez les variables d'environnement dont vous aurez besoin pour ce service. 1. Paramétrez les variables d'environnement dont vous aurez besoin pour ce service.
 2. Réglez l'option WorkingDirectory sur le dossier du projet. 2. Réglez l'option WorkingDirectory sur le dossier du projet.
-3. Le /bin/bash -lc devrait lancer le shell bash comme login à la connexion, mais, sous ArchLinux, ça ne semble pas remplir les variables d'environnement ; c'est pourquoi le point 1 existe. +3. Le /bin/bash -lc devrait lancer le shell bash comme shell à la connexion, mais, sous ArchLinux, ça ne semble pas remplir les variables d'environnement ; c'est pourquoi le point 1 existe. 
-4. Les autres options dans le fichier se comprennent par elles-mêmes ou, cas de WantedBy, elle n'pas besoin d'être ajustée.+4. Les autres options dans le fichier se comprennent d'elles-mêmes ou, dans le cas de WantedBy, ne devrait pas nécessiter d'ajustement
  
 **Running the service **Running the service
Ligne 149: Ligne 149:
 systemctl --user start media-tracker systemctl --user start media-tracker
  
-Noter l'absence de sudo et l'argument « --user ». Les autres commandes sont otutes sur lemême format - stop, enable, disable et status. Remplacez simplement le mot start par l'option que vous souhaitez.+Notez l'absence de sudo et l'argument « --user ». Les autres commandes sont toutes sur le même format - stop, enable, disable et status. Remplacez simplement le mot start par l'option que vous souhaitez.
  
 **Debug **Debug
Ligne 165: Ligne 165:
 Conclusion Conclusion
  
-J'espère que cet article est utile à tous ceux qui, comme moi, ont un programme personnalisé qu'ils veulent faire tourner à chaque connexion ou démarrage. Il semble que beaucoup d'articles sur des sujets comme ceux de cette série se concentrent sur les services à l'échelle du système et c'est la raison pour laquelle j'ai inclus aussi les instructions pour les services spécfiques à un utilisateur. Si vous tombez sur des problèmes, ou si vous avez des améliorations à m'offrir, n'hésitez pas à m'envoyer un mail à lswest34+fcm@gmail.com. De même, si vous avez des demandes pour des articles, dirigez-les vers la même adresse mail.+J'espère que cet article est utile à tous ceux qui, comme moi, ont un programme personnalisé qu'ils veulent lancer à chaque connexion ou au démarrage. Il semble que beaucoup d'articles sur des sujets comme ceux de cette série se concentrent sur les services à l'échelle du système c'est la raison pour laquelle j'ai inclus aussi les instructions pour les services spécfiques à un utilisateur. Si vous rencontrez des problèmes, ou si vous avez des améliorations à m'offrir, n'hésitez pas à m'envoyer un mail à lswest34+fcm@gmail.com. De même, si vous avez des demandes pour des articles, dirigez-les vers la même adresse mail.
  
  
Ligne 176: Ligne 176:
 Pour aller plus loin Pour aller plus loin
  
-https://wiki.archlinux.org/index.php/systemd - L'article d'ArchWiki sur Systemd+https://wiki.archlinux.org/index.php/systemd - L'article d'ArchWiki sur Systemd.
  
 https://wiki.archlinux.org/index.php/Systemd/User - L'article d'ArchWiki sur Systemd basé sur l'utilisateur. https://wiki.archlinux.org/index.php/Systemd/User - L'article d'ArchWiki sur Systemd basé sur l'utilisateur.
issue145/c_c.1559857788.txt.gz · Dernière modification : 2019/06/06 23:49 de d52fr