標籤:centos 7 vsftpd
不小心安裝了CentOS 7(說多了都是淚呀,各種不適應),不過隨遇而安吧(PS:不要用既來之則安之,不懂的可以百度。),裝完系統後想跑個Vsftpd,
yum -y install vsftpd
坐等安裝完畢(用的手機2G流量那個心塞)。
啟動vstfpd:
service start vsftpd (這條命令現在已經不管用了,)
/etc/init.d/vsftd start (想都不用想,就沒有這個指令碼)
這可怎麼辦?當然是systemctl了,這個命令在今後的版本裡非常有用需要熟練掌握。
馬上來
systemctl list-unit-files |grep vsftpd.service
發現vsftpd.service服務果然是關閉的如下:
vsftpd.service disabled
沒錯,就是disable,然後啟動該服務
systemctl start vsftp.service
馬上來
systemctl list-unit-files |grep vsftpd.service
發現vsftpd.service服務竟然是關閉的如下:
vsftpd.service disabled
是不是感覺當頭一棒。
網上給了幾個解決方案莫過於關閉連接埠和重啟進程其實都不能解決這個問題,
所有才有了這篇文章:單獨說開啟這個服務沒啥意思,我們分析一下原理
1>查看一下進程狀態
[[email protected] ~]# systemctl status vsftpd.service
vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled)
Active: active (running) since 一 2015-10-19 23:37:06 CST; 11min ago
Main PID: 23165 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─23165 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
10月 19 23:37:06 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
10月 19 23:37:33 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
10月 19 23:38:39 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon
這裡注釋一下命令(畢竟每個人都是從小白過來的嘛,不要歧視小白):
vsftpd.service - Vsftpd ftp daemon(開啟服務就要開啟daemo,我到現在都弄不明白這兩 個有啥區別,反正書上就這麼說的)
然後是Loaded(載入)/usr/lib/systemd/system/vsftpd.service,並且失敗,這裡標記一下 待會說。
然後是進程號和設定檔路徑,不解釋。
最先三條是日誌記錄嘗試啟動vsftp ftp daemon(如果不理解daemo就乾脆理解為服務,個人觀 點,不接受高手吐槽)。
看完了這個咱們再看看日誌,CentOS 7 上面沒了syslog,沒錯,是沒了,呵呵,替代品 是journalctl,至於這個命令不解釋,自己可以去百度,這裡只需要知道使用(journalctl -xn)就好,資訊如下:
10月 19 23:37:06 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
-- Subject: Unit vsftpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit vsftpd.service has finished starting up.
--
-- The start-up result is done.
解釋一下:
啟動daemon(沒錯我就是個夜貓子,)
vsftpd.service 被終止啟動,系統做出判斷(翻譯比較粗糙湊合看吧,原諒我這英語四級都沒 過的人),
然後是啟動結果是已經啟動了(啟動了,沒啟動起來,也不報個錯“囧”)
然後讓去、http://lists.freedesktop.org/mailman/listinfo/systemd-devel尋求協助,
哈哈到這裡大家應該已經能看明白哪裡出問題了,如果您沒看出來不要緊,往下看
沒錯就是vsftpd.service的daemon啟動不起來,系統還提示了個systemd-devel,我們馬不停蹄 去看看vsftpd.service的daemon(也是上文的那個小尾巴,就是查看這裡)
cat /usr/lib/systemd/system/vsftpd.service
[Unit]
Description=Vsftpd ftp daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
[Install]
不用擔心這個也肯定沒問題,我就是想讓你來看看daemon檔案,可以修改ExecStart的內容,當 然沒人像我這麼無聊,不過如果你想讓別人找不到你的設定檔就很好用啦,自訂讓他們找 不到。
daemon沒問題,那還會什麼有問題呀,那就是runlevel了,馬上輸入
chkconfig --list vsftpd
注意:該輸出結果只顯示 SysV 服務,並不包含原生 systemd 服務。SysV 配置資料可能被原 生 systemd 配置覆蓋。
如果您想列出 systemd 服務,請執行 ‘systemctl list-unit-files‘。
欲查看對特定 target 啟用的服務請執行
‘systemctl list-dependencies [target]‘。
(我啟用了中文。)
看來使要使用systemctl list-unit-files來查看,走起
systemctl list-unit-files | grep vsftpd.service
這不又回到原點了嘛,依舊是:
vsftpd.service disabled
好吧,實在是沒辦法,那我們只好跑到這個runlevel下面看看究竟是出了什麼問題,還有就是 這個systemctl究竟是何方神聖。
ll /etc/systemd/system/multi-user.target.wants
總用量 0
lrwxrwxrwx. 1 root root 35 10月 17 18:07 atd.service -> /usr/lib/systemd/system/atd.service
lrwxrwxrwx. 1 root root 38 9月 25 12:54 auditd.service -> /usr/lib/systemd/system/auditd.service
lrwxrwxrwx. 1 root root 37 9月 25 12:50 crond.service -> /usr/lib/systemd/system/crond.service
lrwxrwxrwx. 1 root root 42 9月 25 12:52 irqbalance.service -> /usr/lib/systemd/system/irqbalance.service
lrwxrwxrwx. 1 root root 46 9月 25 12:51 NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root root 40 9月 25 12:49 remote-fs.target -> /usr/lib/systemd/system/remote-fs.target
lrwxrwxrwx. 1 root root 39 9月 25 12:52 rsyslog.service -> /usr/lib/systemd/system/rsyslog.service
lrwxrwxrwx. 1 root root 40 10月 17 01:37 sendmail.service -> /usr/lib/systemd/system/sendmail.service
lrwxrwxrwx. 1 root root 41 10月 17 01:37 sm-client.service -> /usr/lib/systemd/system/sm-client.service
lrwxrwxrwx. 1 root root 36 9月 25 12:55 sshd.service -> /usr/lib/systemd/system/sshd.service
lrwxrwxrwx. 1 root root 37 9月 25 12:55 tuned.service -> /usr/lib/systemd/system/tuned.service
果然發現問題了,systemctl通過調用該檔案下的軟串連來實現該service是否被啟動,當然本 文描述的vsftpd.service的軟串連,所以無法啟動,細心的讀者一定發現了,這個軟串連串連的就是 這個服務的daemon了,發現問題後,問題就容易解決了,
1> cd /etc/systemd/system/multi-user.target.wants
然後添加
ln -s ‘/usr/lib/systemd/system/vsftpd.service‘ ‘/etc/systemd/system/multi-user.target.wants/vsftpd.service‘
手動建立一個串連
2>大家也許會嫌麻煩,那有沒有更簡單的辦法呀,答案也是有的,就是:
systemctl enable vsftpd.service
然後查看
systemctl list-unit-files | grep vsftpd.service
服務是不是起來了:
vsftpd.service enabled
備忘:雖然大家只是命令輸錯了。本文的目的是希望大家能學會分析問題,而不是做伸手黨,以上就是我解決該問題的步驟,有不足之處歡迎指正,
另:轉載請指明出處。
本文出自 “慕白流蘇” 部落格,請務必保留此出處http://mubsky.blog.51cto.com/3081455/1704380
CentOS 7 Vsftpd無法啟動詳解