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).
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.
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).
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).
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 ):
User=myuser
Restart=on-failure|on-watchdog|on-abnormal|always
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 tosystemd
: 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:
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.
Startup applications
usando o botão "home" Add
Startup command box
, insira o comando OK
(você deve ver seu novo comando na lista) Close
Teste reiniciando ou desconectando e voltando.
Fonte: link
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.
Eu encontrei minha resposta aqui: link Consegui criar um arquivo / script para desligar o trackpad enquanto estava na sessão Linux Ubuntu 12.10.
Tags linux