Executando comandos na inicialização do S.O Linux Mint XFCE 20

Salve galera,

(Sou novato em ambientes Linux/Unix) Estou tentando fazer com que um comando inicialize juntamente ao sistema quando o mesmo ligar, no entanto não consigo identificar o erro para tal.

O b.o é o seguinte:

Tenho um script < confteclas.sh > e ele configura o teclado numérico dentro do WPS Office para que o programa não substitua o Ponto pela Vírgula (que é o que ocorre se não executado este comando).
O arquivo já se encontra configurado e com as permissões setadas com chmod +x e chmod 700 .
Até aí tá tudo tranquilo, mas na configuração para inicialização do mesmo não consigo encontrar algum comando para tal ato.

Comandos testados:

insserv (não existe nessa distro)
chkconfig (não existe nessa distro)
systemctl enable (nada aconteceu)
cron (não consegui entender bem como funciona o mesmo)

S.O: Linux Mint 20.1 Ulyssa | base: Ubuntu 20.04 focal | Xfce 4.14.2
Intel Core i3-3240 bits: 64 type: MT MCP arch: Ivy Bridge

Se alguém puder ajudar quanto à isso ficarei grato.

1 Curtida

A melhor opção é colocar o script como um aplicativo de inicialização no XFCE, ou fazer o arquivo .xprofile “invocar” ele, já que esse script vai afetar uma aplicação gráfica. Tem esse tópico com um problema parecido.

2 Curtidas

Eu tentei inserir somente o comando que preciso como um aplicativo de inicialização e depois de reiniciar não surtiu efeito. Vou dar uma olhada no tópico que mandou.

O script que estou utilizando é o seguinte:

touch /etc/init.d/confteclas.sh && chmod +x /etc/init.d/confteclas.sh &&
echo "

#!/bin/sh
# Script para configurar teclado númerico, corrigindo o problema de troca de teclas "." por ",".
# Requer o pacote xmodmap ou o x11-xserver-utils.
# Para executar na inicialização, coloque no diretório /etc/init.d (Debian, Ubuntu, Mint)
# Mais informações sobre o uso do xmoadmap no endereço
# http://www.x.org/releases/current/doc/man/man1/xmodmap.1.xhtml
#
# Instruções (Debian, Ubuntu, Mint):
# Copie para /etc/init.d
# Dê permissão de execução para o mesmo: # chmod +x /etc/init.d/confteclas.sh
# Insira na inicialização do sistema: # insserv confteclas.sh
#
xmodmap -e 'keycode 129 = period'" > /etc/init.d/confteclas.sh && xmodmap -e 'keycode 129 = period'
1 Curtida

Basta jogar xmodmap -e 'keycode 129 = period' no arquivo /home/usuario/.xprofile (crie se não tiver), se eu entendi bem o que tem aí. Daí é logar e deslogar para ver se surte efeito.


Esse tutorial aí é do tempo dos dinossauros, a maior parte das distribuições deixaram de usar /etc/init.d e programas associados (insserv, service) há mais de 5 anos.

1 Curtida

Nem sabia que esses comandos eram tão antigos assim.

Fiz o que você disse, como não tinha eu tive que criar o arquivo .xprofile e jogar o comando dentro dele. Reiniciei a máquina pra testar e não foi, mas no caso fui perceber aqui que realmente é na interface gráfica, vou analisar o tópico em questão novamente que me mandou para ver se consigo algo. De toda forma agradeço, logo mais volto com atualizações.

1 Curtida

Tente isso:

No menu do XFCE, pesquise pelo programa “Sessão e inicialização”.

Abra o programa, vá na aba “Início automático de aplicativos”, e clique no ícone “+” lá em baixo:

Na janela que abrir preencha as informações nome, descrição (opcional). No campo “comando”, clique no ícone de pasta para procurar o script que você quer que seja executado (ou você pode preencher manualmente o caminho onde o script está). E o gatilho você deixa como está (on login).

Eu fiz um script como exemplo que abre o Chromium toda vez que a sessão é inicializada:

S10624-114058(1)

3 Curtidas


Já tinha testado antes esse tipo de configuração mas não funcionou pra este comando.

1 Curtida



Joguei o comando em ambos junta e separadamente, mas não funcionou também.
Tentei utilizar o comando:

update-rc.d nome_do_script defaults

Também mexi nos runlevel do mesmo pra ver se ia e não foi, coloquei os runlevel assim:

