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

10

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

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

    
por Shnd 07.05.2014 / 09:48

3 respostas

5

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

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

Exemplo: - Deixe seu nome de arquivo do script ser "example" ou "example.sh"

Crie um 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 example ou Exec=sudo example.sh executa seu script como raiz em /usr/bin Dê permissão de execução para o arquivo .desktop.

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

    
por Pandya 07.05.2014 / 13:03
3

Outra possibilidade:

Crie um arquivo em $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 Upstart :

link

link

Infos para executar sudo sem senha:

Como executar um aplicativo usando o sudo sem um senha?

Como eu executo comandos sudo específicos sem um senha?

    
por TuKsn 07.05.2014 / 17:36
2

Para executar um comando como root , após , há outro truque simples:

São necessários dois passos:

  • crie um arquivo disparador no login
  • crie um cronjob, executado pelo root (definido em /etc/crontab ), para executar um script minúsculo (executando o comando) if e somente se o arquivo do acionador existir . Como o arquivo do 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.sh e run_command.sh .
  • Por conveniência, torne-os executáveis.
  • Adicione o seguinte comando aos seus aplicativos de inicialização (Dash > Aplicativos de inicialização > Adicionar)

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

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

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

    
por Jacob Vlijm 21.06.2014 / 12:39

Tags