O que é o equivalente Linux do Windows Startup?

15

Existe alguma maneira de adicionar um aplicativo / script à inicialização do Linux para que toda vez que o sistema for inicializado, ele seja executado?

Eu estou procurando por alguma maneira automatizada, ou seja, o usuário não deve adicionar isso pelo cron job ou algo assim.

    
por Sourav 16.08.2011 / 16:58

6 respostas

11

Algo como Cron ?

Observe a @reboot entry

Esta é a abordagem mais flexível, e a mais parecida com as "Tarefas agendadas" do Windows (na melhor das hipóteses).

    
por 16.08.2011 / 17:00
9

Início automático do Xorg

Além dos scripts de inicialização no nível do sistema, seu ambiente de desktop pode ter sua própria maneira de executar programas automaticamente. A pasta .config/autostart deve ser uma maneira neutra de definir as permissões de execução automática. /etc/xdg/autostart é para configuração de todo o sistema. Detalhes sobre as especificações no link .

As entradas de início automático do LXDE também podem ser definidas em ~/.config/lxsession/LXDE/autostart .

É um pouco diferente se você precisar executar seus scripts após a rede estar ativa e funcionando. Nesse caso, você deve verificar os scripts pós-conexão especiais que podem ser definidos para o seu gerenciador de rede. Ambos NetworkManager e wicd têm suas próprias maneiras de especificar as entradas de execução automática pós-conexão. Se a rede estiver configurada por ifupdown , os scripts de postagem poderão ser colocados na pasta /etc/network/if-up.d/ . Mas uma abordagem melhor para executar scripts pós-conexão pode ser systemd (para sistemas que suportam isso, que é a maioria das distribuições modernas).

Autostart como um serviço systemd

Se a coisa que você deseja iniciar automaticamente não for um aplicativo gráfico que requer um desktop, é melhor evitar o uso de recursos de autoinicialização fornecidos pelo xorg ou pelo ambiente atual da área de trabalho.

systemd tornou-se onipresente em muitas distros modernas, e oferece muito controle e flexibilidade em termos de como seus serviços são iniciados e como eles são executados.

Vou resumir alguns benefícios ( systemd pode fazer muito mais ):

  • Executar como usuário raiz ou específico: por exemplo, %código%
  • Reinicie os serviços em caso de falha com tempos limite configuráveis: User=myuser
  • Definindo o tipo de serviço: Restart=on-failure|on-watchdog|on-abnormal|always
  • Estabeleça pré-condições e dependências de inicialização, ou seja, você pode configurar o serviço para iniciar depois que a rede estiver ativa ( Type=simple|forking|oneshot|notify|dbus na seção Wants=network-online.target ).

Um exemplo de serviço que inicia um daemon telegram-cli. Coloque em [Unit] .

[Unit]
Description=MyDaemon
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/bin/telegram-cli -k /etc/telegram-cli/tg-server.pub -W -P 1234 -d -vvvRC
ExecStop=/usr/bin/pkill -f telegram-cli

User=jicu

[Install]
WantedBy=multi-user.target

Agora você pode ativar o serviço para iniciar automaticamente:

sudo systemctl enable tg

Iniciar o serviço:

sudo systemctl start tg

Pare o serviço:

sudo systemctl stop tg

Verifique o status:

systemctl status tg

Desativar o serviço:

sudo systemctl disable tg

Para economizar a digitação adicional, você pode adicionar seu /etc/systemd/system/tg.service à linha ~/.bashrc e, em seguida, poderá encurtar os comandos acima para, por exemplo, alias sc='sudo systemctl $*' .

NOTE: If you've used cron then are aware that crontab entries are run in a restricted environment — the same applies to systemd: always use absolute paths, and make no assumptions of any variables being defined. Explicitly set any variables that your scripts depend on. systemd will not use your user's .bashrc and $PATH.

Mais informações:

por 18.08.2011 / 19:55
7

Sim, é possível executar programas na inicialização no Linux definindo os caminhos para executáveis em rc.local que residem no diretório /etc ou /etc/rc.d , por exemplo:

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/path/to/executable

Nota: não se esqueça de atribuir direitos executáveis conforme descrito na documentação do arquivo, por exemplo, Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure that this script will be executed during boot.

    
por 16.08.2011 / 17:00
2
  1. Pesquise Startup applications usando o botão "home"
  2. Clique em Add
  3. Insira um nome para chamar o aplicativo (qualquer nome será feito)
  4. No Startup command box , insira o comando
  5. Clique em OK (você deve ver seu novo comando na lista)
  6. Clique em Close

Teste reiniciando ou desconectando e voltando.

Fonte: link

    
por 06.06.2014 / 11:34
1

Cada distribuição usa cada técnica de bootstrap, portanto, é necessário consultar os documentos para sua distribuição. /etc/rc.local é um lugar onde você pode colocar alguns scripts automatizados, mas é realmente desatualizado. Agora, a maioria dos sistemas baseados em Linux usa runlevels ou systemd bootstraping, portanto, a maioria das tarefas iniciadas automaticamente pode ser controlada com precisão.

    
por 16.08.2011 / 17:10
0

Eu encontrei minha resposta aqui: link Consegui criar um arquivo / script para desligar o trackpad enquanto estava na sessão Linux Ubuntu 12.10.

    
por 24.04.2013 / 05:53

Tags