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

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

新規登録して質問してみよう
ただいま回答率
85.39%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Q&A

解決済

2回答

22961閲覧

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

baka1241

総合スコア24

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

0グッド

0クリップ

投稿2018/10/17 01:17

下記の、/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

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

soich

2018/10/17 01:24

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

2018/10/17 02:08

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

2018/10/17 02:49

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

2018/10/17 04:07

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

回答2

0

自己解決

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にスクリプ/

投稿2018/10/17 06:32

編集2018/10/17 10:05
baka1241

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

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

投稿2018/10/17 04:32

編集2018/10/17 04:51
taka-saan

総合スコア665

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

baka1241

2018/10/17 06:04

/etc/init.d/vsftpd 自体は、デフォルトから一切変更していません。 また、サービスの起動自体は成功しています。 新たに判明したこととしては、 /etc/init.d/vsftpd restart -> pidファイルが作成される service vsftpd start -> pidファイルが作成されない という違いがあることがわかりました。 その当たりの違いが影響しているようなので、調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問