upstart
「USBデバイスが差し込まれた」信号が入っていないようです。これまでのところ、initはinitと全く同じことをやっていましたが、将来は「クールな広告機能」があります。
From the Fedora wiki: "今はUpstart自体を稼働させていますが、SysVのように機能していても、このモデルにスムーズに移行することができます。"
幸いにも、udevにあなたのカスタムupstartシグナルを送信するスクリプトを実行させることで、未来を実装して、upstartがバックアップスクリプトを呼び出せるようにすることができます。 udevにバックアップスクリプトを直接呼び出させることもできます。
udev
には、デバイスが接続されているときにスクリプトを実行する簡単な方法があります。 rename your usb hard drive's device name with udev rulesを参照してください。私のシステムでは、チュートリアルのudevmonitor --env
の代わりにudevadm monitor --env
を使用する必要があります。スクリプトは、バックアップデバイスを見つける必要があるものは何でもudevの環境変数(複数可)を使用して、デバイスの実際のIDとID_SERIAL_SHORT
の交換
echo 'SUBSYSTEM=="block", ID_SERIAL_SHORT=="101A9041C67D182E", \
NAME="myusbdrive", \
RUN+="/my/backup/script $env{NAME}"' > /etc/udev/rules.d/S96-mydrive.rules
、および$env{NAME}
:チュートリアルに従った後、あなたはこのような別のudevのルールを作成します。 udevをブロックしないように、スクリプトのバックグラウンドを作成する必要があります。
upstartを使用する場合は、udevルールを/sbin/initctl emit back-it-up VARIABLE=$env{VARIABLE} ...
にしてから、に始まり、start on back-it-up
という文字列でスクリプトを作成します。
DBusで同じことを行うヒントについては、How can I listen for 'usb device inserted' events in Linux, in Python?も参照してください。ログインしたユーザーにusermode "バックアップ・ドライブの監視"デーモンを実行させたい場合は、DBusが便利です。
ご回答いただきありがとうございます。質問があります。なぜ私はこれにUpstartを使用すべきではありませんか? (あなたは動機づけをしていませんでした) –
Upstartは "USBドライブが接続されています"というメッセージを表示していないようですので、udev(またはdbus、...など)で自分自身を定義するか、バックアップスクリプトを直接呼び、多くのLinuxシステムと互換性があります。 – joeforker
私はあなたのユースケースでは、バックアップサービスをユーザーに向けることを望んでいるので、DBusが行く方法だと思います。また、@ジョーカー - 素晴らしい答え! – Guss