問題描述
不知道是否有同我一樣作死(被逼無奈)的人,反覆安裝某一個軟件,導致在systemctl enable service
的時候,無論如何都無法將服務設置成開機啓動。
我只是單純的在安裝grafana
的過程中走了一些彎路,詳見我的另外一篇博客 http://blog.csdn.net/hsdfz0201/article/details/77480810
不知道中間做了什麼,這個服務無論如何設不成enabled
,反而告訴我他的狀態是generated
問題表象
具體的表象是
(python2.7) xxx@ubuntu:/lib/systemd/system$ sudo systemctl status grafana-server
grafana-server.service - Grafana instance
Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; generated; vendor preset: enabled)
Active: active (running) since Mon 2017-09-11 12:47:06 CST; 12h ago
Docs: http://docs.grafana.org
Main PID: 24093 (grafana-server)
Tasks: 50 (limit: 4915)
Memory: 108.0M
CPU: 3min 11.328s
CGroup: /system.slice/grafana-server.service
└─24093 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile= cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg
Sep 11 23:21:41 ubuntu grafana-server[24093]: t=2017-09-11T23:21:41+0800 lvl=info msg=uploaded logger=alerting.notifier url=
可以看到這時的service
狀態是generated
儘管他聲稱vendor preset
也就是軟件預設的是enabled
,這時嘗試enable
的效果是
(python2.7) xxx@ubuntu:/usr/lib/systemd/system$ sudo systemctl enable grafana-server.service
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Failed to enable unit: Unit /run/systemd/generator.late/grafana.service is transient or generated.
經過努力查詢,發現generated
就是不能 enabled
, 但是爲什麼變成generated
?
問題解決
在另一臺機器上,嘗試重新安裝,發現enable
成功。
(中間還有依賴問題,用sudo apt-get --fix-broken install/upgrade
搞定)
說明問題在於我改了什麼,軟件本身是不會generated
的。
查看/etc/systemd/system
,發現 grafana-server.service -> /lib/systemd/system/grafana.service
是紅色的,意味着軟連接的文件不存在。在/usr/lib/systemd/system/grafana.service
我找到了這一文件,將文件cp
到應有的位置,
systemctl daemon-reload
重置一下狀態,發現可以enable
問題解決。
總結
如果出現enable
不能進行,尤其是狀態爲generated
的時候,很大概率是.service
文件出了問題,修改文件或者重新軟鏈接很可能可以解決問題。ubuntu
在比較新的版本使用systemd
,相關的內容值得我們學習。