Debian 10 でサービスを使用してスクリプトを実行する

Debian 10 でサービスを使用してスクリプトを実行する

私は Debian 10 を実行しています。起動時に FTP ドライブをマップしたいと考えています。.sh ファイルは単独で動作しますが、作成した ftpconnect.service を使用すると動作します。このサイトの投稿の助けを借りて、何も考えず、非アクティブ (デッド) として表示されます。

コマンドを実行すると、FTP ドライブがマップされ、使用できるようになります。

/mnt/ftpconnect.sh start

しかし、システムの起動時に起動するようにしたいです。ドライブをマップするパスを確認していますが、ドライブが接続されていません。

networ-online.target、Types=simple、User=Root、WorkingDirectory、restart=on-failure を有効にしてみましたが、再度無効にしました

以下のファイルはftpconnect.serviceと呼ばれます

[Unit]
Description=Maps FTP Bacup to /mnt folder
# After=network.target
# After=systemd-user-sessions.service
# After=network-online.target

[Service]
# User=root
# Type=simple
# PIDFile=/run/my-service.pid
# WorkingDirectory=/mnt/
ExecStart=/mnt/ftpconnect.sh start
#ExecReload=/mnt/ftpconnect.sh reload
#ExecStop=/mnt/ftpconnect.sh stop
# TimeoutSec=30
# Restart=on-failure
# RestartSec=30
# StartLimitInterval=350
# StartLimitBurst=10

[Install]
WantedBy=default.target

.shファイルはftpconnect.shと呼ばれ、/mnt/ftpconnect.shにあります。

#! /bin/sh
### BEGIN INIT INFO
# Provides:          ftpserver
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start ftpserver daemon at boot time
# Description:       Enable ftpserver service provided by daemon.
### END INIT INFO

# Author: Justin Hartman <[email protected]>
# URL: http://justinhartman.co.za
# From Debian skeleton

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/curlftpfs
OPTIONS="-o allow_other ftp://USERNAME:PASSWORD@URL" <<I HAVE REMOVED THESE DETAILS FOR SECURITY>>
MOUNT=/mnt/backupdrive
UMOUNT=/bin/umount
NAME=backupdrive
DESC="Remote FTP Server Mount"

PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

case "$1" in
  start)
        echo -n "Mounting the $DESC: $NAME"
        $DAEMON $OPTIONS $MOUNT
        echo "Server has been mounted at $MOUNT"
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME"
        $UMOUNT $MOUNT
        echo "Server has been unmounted"
        ;;
  restart|force-reload)
        echo -n "Re-mounting the $DESC: $NAME"
        $UMOUNT $MOUNT
        sleep 2
        $DAEMON $OPTIONS $MOUNT
        echo "The server has been re-mounted at $MOUNT"
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0

私が何を間違っているのか、誰か教えてくれませんか。私が読んだ限りでは、すべて問題ないように見えます。しかし、明らかに私は間違った考えを持っています。

答え1

マイケル・ハンプトンに感謝します。これは私にとってはうまくいきました。ドライブは自動的にマウントされるようになりました。

どうやってそれをやったか。

mkdir /mnt/backupdrive    
nano /etc/fstab

追加した

curlftpfs#ftp://USERNAME:[email protected]/ /mnt/backupdrive fuse _netdev 0 0

再起動後に、バックアップドライブの下にマウントされた FTP ドライブを保存して再起動しました。

以下のものを追加しないと、ネットワークが原因でシステムが失敗することがわかりました。ネットワークが接続される前に実行しようとしていたものと思われます。

_netdev

関連情報