Systemd

В директории /etc/systemd/system/ или /lib/systemd/system/ создадим юнита my-unit.service с его содержимым

    [Unit]
    Description=This-name
    After=syslog.target
    After=network.target
    
    [Service]
    Type=simple
    User=bednyakov
    WorkingDirectory=/path/to/workdir/
    ExecStart=/usr/bin/python3.8 /path/to/app.py
    RestartSec=10
    Restart=always
     
    [Install]
    WantedBy=multi-user.target

Далее нам необходимо перезагрузить конфигурации сервисов

    bednyakov@ubuntu:~$ sudo systemctl daemon-reload

Запустим нашего демона

    bednyakov@ubuntu:~$ sudo systemctl enable my-unit.service
    bednyakov@ubuntu:~$ sudo systemctl start my-unit.service

Проверим его состояние.
Вывод должен быть примерно следующим:

    bednyakov@ubuntu:~$ sudo systemctl status my-unit.service 
     my-unit.service - This-name
     Loaded: loaded (/lib/systemd/system/my-unit.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-09-25 15:09:53 MSK; 24h ago
   Main PID: 148464 (python3.8)
      Tasks: 3 (limit: 4496)
     Memory: 22.1M
     CGroup: /system.slice/my-unit.service
             └─148464 /usr/bin/python3.8 /path/to/app.py

сен 25 15:09:53 ubuntu systemd[1]: Started This-name.

Посмотреть список всех модулей, о которых знает systemd

    systemctl list-units

По умолчанию показывает только активные, чтобы посмотреть все, необходимо добавить параметр --all.
Можно задать фильтры по типу:

    systemctl list-units --all --state=inactive
    systemctl list-units --type=service

Для просмотра содержимого сервиса:

    systemctl cat my-unit.service

Для его редактирования

    systemctl edit my-unit.service

Чтобы отключить запуск службы, ее можно "замаскировать"

    sudo systemctl mask my-unit.service

В этом случае службу не получится запустить; чтобы сделать доступной, нужно использовать unmask

NetworkNamespacePath

В данном примере укажем сервису nginx работать с сетевым неймспейсом mynamespace используя опцию NetworkNamespacePath

    root@veth:~# systemctl cat nginx
    # /lib/systemd/system/nginx.service
    [Unit]
    Description=A high performance web server and a reverse proxy server
    Documentation=man:nginx(8)
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/run/nginx.pid
    NetworkNamespacePath=/var/run/netns/mynamespace
    ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
    ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
    ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
    ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
    TimeoutStopSec=5
    KillMode=mixed
    
    [Install]
    WantedBy=multi-user.target
    root@veth:~#