Shell script para inicializar Conky no systemd

1. Shell script para inicializar Conky no systemd

G30RG3
G30RG3

(usa Outra)

Enviado em 09/09/2015 - 18:23h

Boa tarde pessoal,

Após leitura do init systemd resolvi criar um daemon para inicializar o conky no systemd, já tenho um script que inicializa o conky, então o que quero fazer é exclusivo para o systemd, estudo do systemd e este init.
Após apagart meu script que inicializa o conky pelo mateproperties fiz o seguinte:
Criei o arquivo de texto conkystart.service dentro de /etc/systemd/system com a seguinte configuração:
---------------------
#Inicialização conky como serviço junto ao sistema no systemd
[Unit]
Description=Conky start

[Service]
Type=oneshot
ExecStart=/usr/bin/conkystart_service.sh

[Install]
WantedBy=multi-user.target
----------------------------
e apontando para o script /usr/bin/conkystart_service.sh com oseguinte texto:
----------------------------
#!/bin/bash -

sleep 5 && conky;
----------------------------
Porém não funciona, já dei permissão chmod 755 no script e habilitei com o systemctl enable .service, por vezes aparecem mensagens de erro na habilitação do serviço, agora fui pegar e não apareceu, então segue o resultado do status:
xxxxx@xxxxx:/etc/systemd/system$ sudo systemctl status -l conkystart.service
● conkystart.service - Conky start
Loaded: loaded (/etc/systemd/system/conkystart.service; enabled)
Active: failed (Result: exit-code) since Wed 2015-09-09 18:10:40 BRT; 11min ago
Main PID: 2086 (code=exited, status=134)

Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: conky: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.
Sep 09 18:10:40 Debye systemd[1]: conkystart.service: main process exited, code=exited, status=134/n/a
Sep 09 18:10:40 Debye systemd[1]: Failed to start Conky start.
Sep 09 18:10:40 Debye systemd[1]: Unit conkystart.service entered failed state.
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: /usr/bin/conkystart_service.sh: line 3: 2089 Aborted conky
-------------------------------
Desde já agradeço a ajuda e peço desculpas se postei no lugar errado! :-)





  


2. Re: Shell script para inicializar Conky no systemd

edps
edps

(usa Slackware)

Enviado em 09/09/2015 - 19:38h

Eu não uso systemd, porém, não entendi o porque de você querer iniciar o Conky como um serviço.

Não resolve você adicioná-lo na inicialização de seu ambiente preferido?


3. Re: Shell script para inicializar Conky no systemd

G30RG3
G30RG3

(usa Outra)

Enviado em 09/09/2015 - 19:44h

edps escreveu:

Eu não uso systemd, porém, não entendi o porque de você querer iniciar o Conky como um serviço.

Não resolve você adicioná-lo na inicialização de seu ambiente preferido?


Colocar o conky na inicialização do ambiente eu já sei, no caso é colocar pra iniciar como serviço pra eu poder ir estudando co systemd como init do debian, minha distro preferida, um exemplo pra quando pintar outro serviço eu já saber como se faz entendeu?! Considere como um exercício prático! :-)






4. Re: Shell script para inicializar Conky no systemd

edps
edps

(usa Slackware)

Enviado em 09/09/2015 - 20:02h


eca! systemd? tô fora! rsrs


5. Re: Shell script para inicializar Conky no systemd

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/09/2015 - 20:16h

Quando usava Arch, lembro que para ativar serviços na inicialização, usava o parâmetro enable;

sudo sistemctl enable conkystart.service


EDIT: achei esse link, pode ser útil:
https://kezhong.wordpress.com/2011/11/19/creating-my-own-systemd-service-files-on-fedora-16x86_64/

EDIT 2: Olhando o log,

Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: conky: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.
Sep 09 18:10:40 Debye systemd[1]: conkystart.service: main process exited, code=exited, status=134/n/a
Sep 09 18:10:40 Debye systemd[1]: Failed to start Conky start.
Sep 09 18:10:40 Debye systemd[1]: Unit conkystart.service entered failed state.
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: /usr/bin/conkystart_service.sh: line 3: 2089 Aborted conky


O systemd inicializa os serviços antes de inicializar o gerenciador de login (kdm/gdm/lighdm), o conky depende do X para ser inicializado. Experimente fazer com outro programa.


