Isso responde ao que você precisa?
systemctl --user start unit.service
Eu tenho um serviço de usuário systemd que funciona como esperado. É iniciado assim:
systemctl start test@user
O problema é que preciso executar esse serviço em um temporizador, possivelmente para vários usuários. Não parece haver uma maneira de especificar um usuário no próprio timer ou uma maneira de passar o nome de usuário com a notação @.
Aqui está o temporizador:
[Unit]
Description=Test (runs once every 24 hours)
[Timer]
OnUnitActiveSec=24h
Persistent=true
[email protected]
[Install]
WantedBy=timers.target
O que me confunde é o que colocar na "Unidade=". Se eu colocar em "[email protected]" ele funciona, mas então ele sempre será executado como um único usuário, derrotando o ponto de ter um serviço multiusuário. Usar "test @ .service" inicia o temporizador, mas "systemctl status test @ user" mostra-o como sempre inativo, mesmo com o timer configurado para o intervalo de 1min.
Não sei como listar todas as instâncias em execução de um determinado serviço systemd, por isso não sei se o serviço "test @" está sendo executado como um usuário diferente quando um timer executa o serviço sem o "@user".
Qual é a maneira correta de iniciar os serviços do usuário com um timer? Idealmente, os usuários devem ser capazes de criar e gerenciar seus próprios serviços, bem como os timers que acompanham esses serviços.
Isso responde ao que você precisa?
systemctl --user start unit.service
Tags services systemd arch-linux