ln -s /etc/init.d/confteclas.sh /etc/rc3.d/S10confteclas.sh
ln -s /etc/init.d/confteclas.sh /etc/rc5.d/S10confteclas.sh

Mas no fim fiquei estagnado.

1 Curtida

Não sei se você fez isso, mas lá vai:

  1. Mova o executável para /usr/local/bin.
  2. Abra Aplicativos e Sessão(ou algo parecido). Lá tem uma aba onde você pode adicionar aplicativos para iniciar automaticamente. Clica em +(algo assim) e então coloque um nome. Na caixa de comando escreva isso:
    bash nomedoexecutável.sh &
  3. Troque nomedoexecutável pelo nome do arquivo que condiz com o seu script.
    Reinicie a sessão e veja se funcionou.
2 Curtidas

Fiz esse procedimento porém também não foi. Estou quase desistindo e pedindo pra que os funcionários digitem com o ponto sem ser do teclado numérico. kkkk

1 Curtida

Nesse caso faça diferente… Crie um arquivo na sua pasta pessoal chamado xinitrc. Esse arquivo deve ser oculto, para tal, adicione um ponto antes do nome do arquivo. Edite ele com qualquer editor, particularmente eu prefiro o nano.

nano .xinitrc

Dentro do arquivo adicione a seguinte linha…

exec /usr/local/bin/nomedoseuscript &

Altere nomedoseuscript para o nome do seu script. :stuck_out_tongue:
Reinicie.

1 Curtida

Testei essa opção e funcionou somente no primeiro reset da máquina, reiniciei de novo e parece que não salvou as alterações. P*ta b.o esse kkkk

1 Curtida

Experimenta reduzir removendo o “/usr/local/bin/”.
Uma alternativa é você criar um serviço no SystemD que execute esse script.
Você pode seguir esse tutorial para tal:

1 Curtida

Olá @DTI!

Cara, com a ajuda aqui da comunidade e pesquisas externas, já consegui duas soluções similares ao que você procura: executar um comando na inicialização.

Neste tópico aqui, montei um script simples, contendo apenas o comando que queria que fosse executado e dei permissão de execução. Em seguida crio um .service para executar o script automaticamente, habilitei o serviço e deu tudo certo.

Já neste outro tópico, além das outras sugestões que podem (também) serem úteis para você o @chimpa_theist me deu a sugestão do PAM, que foi a solução mais viável para o que procurava neste caso.

Veja se alguma delas serve para seu propósito…
Espero ter ajudado de alguma forma! :v:

2 Curtidas

Cara, eu tentei usar dessa forma seguindo os passos descritos e ele funcionou na primeira reinicialização do sistema, após eu reiniciar o mesmo pela segunda vez para testar se realmente foi, ele não subiu o serviço. Nas imagens abaixo está como ficou meus arquivos. (levei em base que provavelmente teria que possuir um arquivo dentro de

/etc/init.d/“meuscript”

e um arquivo em

/lib/systemd/system/“nomeserviço”

Você habilitou?

# systemctl enable seuscript

Sim, usei exatamente como descrito. :confused:

Então brother, fiz os passos do primeiro tópico que você listou e também não consegui êxito.

E em relação ao segundo tópico listado que me enviou, eu acessei

/etc/pam.d/common-session

e adicionei uma linha para o meu comando seguindo os passos do tópico citado, mas também não saí do lugar após reiniciar.

Rapaz… Tá difícil viu.
Será que poderia ser algum tipo de incompatibilidade devido tentativas anteriores?
Em outras situações já aconteceu comigo de ser a causa de eu não conseguir.
O que fiz foi criar uma VM, instalei o mesmo sistema que o meu e criei uma snapshot da VM. Daí eu tentava uma a uma as sugestões. Quando não dava certo, restaurava a snapshot e tentava a próxima. Somente quando encontrava a solução definitiva eu fazia na minha maquina real. Inclusive, foi assim que consegui as duas soluções dos tópicos que te sugeri.

Estou relatando isso porque comigo realmente aconteceu de a solução não estar dando certo, creio eu que por alguma incompatibilidade de tentativa anterior.

Estranho, pois eu formatei este computador antes de ontem 29/06. Pensei também que poderia ser algo do tipo, mas fazendo as recomendações sugeridas não funcionou da mesma forma, vou continuar pesquisando mais sobre e tentarei ver também se consigo algum resultado. Mesmo assim agradeço demais a ajuda.

1 Curtida