systemd cria serviço de raiz

0

Eu preciso criar um serviço systemd para iniciar alguns owfs-daemon automaticamente.

Eu posso iniciar manualmente o daemon com sudo /opt/owfs/bin/owfs --i2c=ALL:ALL --allow_other /mnt/1wire/ . Depois, há pastas e arquivos com as diferentes temperaturas criadas em /mnt/1wire . Não é possível iniciar o owfs-daemon como um usuário normal.

Agora tentei criar algum serviço systemd para iniciá-lo automaticamente (consulte o código a seguir).

[Unit]
Description=1-wire service
After=syslog.target
After=network.target

[Service]
Type=simple
ExecStart=/opt/owfs/bin/owfs --i2c=ALL:ALL --allow_other /mnt/1wire/

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Eu instalei o serviço e também posso iniciá-lo com sudo systemctl start owfs.service . Mas não há arquivos criados em /mnt/1wire . sudo systemctl status owfs.service mostra a seguinte saída.

● owfs.service - 1-wire service
   Loaded: loaded (/lib/systemd/system/owfs.service; enabled)
   Active: inactive (dead) since Sat 2016-02-27 13:11:13 UTC; 20s ago
  Process: 1025 ExecStart=/usr/local/bin/temperature/owfs.sh (code=exited, status=0/SUCCESS)
 Main PID: 1025 (code=exited, status=0/SUCCESS)

Feb 27 13:11:13 raspberrypi systemd[1]: Started 1-wire service.

Acho que o serviço não foi iniciado como usuário root. Quais modificações precisam fazer no meu arquivo de serviço para iniciar corretamente o daemon owfs?

EDIT: Aqui está o arquivo de serviço que está trabalhando com owfs .

[Unit]
Description=1-wire service

[Service]
Type=forking
ExecStart=/opt/owfs/bin/owfs --i2c=ALL:ALL --allow_other /mnt/1wire/

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300
    
por wewa 27.02.2016 / 14:19

1 resposta

2

Eu uso o seguinte:

[Unit]
Description=1-wire filesystem FUSE mount
Documentation=man:owfs(1)

[Service]
Type=forking
ExecStart=/usr/bin/owfs -uall --allow_other /run/owfs
ExecStop=/usr/bin/umount /run/owfs
RuntimeDirectory=owfs

A diferença real no tipo de serviço: do Manual :

If set to forking, it is expected that the process configured with ExecStart= will call fork() as part of its start-up. The parent process is expected to exit when start-up is complete and all communication channels are set up. The child continues to run as the main daemon process. This is the behavior of traditional UNIX daemons. If this setting is used, it is recommended to also use the PIDFile= option, so that systemd can identify the main process of the daemon. systemd will proceed with starting follow-up units as soon as the parent process exits.

    
por 27.02.2016 / 16:15