Onde estão os scripts de inicialização do Unity Desktop?

11

Quero executar um script assim que minha autenticação lightdm for bem-sucedida e meu Unity começar a carregar. e eu quero executar meus scripts como um usuário root.

onde estão os scripts de inicialização localizados no Unity?

Shnd
fonte
Quero executar o script após o carregamento do meu X.
Shnd
O @Shnd X realmente inicia antes do lightdm, porque o lightdm também roda no X. Portanto, se você deseja executar algo como seu usuário, provavelmente o deseja "após a autenticação do lightdm ter sido bem-sucedida" ou, em outras palavras, "quando a área de trabalho estiver iniciando". Também é possível executar um script quando você apenas inicializa o computador, não importa se você possui um usuário conectado ou não (é isso que inicia o X por exemplo) que essa é uma pergunta completamente diferente. Se você deseja executar algo como usuário, provavelmente deseja e a resposta depende do seu sistema init.
Erikbwork

Respostas:

5

Primeiro, coloque seu script /usr/bine dê permissão de execução.

Agora crie o arquivo .desktop no /home/[user-name]/.config/autostart/qual executar seu script que é executado na inicialização.

Exemplo: - Deixe seu nome de arquivo de script como "exemplo" ou "exemplo.sh"

Crie o arquivo .desktop com o gedit com as seguintes linhas e salve como filename.desktop em /home/[user-name]/.config/autostart/

[Desktop Entry]
Type=Application
Exec=sudo example
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=myscript
Comment=Startup Script

Aqui Exec=sudo exampleou Exec=sudo example.shexecuta seu script como raiz em /usr/bin Dê permissão de execução ao arquivo .desktop.

Agora, o Script é executado na inicialização.

Pandya
fonte
1
para executar o sudo sem senha, consulte askubuntu.com/questions/39281/…
Pandya
Obrigado que funciona. Mas com o iniciante, você pode tornar a mesma coisa um pouco mais simples (veja a minha resposta).
TuKsn
Isso seria perfeito com um link para o spec
erikbwork
Não acho que o arquivo .desktop precise ser sinalizado como executável.
Julian
4

Outra possibilidade:

Crie um arquivo no $HOME/.config/upstart/my-upstart-script.conf

start on desktop-start
stop on desktop-end

script
  sudo fdisk -l > /home/[user-name]/upstart-test.txt        
end script

Mais detalhes sobre o Upstart :

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/cookbook/

Informações a serem executadas sudosem senha:

Como executar um aplicativo usando o sudo sem uma senha?

Como executo comandos sudo específicos sem uma senha?

TuKsn
fonte
"$ HOME / .config / upstart" não existe esse diretório na minha máquina.
Kalamalka Kid
1
@KalamalkaKid Qual versão do Ubuntu você usa? O diretório inicial deve estar neste local /home/yourusername/.config/upstart/. Abra o seu diretor de casa no nautilus, pressione Ctrl + H e você deverá ver o diretório .config
TuKsn
2

Para executar um comando como root , após o login, existe outro truque simples:

São necessários dois passos:

  • crie um arquivo acionador no login
  • crie um cronjob, executado pela raiz (definido em /etc/crontab), para executar um script minúsculo (executando seu comando) se e somente se o arquivo acionador existir. Como o arquivo acionador é removido pelo mesmo script, seu comando é executado apenas uma vez.

A sequência é então:

USER LOGIN > trigger file is created > cronjob runs script (with your command) and removes trigger file, > next time the script passes, since the trigger file does not exist anymore

A configuração

Os dois pequenos scripts:

Um para criar o arquivo acionador no login:

#!/bin/sh
touch $HOME/.trigger

e um dois executam o comando:

#!/bin/bash

FILE="/path/to/your/homedirectory/.trigger"
# don't use $HOME here, since you run it by root

if [ -f $FILE ]; then
   <your command here, run by root>
   rm -f $FILE
fi
  • copie os dois scripts em dois arquivos vazios, salve-os como create_trigger.she run_command.sh.
  • Por razões de conveniência, torne-os ambos executáveis.
  • Adicione o seguinte comando aos aplicativos de inicialização (Dash> Startup Applications> Add)

    /path/to/create_trigger.sh
    
  • Adicione a seguinte linha ao /etc/crontabarquivo ( sudo nano /etc/crontab):

    * * * * * root /path/to/run_command.sh
    

Agora, o comando definido é executado uma única vez dentro de um minuto após o login.

Jacob Vlijm
fonte