シャットダウン前にsystemdを使用してネットワークドライブをマウント解除する

シャットダウン前にsystemdを使用してネットワークドライブをマウント解除する

システムのシャットダウンにはかなり時間がかかり(Debian 8.1を使用しています)、システムをシャットダウンする前にネットワークドライブをアンマウントすると問題を解決できることがわかりました。すべてのドライブがマウント解除される前にネットワーク接続が失われたようです。

これを自動化するためにsystemdサービスを作成しようとしましたが、うまくいきませんでした。つまり、時々削除されていないようで、終了プロセスにはまだ長い時間がかかりました。私のアプローチは以下からインスピレーションを受けました。この質問に対する答えそして、systemd.serviceのマニュアルページを参照してください。

[unit]
description=Unmount network drives on shutdown
Before=shutdown.target reboot.target halt.target network.target

[Service]
type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/sh umount /media/networkdrive1 /media/networkdrive2

[Install]
WantedBy=multi-user.target

編集する

ネットワークドライブは、次の行を使用して/etc/fstabにマウントされます。

//192.168.1.5/networkdrive1 /media/nw1 cifs _netdev,uid=myuser,credentials=/home/myuser/.credfile
//192.168.1.5/networkdrive2 /media/nw2 cifs _netdev,uid=myuser,credentials=/home/myuser/.credfile

ベストアンサー1

3日間の検索とテストの最後に、Debian-Jessie、Linux Mint、i386(32ビット)インストールのための機能的なソリューションを開発しました。最初にアンマウントしないと、シャットダウンまたは再起動時に120秒間中断されるネットワークCIFS共有があります。このスクリプトを使用すると、再起動またはシャットダウンする前に共有を手動でアンマウントする必要がなくなります。

シャットダウンおよび再起動時に実行される自動cifs umountスクリプト

  • 次のスクリプトを作成します/etc/init.d/aaaumount (スクリプトは数字とアルファベット順で実行されるため、aaa最初に実行されます)。

    #!/bin/sh
    
    #
    # aaaumount initscript
    #
    ### BEGIN INIT INFO
    # Provides:          aaaumount
    # Required-Start:    $local_fs $remote_fs
    # Required-Stop:     $remote_fs
    # Default-Start:     S
    # Default-Stop:      0 1 6
    # Short-Description: umounts cifs shares
    # Description:       This script unmounts cifs shares
    ### END INIT INFO
    
    case "$1" in
     stop)
                umount -t cifs -af
    esac
    
  • 実行可能にする:

    sudo chmod 755 /etc/init.d/aaaumount
    
  • /lib/systemd/system/ でサービスへのシンボリックリンクを作成します。

    cd /lib/systemd/system/
    sudo ln -s /dev/null aaaumount.service
    
  • /etc/rc0.d/etc/rc6.d0および6終了/再開ランレベル)にシンボリックリンクを作成します。

    sudo ln -s /etc/init.d/aaaumount /etc/rc0.d/K01aaaumount 
    sudo ln -s /etc/init.d/aaaumount /etc/rc6.d/K01aaaumount 
    
  • 有効にしてください:

    sudo systemctl enable aaaumount.service
    

おすすめ記事