(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)
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.
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.
#!/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'
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.
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.
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:
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 &
Troque nomedoexecutável pelo nome do arquivo que condiz com o seu script.
Reinicie a sessão e veja se funcionou.
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
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.
Reinicie.
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:
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!
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
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.