Otros aspectos ************** Se recogen bajo este epígrafe otros aspectos interesantes relacionados con la ejecución de servicios con :ref:`SystemD `. .. _systemd.user: Servicios de usuario ==================== Hasta ahora hemos visto como configurar y gestionar servicios de sistema, ya que al usar :ref:`systemctl ` se sobrentiende la opción :kbd:`--system`. Sin embargo, los usuarios particulares tienen también la posibilidad de crear, configurar y gestionar sus propios servicios. Para ello ha de tenerse presente lo siguiente: #. El gestor del usuario se crea al acceder el usuario al sistema. En consecuencia, ningún servicio particular de usuario se activará hasta que éste no acceda. #. La gestión es idéntica a la vista para el sistema, pero habrá que añadir la opción :kbd:`--user`. #. Cambian las rutas en que deben almacenarse las unidades: + Para servicios que instala el administrador y se les quiere hacer disponibles a varios usuarios, se usa la ruta :file:`/etc/systemd/user/`. + Para servicios exclusivos de un usuario que él mismo instala, se usa la ruta :file:`~/.config/systemd/user`. Para consultar un ejemplo de instalación de un servicio de usuario, échele un ojo a :ref:`este ejemplo sobre cómo crear un timer `. .. _systemd-run: .. index:: systemd-run Servicios efímeros ================== Los :dfn:`servicios efímeros` (*transient* en su terminología original) son servicios de un sólo uso que, además, construimos directamente en la propia línea de órdenes. Por ejemplo, esta orden:: $ systemd-run --user --service-type=oneshot sh -c 'date >> /tmp/registro.log' ejecuta un servicio de usuario (:kbd:`--user`) de tipo *oneshot* que se limita a escribir la fecha actual en un archivo de registro, porque una vez que se escriben las opciones que se consideran pertinentes a partir del primer argumento posicional se sobrentiende que se escribe la tarea\ [#]_. :program:`SystemD` se encarga de crear al vuelo la unidad y almacenarla transitoriamente hasta que se ejecuta\ [#]_. .. note:: La unidad creada tiene un nombre aleatorio que muy probablemente sea irrelevante. Si queremos fijar uno en particular, podemos añadir la opción :kbd:`--unit`:: $ systemd-run --unit=registrador --user --service-type=oneshot sh -c 'date >> /tmp/registro.log' Esto tiene más utilidad cuando utilicemos :command:`systemd-run` para :ref:`diferir la tarea `. El ejemplo, tal y como está escrito, no tiene excesiva utilidad, pero puede complicarse incluyendo el |UID|/|GID| de quien será su ejecutante (en caso de que lo ejecutemos como servicio de sistema), limitaciones (aunque no hemos tratado los :manpage:`systemd.slice`) o programación de la tareas (que se tratará :ref:`más adelante `). .. rubric:: Notas al pie .. [#] La orden se ha escrito: .. code-block:: sh sh -c 'date >> /tmp/registro.log' y no, simplemente: .. code-block:: sh date >> /tmp/registro.log porque escrita del segundo modo la redirección no afecta a la orden :ref:`date `, sino a la propia orden :command:`systemd-run`. .. [#] En este caso, inmediatamente. .. |UID| replace:: :abbr:`UID (User IDentifier)` .. |GID| replace:: :abbr:`GID (Group IDentifier)`