AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 792445
Accepted
sfzhang
sfzhang
Asked: 2025-03-14 17:35:49 +0800 CST2025-03-14 17:35:49 +0800 CST 2025-03-14 17:35:49 +0800 CST

O usuário systemd saiu e removeu os semáforos

  • 772

Eu uso um systemdserviço para iniciar vários processos quando o Ubuntu 20.04 é inicializado.

# MyApp start app service
[Unit]
Description=MyApp start service
Requires=network-online.target
After=network-online.target

[Service] 
Type=simple
ExecStartPre=/bin/sleep 20
ExecStart=/etc/init.d/MyApp.sh start
ExecStop=/etc/init.d/MyApp.sh stop
LimitMEMLOCK=infinity
LimitCORE=infinity
RemainAfterExit=yes

User=admin

[Install]
#WantedBy=multi-user.target
#WantedBy=graphical.target
WantedBy=basic.target

Todos os meus processos iniciam após a inicialização do sistema. No entanto, após alguns minutos, o nível de usuário systemdsai e remove todos os semáforos criados pelos meus processos.

Parece que posso definir RemoveIPC=No configuration /etc/systemd/logind.confpara impedir que o usuário systemdremova os semáforos.

Mas por que o usuário systemdsaiu? Devo usar o comando sudo loginctl enable-linger adminpara impedir que ele saia?

Obrigado!

ubuntu
  • 1 1 respostas
  • 93 Views

1 respostas

  • Voted
  1. Best Answer
    Stewart
    2025-03-31T15:50:58+08:002025-03-31T15:50:58+08:00

    Com base no fato de que:

    1. Você está considerandoenable-linger
    2. Você comentou WantedBy=alvos apropriados para o --systemônibus, substituindo-os por um alvo questionável que é comum aos ônibus --systeme --user.
    3. Você está usandoExecStartPre=/bin/sleep 20

    Tenho quase certeza de que você está executando sua unidade no --userbarramento. Neste caso, User=adminé ignorado, e um alvo apropriado é WantedBy=default.targetpara serviços não GUI ou WantedBy=graphical-session.targetpara serviços GUI. Já que você WantedBy=graphical.targetcomentou, imagino que você deva usar WantedBy=graphical-session.target.

    Mas a questão principal é Type=simplee RemainAfterExit=yes.

    Type=simplefará com que a unidade pare ao MyApp.sh startsair. RemainAfterExit=yesSó faz sentido Type=oneshotquando você espera que a unidade ExecStart=saia mais cedo, mas você quer que o status da unidade permaneça "em execução" até que você execute uma ação de parada. Como Marcus Muller sugere, Type=forkingé provavelmente o que você quer, já que os argumentos iniciar/parar se assemelham a um daemon SysV tradicional.

    No geral, isso é o que eu faria:

    # /etc/systemd/user/myapp.service
    [Unit]
    Description=MyApp start service
    
    [Service] 
    Type=forking
    ExecStart=/etc/init.d/MyApp.sh start
    ExecStop=/etc/init.d/MyApp.sh stop
    
    [Install]
    WantedBy=graphical-session.target
    

    Observe o caminho do serviço. Ele está no */user/diretório. Então systemctl --user enable --now myapp.service(não use sudo). Isso fará com que o programa inicie somente APÓS o usuário logado ter uma sessão de desktop.

    Adicione esses Limit*=itens novamente somente depois de ter certeza de que tudo está funcionando (e somente se necessário). O recurso network-online.targetnão está disponível no barramento do usuário, então você só precisa garantir que o aplicativo tenha algum recurso para se redefinir quando ocorrer connect()algum bind()erro.

    • 1

relate perguntas

  • Torne as configurações do teclado Apple persistentes em ../hid_apple/parameters/

  • traçar gráfico 2D com pontos de um arquivo

  • Como faço para verificar se estou usando 9.9.9.9 para DNS?

  • Instale várias distribuições Linux em paralelo

  • O OpenVPN auto-compilado não inicia a partir do systemd

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve