5

I have set up a bridge between eth0 and wlan0 with netctl. It works fine if I tell it to configure eth0 and wlan0 at startup and then for me to manually start the bridge after it boots. If I tell the bridge to start automatically as well though for some reason the wlan adapter does not connect to an access point. I therefore need "netctl start bridge" to run a minute or so after the entire system has finished booting. Any idea how I should do this?

PS. This is a headless system as in no xorg so running it at xorg startup won't work.

Gerharddc
  • 325
  • 1
  • 4
  • 12

3 Answers3

19

You can use systemd timers to execute script a minute after boot.

First, create service file (/etc/systemd/system/myscript.service):

[Unit]
Description=MyScript

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

Then create 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

Now enable and run it:

# systemctl enable myscript.timer
# systemctl start myscript.timer
Boris
  • 103
  • 4
anlar
  • 4,096
  • 3
  • 30
  • 54
  • Couldn't you add an after line so the script runs after wlan0 is configured? – StrongBad Jun 20 '14 at 19:12
  • @StrongBad, probably you can add `Requires=sys-subsystem-net-devices-wlan0.device` and `After=sys-subsystem-net-devices-wlan0.device` to service to ensure that it will start after wlan0 configuration. But I haven't tested it by myself. – anlar Jun 20 '14 at 19:27
4

Arch uses systemd to manage startup processes (daemons and the like as well).

You can write a script that simply executes the command that you want, or sleep for a min and then execute. Then add it to the boot process with the instructions on the

wiki

if you add a sleep:

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

It should work perfectly fine. Systemd should spawn another process when it executes your script so it shouldn't make your system hang.

Livinglifeback
  • 1,586
  • 10
  • 16
1

If you want something simple that's non-blocking, add the following to /etc/rc.local:

( sleep 60 && /path/to/command_or_script [opts] ) &
Kevin Traas
  • 111
  • 1