Script de execução do Arch Linux um minuto após a inicialização

5

Eu configurei uma ponte entre eth0 e wlan0 com netctl. Ele funciona bem se eu disser para configurar eth0 e wlan0 na inicialização e, em seguida, para eu iniciar manualmente a ponte após a inicialização. Se eu disser a ponte para iniciar automaticamente também, embora por algum motivo o adaptador wlan não se conecte a um ponto de acesso. Eu, portanto, preciso que o "netctl start bridge" seja executado cerca de um minuto após a inicialização do sistema inteiro. Alguma ideia de como devo fazer isso?

PS. Este é um sistema sem cabeçalho como no xorg, então executá-lo na inicialização do xorg não funcionará.

    
por Gerharddc 20.06.2014 / 16:06

4 respostas

2

O Arch usa o systemd para gerenciar processos de inicialização (daemons e similares também).

Você pode escrever um script que simplesmente executa o comando que você quer, ou dormir por um min e depois executar. Em seguida, adicione-o ao processo de inicialização com as instruções no

wiki

se você adicionar um sono:

#!/bin/sh
sleep 60 # one min
netctl start bridge

Deve funcionar perfeitamente bem. O Systemd deve gerar outro processo quando ele executa seu script para que ele não deixe seu sistema travar.

    
por 20.06.2014 / 16:09
18

Você pode usar os temporizadores systemd para executar o script um minuto após a inicialização.

Primeiro, crie um arquivo de serviço (/etc/systemd/system/myscript.service):

[Unit]
Description=MyScript

[Service]
Type=simple
ExecStart=/usr/local/bin/myscript

Em seguida, crie timer (/etc/systemd/system/myscript.timer):

[Unit]
Description=Runs myscript one minute after boot

[Timer]
# Time to wait after booting before activation
OnBootSec=1min
Unit=myscript.service

[Install]
WantedBy=multi-user.target

Agora ative e execute:

# systemctl enable myscript.timer
# systemctl start myscript.timer
    
por 20.06.2014 / 18:46
1

Se você quiser algo simples que não seja de bloqueio, adicione o seguinte ao /etc/rc.local:

( sleep 60 && /path/to/command_or_script [opts] ) &
    
por 20.10.2015 / 17:01
0

Às vezes, determinados serviços em algumas distribuições do Linux não foram transferidos para cumprir totalmente o systemd , por exemplo, mysql no Debian . Nesse caso, os usuários ainda podem usar scripts de inicialização do init em /etc/rc*.d ou /etc/rc.local . Por exemplo, aqui está o meu arquivo rc.local no pi do raspberry com o debian para reiniciar o mysql um minuto após a inicialização:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sleep 60 && systemctl restart mysql

exit 0

Portanto, se você tiver todo o resto iniciado automaticamente, ou seja, systemctl enable ... , poderá aplicá-lo à sua situação adicionando essa linha netctl ao rc.local:

sleep 60 && netctl start bridge
exit 0
    
por 26.06.2015 / 16:00