Arch Linux は起動後 1 分でスクリプトを実行します

Arch Linux は起動後 1 分でスクリプトを実行します

netctl を使用して eth0 と wlan0 の間にブリッジを設定しました。起動時に eth0 と wlan0 を設定するように指示し、起動後に手動でブリッジを開始するように指示すると、正常に動作します。ただし、ブリッジを自動的に開始するように指示すると、何らかの理由で wlan アダプタがアクセス ポイントに接続されません。そのため、システム全体の起動が終了してから 1 分ほど経ってから「netctl start bridge」を実行する必要があります。これをどのように実行すればよいか、何かアイデアはありますか?

PS. これはヘッドレス システム (xorg なし) なので、xorg の起動時に実行しても機能しません。

答え1

systemd タイマーを使用して、起動の 1 分後にスクリプトを実行できます。

まず、サービス ファイル (/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 one minute after boot

[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

答え2

Arch は systemd を使用して起動プロセス (デーモンなど) を管理します。

必要なコマンドを実行するだけのスクリプトを書いたり、1分間スリープしてから実行したりすることができます。次に、ブートプロセスにスクリプトを追加して、

ウィキ

スリープを追加した場合:

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

問題なく動作するはずです。Systemd はスクリプトを実行するときに別のプロセスを生成するので、システムがハングすることはありません。

答え3

ブロッキングのないシンプルなものが必要な場合は、/etc/rc.local に次のコードを追加します。

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

関連情報