質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.58%

/var/run/にpidファイルが作成されない

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 11K+

score 24

下記の、/etc/init.d/vsftpdをstartしたところ、プロセスは起動するのですが、pidファイル(/var/run/vsftpd/vsftpd.pid)が作成されません。
他のデーモンは/var/run配下にpidファイルが作成されるのですが、何故かvftpだけ、pidファイルが作成されません。

原因について、ご教授をお願い申し上げます。

#!/bin/sh

### BEGIN INIT INFO
# Provides:             vsftpd
# Required-Start:       $remote_fs $syslog 
# Required-Stop:        $remote_fs $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Very secure FTP server
### END INIT INFO

set -e

DAEMON="/usr/sbin/vsftpd"
NAME="vsftpd"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
LOGFILE="/var/log/vsftpd.log"
CHROOT="/var/run/vsftpd/empty"

test -x "${DAEMON}" || exit 0

if [ ! -e "${LOGFILE}" ]
then
        touch "${LOGFILE}"
        chmod 640 "${LOGFILE}"
        chown root:adm "${LOGFILE}"
fi

if [ ! -d "${CHROOT}" ]
then
        mkdir -p "${CHROOT}"
fi

Check_standalone_mode ()
{
        # Return 1 if vsftpd.conf doesn't have listen=yes or listen_ipv6=yes
        # (mandatory for standalone operation).

        CONFFILE="/etc/vsftpd.conf"

        if [ -e "${CONFFILE}" ] && ! egrep -iq "^ *listen(_ipv6)? *= *yes" "${CONFFILE}"
        then
                echo "${CONFFILE}: listen disabled - service will not start"
                return 1
        fi
}

case "${1}" in
        start)
                Check_standalone_mode || exit 0
                echo -n "Starting FTP server: "

                start-stop-daemon --start --background -m --oknodo --pidfile /var/run/vsftpd/vsftpd.pid --exec ${DAEMON}

                echo "${NAME}."
                ;;

        stop)
                echo -n "Stopping FTP server: "

                start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --oknodo --exec ${DAEMON}
                rm -f /var/run/vsftpd/vsftpd.pid

                echo "${NAME}."

                ;;

        restart)
                echo -n "Stopping FTP server: "

                start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --oknodo --exec ${DAEMON}
                rm -f /var/run/vsftpd/vsftpd.pid

                echo "${NAME}."
                Check_standalone_mode || exit 0
                echo -n "Starting FTP server: "

                start-stop-daemon --start --background -m --pidfile /var/run/vsftpd/vsftpd.pid --exec ${DAEMON}

                echo "${NAME}."
                ;;

        reload|force-reload)
                echo "Reloading FTP server configuration: "

                start-stop-daemon --stop --pidfile /var/run/vsftpd/vsftpd.pid --signal 1 --exec $DAEMON

                echo "${NAME}."
                ;;

        status)
                PID="$(cat /var/run/vsftpd/vsftpd.pid 2>/dev/null)" || true

                if [ ! -f /var/run/vsftpd/vsftpd.pid ] || [ -z "${PID}" ]
                then
                        echo "${NAME} is not running"
                        exit 3
                fi

                if ps "${PID}" >/dev/null 2>&1
                then
                        echo "${NAME} is running"
                        exit 0
                else
                        echo "${NAME} is not running"
                        exit 1
                fi
                ;;

        *)
                echo "Usage: /etc/init.d/${NAME} {start|stop|restart|reload|status}"
                exit 1
                ;;
esac

exit 0

 環境

  • vsftpd  : 3.0.2-17
  • OS : Debian 8.11
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • soich

    2018/10/17 10:24

    vsftpdディレクトリが存在しているかとvsftpdディレクトリの権限が何になっているか教えていただいても宜しいでしょうか。

    キャンセル

  • baka1241

    2018/10/17 11:08

    ありがとうございます。ディレクトリは作成されており、権限は下記のようになっています。drwxr-xr-x 3 root root 80 Aug 31 15:05 vsftpd

    キャンセル

  • soich

    2018/10/17 11:49

    ありがとうございます。root権限で755なのでroot以外でsrartした場合pid作成できなそうです。現在のvsftpdをstartしているユーザを確認していただく&chmod 777 vsftpdすればpid作られそうな気がします。

    キャンセル

  • baka1241

    2018/10/17 13:07

    ありがとうございます。実行ユーザはrootなので、権限の問題ではないようです。また、別の機器にvfsftpdを再構築して、起動させたところ、pidファイルが作成されているので、スクリプトの問題でもなさそうです。構築中になにかゴミファイルが混じってしまった?のかもしれません

    キャンセル

回答 2

check解決した方法

+2

vsftpdはsysvinit(init)とsystemd(service)の両方に対応しており、
serviceの起動だと、systemdで起動し、systemdのservice設定にPIDファイルの設定が記載されていなかったので、pidファイルが作成されていなかったようです。

対象ファイルを削除して、init起動にしたところ、pidファイルが作成されるようになりました。

rm -f /lib/systemd/system/vsftpd.service
reboot
  • 参考

http://www.homu.net/raspberry-piでiotなシステム開発:serviceコマンドはinit-dにスクリプ/

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

構築中になにかゴミファイルが混じってしまった?のかもしれません

スクリプトを改変してしまったことを気にしていらっしゃるのであれば、
別の機器にvfsftpdを再構築して起動している環境のものとdiffをとって
みてはいかがでしょうか。

オリジナルがどうなっているかわかりませんが、1行目のset -e が気になります。
これは非0で返るコマンドが実行された時に、そこでスクリプトの実行を停止するという記述です。

と、思ったのですが、vsftpdが起動できているのであればあまり関係ないですね。。

確認ですが、
(1) psコマンドで見てちゃんと起動されており、ftpサービスも使用できるんですよね?
(2) 起動時にStarting FTP server: vsftpdの表示は正しく出るんですよね?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/17 15:04

    /etc/init.d/vsftpd 自体は、デフォルトから一切変更していません。
    また、サービスの起動自体は成功しています。

    新たに判明したこととしては、
    /etc/init.d/vsftpd restart -> pidファイルが作成される
    service vsftpd start -> pidファイルが作成されない

    という違いがあることがわかりました。

    その当たりの違いが影響しているようなので、調べてみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る