6. Re: Shell script para inicializar Conky no systemd

G30RG3
G30RG3

(usa Outra)

Enviado em 09/09/2015 - 22:13h

ru4n escreveu:

Quando usava Arch, lembro que para ativar serviços na inicialização, usava o parâmetro enable;

sudo sistemctl enable conkystart.service


EDIT: achei esse link, pode ser útil:
https://kezhong.wordpress.com/2011/11/19/creating-my-own-systemd-service-files-on-fedora-16x86_64/

EDIT 2: Olhando o log,

Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: conky: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.
Sep 09 18:10:40 Debye systemd[1]: conkystart.service: main process exited, code=exited, status=134/n/a
Sep 09 18:10:40 Debye systemd[1]: Failed to start Conky start.
Sep 09 18:10:40 Debye systemd[1]: Unit conkystart.service entered failed state.
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: /usr/bin/conkystart_service.sh: line 3: 2089 Aborted conky


O systemd inicializa os serviços antes de inicializar o gerenciador de login (kdm/gdm/lighdm), o conky depende do X para ser inicializado. Experimente fazer com outro programa.


Eu dei o enable antes de dar start no .service e reinicializar, se depende do X talvez se colocar a opção de inicializar depois do X ele funcione não? Só que quando tirei o status o X já estava funcionando e mesmo assim ele deu esse erro.




7. Re: Shell script para inicializar Conky no systemd

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/09/2015 - 22:35h

O systemd tem uma espécie de "lista de prioridades",

http://www.freedesktop.org/software/systemd/man/systemd.exec.html


Nice=
Sets the default nice level (scheduling priority) for executed processes. Takes an integer between -20 (highest priority) and 19 (lowest priority). See setpriority(2) for details.


Colocando o conky numa prioridade mais baixa que o X (teria que fuçar no .service responsável pelo X para descobrir o nível de prioridade), pode funcionar.


8. Re: Shell script para inicializar Conky no systemd

Perfil removido
removido

(usa Nenhuma)

Enviado em 09/09/2015 - 22:48h

ru4n escreveu:
....

O systemd inicializa os serviços antes de inicializar o gerenciador de login (kdm/gdm/lighdm), o conky depende do X para ser inicializado. Experimente fazer com outro programa.


Não necessariamente, uma coisa bacana nele, é que pode indicar a um serviço que inicie apenas se outro estiver em execução ou junto com outros serviço.

Para isso pode usar os parâmetros no arquivo de configuração do serviço:
 Requires=<serviço>.service 

ou
After=<serviço>.service 


*Mas neste caso, salvo o conky funcione nativamente como daemon, eu acredito que não funcionara, pois ele le um arquivo de configuração para cada instancia e roda sobre o X, na sessão do usuário.

Mias facil testar com um script.


---------------------------------
Keep it Simple, Stupid



9. Re: Shell script para inicializar Conky no systemd

G30RG3
G30RG3

(usa Outra)

Enviado em 10/09/2015 - 10:20h

erisrjr escreveu:

ru4n escreveu:
....

O systemd inicializa os serviços antes de inicializar o gerenciador de login (kdm/gdm/lighdm), o conky depende do X para ser inicializado. Experimente fazer com outro programa.


Não necessariamente, uma coisa bacana nele, é que pode indicar a um serviço que inicie apenas se outro estiver em execução ou junto com outros serviço.

Para isso pode usar os parâmetros no arquivo de configuração do serviço:
 Requires=<serviço>.service 

ou
After=<serviço>.service 


*Mas neste caso, salvo o conky funcione nativamente como daemon, eu acredito que não funcionara, pois ele le um arquivo de configuração para cada instancia e roda sobre o X, na sessão do usuário.

Mias facil testar com um script.


---------------------------------
Keep it Simple, Stupid


Pensei nisso mesmo, colocando o Xorg no after, o script foi minha primeira tentativas e não deu certo, ele constinua a dizer que falhou na ativação do serviço.






10. Re: Shell script para inicializar Conky no systemd

G30RG3
G30RG3

(usa Outra)

Enviado em 10/09/2015 - 18:04h

ru4n escreveu:

Quando usava Arch, lembro que para ativar serviços na inicialização, usava o parâmetro enable;

