Por que os proprietários de empresas preferem bicicletas a soluções prontas? Ou sobre o systemd, parte 0

Feliz Ano Novo, Habr!







Em 1º de janeiro, todas as pessoas normais estão engajadas na procrastinação, na destruição do estoque estratégico de Olivier e em outras coisas não relacionadas ao estresse físico ou intelectual. Eu estava planejando entrar para o exército de ano novo, mas não funcionou!





Habr é o culpado por tudo!

…. ! , , — , . , !





  github. , ,  /usr/bin



. , , .









… ( sleep-)





©









, Domoticz . , watchdog cron.









… ( , )









5 , , Domoticz ,





©









?

systemd, «systemd », , , , , . systemd 100500 , , ( ;-), .





-

, , , - .





« »

(/etc/systemd/system/ssh-chat.service



):





[Unit]
Description=SSH Chat Service
After=network.target network-online.target

[Service]
#         
User=ssh-chat
Group=ssh-chat
Type=Simple
ExecStart=/usr/local/bin/ssh-chat --admin=/etc/ssh-chat/admins --bind=0.0.0.0:22 --log /var/log/ssh-chat.log --motd=/etc/ssh-chat/motd
#       .
# on-failure —       .
Restart=on-failure
#    ,  .
RestartSec=1
# Capablities  .    -  
#     (< 1000)
AmbientCapablities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multiuser.target
      
      



systemd-sysusers.service(/etc/sysusers.d/ssh-chat.conf



):





u ssh-chat - "SSH Chat user" /etc/ssh-chat
#  :
# u :  
# ssh-chat : username
# - :  UID[:GID]       UID/GID < 1000
# "SSH Chat user" : ,  "-",   .
# /etc/ssh-chat : Home Directory
#      -- login shell.   /usr/bin/nologin
      
      



:





sudo systemctl restart systemd-sysusers.service && sudo systemctl enable --now ssh-chat
      
      



« »

(/etc/systemd/system/domoticz.service



):





[Unit]
Description=Domoticz Daemon
After=network.target

[Service]
User=http
Group=http
#       
#  .  "+"     .
ExecStartPre=+/usr/bin/install -d -m 0700 -o http -g http /var/run/domoticz
ExecStart=/opt/domoticz/domoticz -www 8080 -pidfile /var/run/domoticz/domoticz.pid
PIDFile=/var/run/domoticz/domoticz.pid
WorkingDirectory=/opt/domoticz
#    ,     "",   5 .
RestartSec=5
Restart=on-failure

[Install]
WantedBy=multi-user.target
      
      



:





sudo systemctl enable --now domoticz
      
      



?

systemd, , - , . , , «»(transient) , and more, more... « » . :





man systemd.unit
man systemd.service
man systemd.exec
man systemctl
man sysusers.d
man systemd-sysusers
      
      



E um segredinho para um lanche. Um dos meus manas favoritos: man systemd.directives



- Um guia para todas as diretivas de configuração que você pode encontrar ao aprender sobre o systemd.





Mais uma vez Feliz Ano Novo, Habr! E use as ferramentas certas!





PS: Adicionado um link para o homem em systemd.exec . De alguma forma, esqueci um pouco dele.








All Articles