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

Como executar comandos e scripts Linux automaticamente em uma reinicialização do sistema
Executar aplicativos e scripts automaticamente na inicialização pode ser útil para automatizar tarefas e eventos comuns de inicialização. Este artigo explicará alguns métodos que podem ser usados ​​para lançar 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 "Aplicativos de inicialização". Pode ser usado para gerenciar aplicativos e scripts que são executados em uma nova reinicialização do sistema ou login.

Inicie o aplicativo "Startup Applications" do lançador de aplicativos e clique no botão "Adicionar" para adicionar uma nova entrada.

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

Como afirmado acima, um lembrete de backup é mostrado em cada reinicialização.

Systemd

Systemd é um gerente de daemon e serviços que contém vários utilitários para gerenciar processos do sistema e componentes do sistema operacional. Em sua forma simplista, geralmente é usado para iniciar e encerrar os serviços em um novo ciclo de inicializaçã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 arquivos necessários executando os comandos abaixo:

$ mkdir -p ~//.Config/Systemd/Usuário
$ nano ~//.config/systemd/user/backup_reminder.serviço

Substitua “Nano” pelo comando do seu editor de texto favorito. Substitua "backup_reminder" por qualquer outro nome que você preferir.

Cole o código abaixo no backup_reminder.arquivo de serviço criado usando o comando acima.

[Unidade]
Descrição = envia um lembrete de backup em cada reinicialização
Partef = sessão gráfica.alvo
[Serviço]
ExecStart = Bash -C 'Sleep 10; notificar-se "faça um backup" '
Tipo = OneShot
[Instalar]
WantedBy = sessão gráfica.alvo

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

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

$ chmod 644 ~//.config/systemd/user/backup_reminder.serviço
$ Systemctl -Habilitário Backup_reminder.serviço
$ Systemctl-User daemon-Reload
$ reiniciar

Este é apenas um exemplo simples de executar 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 Systemd Man, executando o comando abaixo:

$ MAN SYSTEMD

Observe que este exemplo explica a criação de um novo serviço que não requer acesso raiz e é adequado para aplicativos de iniciação automática que não requerem permissões de raiz. Se você deseja iniciar automaticamente scripts que requerem acesso raiz, você deve criar um novo serviço Systemd no diretório "/etc/systemd/system" em vez de "~//.Pasta Config/Systemd/Usuário "e omito o interruptor" -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 programados são criados em Crontab em um formato predefinido. Em termos simples, Crontab diz a Cron quais trabalhos executam em que momento.

Como o Systemd, os trabalhos de Crontab podem ser usados ​​para iniciar aplicativos e executar scripts automaticamente na inicialização. Para adicionar um novo trabalho de Cron, 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 Gnome-terminal

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

Observe que, diferentemente do Systemd, Cron não pode detectar se a sessão gráfica foi carregada ou não. Você precisa especificar algum período estimado de espera até que o servidor X seja carregado e um identificador de exibição. Você pode saber sobre o seu ID de exibição executando o comando abaixo:

$ eco $ display

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

Rc.local

Outro método para executar scripts e comandos na startup é usar “RC.Arquivo local ”. Observe que em meus testes, não consegui adiar a execução do script até a sessão gráfica estar ao vivo. Adicionando qualquer demora do atraso do sono ao atraso na exibição da própria tela de login. Por isso, não tive sucesso na execução de aplicativos gráficos na inicialização usando RC.arquivo local. Editando RC.Local também requer acesso à raiz, ao contrário de todos os outros exemplos explicados acima.

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

$ sudo nano /etc /rc.local

Adicione seus comandos entre “#! /Bin/Bash ”e“ Exit 0 ”linhas, como mostrado abaixo:

#! /BIN/BASH
caminho/para/my_script.sh
saída 0

Fazer rc.Arquivo local executável executando o comando abaixo:

$ sudo chmod +x /etc /rc.local

Basta reiniciar o script de inicialização para entrar em vigor.

Conclusão

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