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 / computer / Perguntas / 1529547
Accepted
JeremiahDuane
JeremiahDuane
Asked: 2020-03-02 18:12:23 +0800 CST2020-03-02 18:12:23 +0800 CST 2020-03-02 18:12:23 +0800 CST

Falha no serviço Linux

  • 772

Estou escrevendo um teste de serviço linux como precursor de um projeto que estou desenvolvendo. Estou tentando entender como funciona e por que está falhando agora.

Meu objetivo atual é criar um serviço linux (Ubuntu especificamente no meu caso) que monitore um arquivo de texto, check.txt, para alterações. O conteúdo atual deste arquivo é simplesmente a palavra "yes" na primeira linha (embora sem aspas). Eu quero que meu serviço mude a palavra "sim" para "não" e mude de volta para "não" se eu entrar e mudar para "sim" a qualquer momento. Isso é o que eu tenho até agora.


Meu arquivo de serviço: trial.service

[Service]
ExecStart=/home/jeremiahdgage/trial.sh
User=root
Group=root

Sei que usar root aqui não é a melhor prática, mas será necessário mais tarde, então estou deixando por enquanto.


Meu arquivo bash: trial.sh

#!/bin/bash
while true
do
        line=$(head -n 1 filename)

        if [ "$line" == "yes" ]
                then
                sudo sed -i 's/yes/no/g' /home/jeremiahdgage/check.txt
        fi

        echo changes made at $(date)
        sleep 1
done

while truesignifica que dura para sempre, lineé a primeira linha do meu documento. Eu verifico a primeira linha para ver se é "sim" e uso sedpara trocá-la por "não". Eu fecho meu if, ecoo o tempo e durmo por 1 ms antes de repetir o processo novamente.

No entanto, algo está errado porque meu serviço falha ao iniciar... Se eu verificar meu status com systemctl status trial.service, ele diz que há um erro de "permissão negada" no Exec.

O que eu fiz errado?


Atualizar:

Service now starts but bash code does not work. 

linux bash
  • 1 1 respostas
  • 75 Views

1 respostas

  • Voted
  1. Best Answer
    filbranden
    2020-03-02T22:10:51+08:002020-03-02T22:10:51+08:00

    Parece que você está perdendo permissões de execução em seu script.

    Você pode consertar isso com:

    $ chmod +x trial.sh
    

    Esse é um caso em que mesmo executando como root não funcionará, o root pode ignorar as permissões, mas o arquivo em si precisa ser executável para ser executado.

    (Executar como root significa que as permissões do próprio diretório inicial não importam na maioria dos casos, embora em alguns casos, como o diretório inicial montado por NFS ou talvez um módulo de segurança como AppArmor ou SELinux possa impedir que o root acesse o diretório inicial.)

    Uma boa primeira etapa para solucionar esse problema é tentar executar esse script diretamente, não no systemd, a partir de um shell raiz. Se você fizesse isso, notaria que falharia pelo mesmo motivo:

    # cd /home/jeremiahdgage/
    # ./trial.sh
    bash: ./trial.sh: Permission denied
    

    Isso pode dizer que executá-lo como um serviço não é realmente o problema, já que você também o reproduz a partir do shell.

    • 1

relate perguntas

  • Notificar-enviar notificações aparecendo na janela

  • execute o contêiner do docker como root

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

  • como abrir um arquivo de escritório do WSL

Sidebar

Stats

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

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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