ifplugd をスクリプトに置き換えたいと思いました。これは、起動時に i3 によって起動されるデーモンのようなスクリプトです。ターミナルから起動するとすべて正常に動作しますが、起動時に自動起動しようとすると、すぐに強制終了されます。
i3の起動時に起動するために使用するコマンド:
exec ./.scripts/ifwatch enp0s25>ifwatch.log
ログ ファイルの内容:
[17:00:54]:Setting enp0s25 up
[17:00:55]:Listening on enp0s25
スクリプト自体:
#!/bin/sh
dev=$1
echo [$(date +'%H:%M:%S')]:Setting $dev up
sudo ip link set $dev up
echo [$(date +'%H:%M:%S')]:Listening on $dev
while watch -n 5 -g ip link show dev $dev;
do
if [[ -n $(ip link show dev $dev |tr '\n' ' ' | grep -v 'NO-CARRIER') ]];
then
echo [$(date +'%H:%M:%S')]:$dev "connected! running dhcpcd"
echo $(sudo dhcpcd $dev)
else
echo [$(date +'%H:%M:%S')]:$dev "disconnected! killing dhcpcd"
echo $(sudo dhcpcd -k $dev)
fi
done
(i3configファイルから)画面インスタンスで起動しようとしましたが、ソケットも作成されませんでした。また、ウォッチ出力バッファを送信しないようにしまし/dev/null
たが、役に立ちませんでした。起動するたびにログファイルのタイムスタンプが変更されるため、プロセスが即座に強制終了されると想定しています。