Como executar comandos e scripts do Linux automaticamente na reinicialização do sistema

How Run Linux Commands



Executar aplicativos e scripts automaticamente na inicialização pode ser útil para automatizar tarefas e eventos de inicialização comuns. Este artigo explicará alguns métodos que podem ser usados ​​para iniciar aplicativos e scripts em uma nova reinicialização ou um novo login.

Aplicativos de inicialização

O Ubuntu e outras distribuições baseadas no GNOME vêm com um aplicativo simplesmente chamado de Aplicativos de Inicialização. Ele pode ser usado para gerenciar aplicativos e scripts que são executados em uma nova reinicialização ou login do sistema.







Abra o aplicativo Startup Applications no inicializador de aplicativos e clique no botão Adicionar para adicionar uma nova entrada.





Preencha os campos Nome e Comando de acordo com suas necessidades e clique no botão Adicionar para concluir a criação de uma nova entrada. A entrada criada na captura de tela abaixo enviará um lembrete Fazer um Backup como uma notificação do sistema a cada reinicialização / login. Você pode substituí-lo por seu próprio comando ou pelo caminho completo de seu script bash. Você também pode usar qualquer comando de sistema existente ou executáveis ​​geralmente localizados em várias pastas bin no sistema de arquivos.





Conforme declarado acima, um lembrete de backup é mostrado em cada reinicialização.



Systemd

Systemd é um daemon e gerenciador de serviços que contém vários utilitários para gerenciar processos do sistema e componentes do sistema operacional. Em sua forma simplista, é normalmente usado para iniciar e encerrar serviços em um novo ciclo de inicialização.

O Systemd pode ser usado para iniciar automaticamente um aplicativo ou executar um script em uma nova inicialização. Para criar a mesma notificação de lembrete de backup explicada acima, primeiro você deve criar as pastas e o arquivo necessários executando os comandos abaixo:

$mkdir -p~/.config/sistema/do utilizador
$nano~/.config/sistema/do utilizador/backup_reminder.service

Substitua o nano pelo comando do seu editor de texto favorito. Substitua backup_reminder por qualquer outro nome de sua preferência.

Cole o código abaixo no arquivo backup_reminder.service criado com o comando acima.

[Unidade]
Description = Envia um lembrete de backup em cada reinicialização
PartOf = graphical-session.target

[Serviço]
ExecStart = bash -c 'sleep 10; notificar-enviar 'Fazer um Backup' '
Type = oneshot

[Instalar]
WantedBy = graphical-session.target

O código acima é bastante direto. Ele envia uma notificação de fazer um backup 10 segundos após o carregamento da sessão gráfica (uma vez a cada reinicialização ou login).

Execute os comandos abaixo para habilitar o serviço para que ele possa ser executado automaticamente a cada reinicialização.

$chmod 644~/.config/sistema/do utilizador/backup_reminder.service
$ systemctl--do utilizador permitirbackup_reminder.service
$ systemctl--do utilizadordaemon-reload
$ reboot

Este é apenas um exemplo simples de execução de um comando básico na inicialização usando o systemd. Você também pode criar serviços avançados com várias condições e vários comandos. Para obter mais informações, consulte a página man do systemd executando o comando abaixo:

$carasistema

Observe que este exemplo explica a criação de um novo serviço que não requer acesso root e é adequado para aplicativos de inicialização automática que não requerem permissões de root. Se você deseja iniciar scripts automaticamente que requerem acesso root, você deve criar um novo serviço systemd no diretório / etc / systemd / system em vez da pasta ~ / .config / systemd / user e omitir a opção –user nos comandos mencionados acima.

Cron Job

Cron é uma ferramenta que pode executar tarefas programadas periodicamente de acordo com as condições especificadas por um usuário. Esses trabalhos agendados são criados no Crontab em um formato pré-definido. Em termos simples, o Crontab diz ao Cron quais jobs executar em que ponto do tempo.

Como o systemd, os trabalhos do crontab podem ser usados ​​para iniciar aplicativos e executar scripts automaticamente na inicialização. Para adicionar um novo cron job, execute o comando abaixo:

$crontab-E

Adicione as seguintes linhas no final do arquivo de texto (inicia automaticamente o terminal GNOME em cada reinicialização):

SHELL = / bin / bash
@reboot sleep 30 && DISPLAY =: 0 terminal gnome

Você pode usar seu próprio comando ou fornecer o caminho completo para um script de shell.

Observe que, ao contrário do systemd, o cron não pode detectar se a sessão gráfica foi carregada ou não. Você deve especificar algum período de espera estimado até que o servidor X carregue e um identificador de exibição. Você pode saber sobre seu ID de exibição executando o comando abaixo:

$jogou fora $ DISPLAY

O atraso antes da execução do comando ou script depende da configuração do sistema e do tempo de inicialização.

Rc.local

Outro método para executar scripts e comandos na inicialização é usar o arquivo rc.local. Observe que, em meu teste, não fui capaz de adiar a execução do script até que a sessão gráfica estivesse ao vivo. Adicionar qualquer atraso de suspensão pode causar atraso na exibição da própria tela de login. Por causa disso, não tive sucesso em executar aplicativos gráficos na inicialização usando o arquivo rc.local. Editar rc.local também requer acesso root, ao contrário de todos os outros exemplos explicados acima.

Para adicionar comandos / scripts ao arquivo rc.local, execute o comando abaixo (cria um novo arquivo rc.local se ele não existir):

$sudo nano /etc/rc.local

Adicione seus comandos entre #! / bin / bash e sair 0 linhas, conforme mostrado abaixo:

#! / bin / bash
caminho / para / my_script.sh
saída 0

Torne o arquivo rc.local executável executando o comando abaixo:

$sudo chmod+ x/etc/rc.local

Basta reiniciar para que o script de inicialização tenha efeito.

Conclusão

Esses são alguns métodos que podem ser usados ​​para executar scripts e aplicativos automaticamente na inicialização. Se você deseja executar scripts que não requerem acesso root, eu recomendaria usar o aplicativo de GUI de aplicativos de inicialização. Se você deseja executar aplicativos e scripts com acesso root, eu sugiro que você crie um serviço systemd de nível de sistema.

Sobre o autor

Nitesh Kumar

Sou um desenvolvedor de software freelancer e redator de conteúdo que adora Linux, software de código aberto e a comunidade de software livre.

Ver todas as postagens