現象
/etc/vsftpd.conf
を編集した後、 systemctl reload httpd
のように systemctl reload vsftpd
しようとしたのですが、以下のエラーで怒られてしまいました。
Failed to reload vsftpd.service: Job type reload is not applicable for unit vsftpd.service. See system logs and ‘systemctl status vsftpd.service’ for details.
systemctl reload httpd
はできるのに、 systemctl reload vsftpd
はできないようです。
調査
調べてみたところ、起動スクリプトに記述があるかどうかで挙動が変わるようです。
httpd.service
# less /lib/systemd/system/httpd.service
## 略
systemctl reload vsftpd しようとしたら Failed to reload vsftpd.service: Job type reload is not applicable for unit vsftpd.service. エラーで怒られた
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
## 略
vsftpd.service
# less /lib/systemd/system/vsftpd.service
## 略
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
## 略
確かに、 vsftpd.service
には ExecReload
の指定がありません。
対処
そこで以下のように ExecReload
を足してみました。
# vi /lib/systemd/system/vsftpd.service
## 略
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID # 追記
## 略
これで restart
とかしてみましょうか。
# systemctl restart vsftpd
Warning: vsftpd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
起動スクリプトが書き換えられたことで警告を発せられてしまいました。検索すると systemctl daemon-reload
でデーモンのリロードをすると良いとのことだったので実施。
# systemctl daemon-reload
# systemctl restart vsftpd
#
OK。怒られずに済みました。
検証
これで準備が整ったので動作を検証します。
# vi /etc/vsftpd.conf
## 略
#force_dot_files=YES ## あえてコメントアウト
## 略
一部の設定を無効にして
# systemctl reload vsftpd
#
リロード。これでFTP接続をして、 .htaccess
などのドット始まりのファイルが表示されなくなったことを確認。
# vi /etc/vsftpd.conf
## 略
force_dot_files=YES ## コメントアウトを解除
## 略
今度は元に戻します。
# systemctl reload vsftpd
#
これでFTP再接続して再びドット始まりのファイルが表示されるようになったことを確認。
意図した挙動が実現できました。
備考
/etc/vsftpd/user_list
や /etc/vsftpd/user_conf/USERNAME
といったユーザに関する設定は reload
や restart
せずとも有効になるようです。
参考
Failed to reload vsftpd.service: Job type reload is not applicable for unit vsftpd.service.
エラーについて
ExecReload
の指定
設定するファイルについて
- Proftpd+(TLS(ftps)+SFTP+MySQL連携)をインストールする(ソースからコンパイル) for CentOS7.3 – Qiita
- 記事は Proftpd のケースですがファイルパスは参考になりました