sudo sistemctl enable conkystart.service


EDIT: achei esse link, pode ser útil:
https://kezhong.wordpress.com/2011/11/19/creating-my-own-systemd-service-files-on-fedora-16x86_64/

EDIT 2: Olhando o log,

Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: Conky: $HOME environment variable doesn't exist
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: conky: malloc.c:2372: sysmalloc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 *(sizeof(size_t))) - 1)) & ~((2 *(sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long) old_end & pagemask) == 0)' failed.
Sep 09 18:10:40 Debye systemd[1]: conkystart.service: main process exited, code=exited, status=134/n/a
Sep 09 18:10:40 Debye systemd[1]: Failed to start Conky start.
Sep 09 18:10:40 Debye systemd[1]: Unit conkystart.service entered failed state.
Sep 09 18:10:40 Debye conkystart_service.sh[2086]: /usr/bin/conkystart_service.sh: line 3: 2089 Aborted conky


O systemd inicializa os serviços antes de inicializar o gerenciador de login (kdm/gdm/lighdm), o conky depende do X para ser inicializado. Experimente fazer com outro programa.


Após duas tentativas porque tinham ficado uns arquivos para trás consegui fazer o serviço aparecer como "ativo" mas o conky não sobe ainda, já tentei colocando o script inicial e colocando um linha como comando conky conforme manda no maual, mas nenhuma das duas maneiras sobe o conky, também tentei colocar ele pra inicializar após dois targets, o graphical.target e o multi-user.target e nada:
[Unit]
Description=Start conky in boot
After=graphical.target

[Service]
Type=simple
ExecStart=/bin/sh -c 'conky'

[Install]
WantedBy=multi-user.target






11. Re: Shell script para inicializar Conky no systemd

Perfil removido
removido

(usa Nenhuma)

Enviado em 10/09/2015 - 18:59h

G30RG3 escreveu:
Após duas tentativas porque tinham ficado uns arquivos para trás consegui fazer o serviço aparecer como "ativo" mas o conky não sobe ainda, já tentei colocando o script inicial e colocando um linha como comando conky conforme manda no maual, mas nenhuma das duas maneiras sobe o conky, também tentei colocar ele pra inicializar após dois targets, o graphical.target e o multi-user.target e nada:
[Unit]
Description=Start conky in boot
After=graphical.target

[Service]
Type=simple
ExecStart=/bin/sh -c 'conky'

[Install]
WantedBy=multi-user.target


Se vc especificar o arquivo de configuração do conky nesse comando >>> /bin/sh -c 'conky <parâmetro> <arquivo>', não rola?


<parâmetro> = parâmetro responsável para especificar o arquivo
<arquivo> = arquivo do conky


*Não faço ideia se o conky tem essa opção, mas geralmente os softwares em linha de comando oferecem opções para especificar arquivos alternativos de configuração...



12. Re: Shell script para inicializar Conky no systemd

G30RG3
G30RG3

(usa Outra)

Enviado em 10/09/2015 - 19:49h

ru4n escreveu:

G30RG3 escreveu:
Após duas tentativas porque tinham ficado uns arquivos para trás consegui fazer o serviço aparecer como "ativo" mas o conky não sobe ainda, já tentei colocando o script inicial e colocando um linha como comando conky conforme manda no maual, mas nenhuma das duas maneiras sobe o conky, também tentei colocar ele pra inicializar após dois targets, o graphical.target e o multi-user.target e nada:
[Unit]
Description=Start conky in boot
After=graphical.target

[Service]
Type=simple
ExecStart=/bin/sh -c 'conky'

[Install]
WantedBy=multi-user.target


Se vc especificar o arquivo de configuração do conky nesse comando >>> /bin/sh -c 'conky <parâmetro> <arquivo>', não rola?


<parâmetro> = parâmetro responsável para especificar o arquivo
<arquivo> = arquivo do conky


*Não faço ideia se o conky tem essa opção, mas geralmente os softwares em linha de comando oferecem opções para especificar arquivos alternativos de configuração...


No caso quando se trabalha com a linha "ExecStart=/bin/sh -c 'conky'" o que vem entre as aspas (') é uma linha de comando, pra apontar o script, aí você aponta o script com a sua localização, pelo menos isso foi o que eu entendi.






01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts