Скрипт запуска через Linux через минуту после загрузки

Я установил мост между eth0 и wlan0 с netctl. Он отлично работает, если я скажу ему настроить eth0 и wlan0 при запуске, а затем для запуска вручную моста после его загрузки. Если я скажу, что мост также запускается автоматически, хотя по какой-то причине адаптер wlan не подключается к точке доступа. Поэтому мне нужно «netptl start bridge», чтобы запустить минуту или около того, как только вся система завершила загрузку. Любая идея, как я должен это делать?

PS. Это безголовая система, так как ни один xorg не работает, поэтому запуск в xorg не будет работать.

Arch использует systemd для управления процессами запуска (демоны и тому подобное).

Вы можете написать сценарий, который просто выполняет команду, которую вы хотите, или спящий на минутку, а затем выполнить. Затем добавьте его в процесс загрузки с инструкциями на

вики

если вы добавляете сон:

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

Он должен работать отлично. Systemd должен порождать другой процесс, когда он выполняет ваш скрипт, поэтому он не должен зависеть от вашей системы.

Вы можете использовать таймеры systemd для запуска скрипта через минуту после загрузки.

Сначала создайте файл службы (/etc/systemd/system/myscript.service):

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

Затем создайте таймер (/etc/systemd/system/myscript.timer):

 [Unit] Description=Runs myscript every hour [Timer] # Time to wait after booting before activation OnBootSec=1min Unit=myscript.service [Install] WantedBy=multi-user.target 

Теперь включите и запустите:

 # systemctl enable myscript.timer # systemctl start myscript.timer 

Если вы хотите, чтобы что-то простое было неблокирующим, добавьте следующее в /etc/rc.local:

 ( sleep 60 && /path/to/command_or_script [opts] ) & 

Иногда отдельные службы в некоторых дистрибутивах Linux не были полностью переведены на систему, например mysql на Debian . В этом случае пользователи все еще могут использовать сценарии запуска init в /etc/rc*.d или /etc/rc.local . Например, вот мой файл rc.local на малине pi с debian для перезапуска mysql через одну минуту после загрузки:

 #!/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 

Итак, если вы все запустили автоматически, то есть systemctl enable ... , вы можете просто применить его к своей ситуации, добавив, что строка netctl для rc.local:

 sleep 60 && netctl start bridge exit 0