Estou executando o Ubuntu 16.04 em um laptop HP antigo
Instalei algum software para criar um pequeno servidor plex caseiro. Eu instalei o sonarr, o radarr, o dilúvio, o jackett, etc etc e todos eles são iniciados automaticamente na inicialização!
Alguns dias atrás, eu decidi instalar o rclone também e criei (graças a um projeto do GitHub) algumas pastas que devem ser montadas em cada inicialização iniciando um script (eu o inicio por meio da escrita do terminal sudo ~/bin/check.mount
). Sonarr e Radarr são configurados para baixar coisas via diluge para uma pasta temporária e depois exportá-las para uma dessas duas pastas montadas.
O problema é que, no momento em que inicio manualmente o script, o Sonarr / Radarr já está em execução e não consegue encontrar suas pastas raiz, portanto, eles me dão um erro.
O que eu gostaria de fazer é criar um mountgdrive.service (serviço ou o que for necessário) para iniciar automaticamente o script check.mount e, se isso não for suficiente, inserir um atraso no sonarr.service e radarr.service! Isso é possível?
Eu escrevi isso com sudo nano /etc/systemd/system/mountgdrive.service
[Unit]
Description=MountSmokeScreen
After=network.target
[Service]
Type=oneshot
ExecStart=/home/samsepioldoloresh4ze/bin/check.mount
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
e adicionado a sonarr.service e radarr.service mountgdrive.service
no After=
bit, como este
[Unit]
Description=Sonarr
After=syslog.target network.target mountgdrive.service
[Service]
User=samsepioldoresh4ze
etcetc
....
Mas não está funcionando! Sonarr e Radarr começam normalmente, mas as unidades não estão montadas! O que estou fazendo errado?
Além disso, o rtcwake não funciona no meu laptop - acho que é um problema de kernel ?! Existe uma maneira de consertar isso?
sonarr.service
eradarr.service
será executado depois demountgdrive.service
instalado e funcionando?mountgdrive.service
funciona mas não faz nada (não montar as unidades) e, em seguida,sonarr.service
eradarr.service
funcionar normalmente porque ubuntu executadomountgdrive.service
.mount
unidades . Se tudo o que vocêmountgdrive.service
está fazendo é montar um diretório ou similar, você poderá alterá-lo para um.mount
serviço. Como o torna mais confiável, especialmente porque você tem dependências.Respostas:
O motivo pelo qual você está tendo esse problema é porque você está usando
After=
enquanto também precisaRequires=
ouWants=
.Existem três propriedades principais para gerenciar dependências. Vou tentar explicar brevemente a diferença, mas você pode encontrar mais detalhes em [Unidade] Seção Opções | freedesktop.org
After=
Esta opção define apenas a ordem das unidades, não garante que o serviço tenha terminado de iniciar.
Wants=
Esta opção permite que a sua unidade inicie somente após a conclusão da inicialização de outra unidade. (Não importa se foi iniciado com êxito ou não)
Requires=
Assim como
Wants=
, no entanto, isso fará com que sua unidade inicie somente depois que as dependências forem iniciadas com êxito.Você também pode usar o inverso de cada uma dessas opções.
After=
é invertido porBefore=
Wants=
é invertido porWantedBy=
Requires=
é invertido porRequiredBy=
Para corrigir seu problema, você precisa alterar o serviço de montagem para:
Ou você pode adicionar
Wants=mountgdrive.service
às unidadessonarr.service
eradarr.service
.Você pode fazer isso sem modificar os arquivos padrão executando o seguinte (você precisa fazer o mesmo para
radarr.service
):E insira o seguinte:
Nota: Você pode substituir
Wants=
porRequires
ouWantedBy=
comRequiredBy=
se não desejar que os dois serviços iniciem semountgdrive.service
falharem (emboraWants=
seja geralmente suficiente e até recomendado nos documentos).EDIT: As opções
WantedBy
eRequiredBy
só podem ser usadas na[Install]
seção. (Obrigado @Yankee )fonte
Wants=
eWantedBy=
, eu definitivamente vou usá-los! Eu recebo este erro embora quando eu reiniciar o laptop i.imgur.com/a3LE3G9.pngCan't open /.config/SmokeScreen/smokescreen.conf
. Talvez você tenha "~ / .config / ..." no script yoru. Você deve substituir o til (~
) com o caminho completo ie/home/you_user_name/.config/....
(Ou usar caminhos relativos ao seu script)$HOME
não está disponível no momento da inicialização, porque ainda não há um usuário conectado.WantedBy=
estar na[Unit]
seção? Eu pensei que só poderia entrar[Install]
.