Ubuntu 14.04では、次のように完全に機能するシンプルなudevルールを使用した、実行時間の長いbashスクリプトがあります。
ACTION=="change", SUBSYSTEM=="block", RUN+="/opt/script.sh"
Ubuntu 16.04では、うまくいきません。スクリプトは実行を開始しますが、完了する前に強制終了されます。その後、スクリプトを切り離すwarapperスクリプトを呼び出すようにudevルールを変更しようとしました。私は試した:
#!/bin/sh
Nohup /opt/script.sh &
それから私は試しました:
#!/bin/sh
/opt/script.sh | at now
無駄に。
その後、systemdサービスを作成しようとしました...
ACTION=="change", SUBSYSTEM=="block", ENV{SYSTEMD_WANTS}=="justrunthescript.service"
/etc/systemd/system/justrunthescript.service
[Unit]
Description=Just run the script
[Service]
ExecStart=/opt/script.sh
ある時点でスクリプトを実行するようになりましたが、私のスクリプトは$ ID_FS_TYPEのようなudevパラメーターに依存していますが、この方法では渡されません。
私が欲しいのは非常に簡単で、ディスクを挿入してudevルールからスクリプトを実行するだけで、スクリプトを殺さないでください。これについて最善の方法は何ですか?
私がする必要があることに気づいた:
#!/bin/sh
echo /opt/script.sh | at now