1
miyuki 2019-02-27 16:28:38 +08:00 via Android 2
|
2
KasuganoSoras 2019-02-27 16:29:39 +08:00
把你的报错贴出来看看
|
3
zhoulouzi 2019-02-27 16:33:36 +08:00 1
没必要问为什么用, 找资料学怎么用 会查报错就够了
|
4
Love4Taylor 2019-02-27 16:35:21 +08:00
sudo systemctl status xxx.service -l 或 sudo journalctl -xe 把相关错误扔上来...
另, 不是所有服务都可以直接一句 rc.local 搞定的. |
5
jiafaner OP @zhoulouzi
@KasuganoSoras @miyuki 感谢 没有任何报错 我照着文档把所有能做的,都做了 现在的情况是登录后直接用 systemctl start,服务就启来了 可是,不手工执行却不能够自动启动 实在不知道怎么整了 |
6
aver4vex 2019-02-27 16:37:13 +08:00
是不是你的这个服务需要别的服务依赖?
|
7
AngryPanda 2019-02-27 16:38:17 +08:00
@jiafaner 是不是启动顺序的问题。依赖的服务没有启动?
|
8
jiafaner OP |
9
jiafaner OP @aver4vex
@AngryPanda 不熟悉依赖的服务是什么意思,查了文档说有依赖关系,我们的服务就是启动后去远程注册一下,然后就在本机接收 socket 请求,用 httpd 差不多的 我写的.service 是抄的 httpd.service |
10
KasuganoSoras 2019-02-27 16:40:54 +08:00
@jiafaner #8 有些服务是需要依赖网络的,你可能需要设置它在 network 起来了以后才启动
|
12
jiafaner OP |
13
mason961125 2019-02-27 16:59:18 +08:00
我觉得你用了 systemctl --user 然后还没有 loginctl enable-linger
|
14
mason961125 2019-02-27 16:59:54 +08:00
顺带说一句,systemd 这种方便的依赖关系,你用 rc.local 实现起来难度要大的多。
|
15
MeteorCat 2019-02-27 17:39:18 +08:00 via Android
你是不是启动脚本没给权限
|
16
season4675 2019-02-27 17:43:58 +08:00
因为 systemd 异步启动,启动速度更快啊。而且里面自带各种系统,用起来也方便~~~
|
18
guokeke 2019-02-27 17:53:46 +08:00 via Android
当初改 systemd 社区一片骂声。
|
19
SakuraKuma 2019-02-27 17:55:09 +08:00
chkconfig on ???? 试试
|
20
k9982874 2019-02-27 17:56:20 +08:00
@jiafaner #5 你这是明显没有让服务随系统启动。执行 systemctl enable xxx 试试
这真不是 systemd 的锅 |
22
hcymk2 2019-02-27 17:59:08 +08:00
syste m d 有 debug 模式有日志的。
|
23
dbw9580 2019-02-27 18:05:09 +08:00 via Android
你得把你的配置文件贴出来啊,不然是要隔空猜吗?
https://superuser.com/questions/955922/enabled-systemd-unit-does-not-start-at-boot |
24
Jeremial 2019-02-27 18:06:30 +08:00
[Unit]
Description=blablabla Requires=systemd-networkd.service After=network-online.target systemd-resolved.service Wants=network-online.target systemd-resolved.service |
25
Jeremial 2019-02-27 18:07:20 +08:00
使用 systemd 挂载 smb 的时候遇到过, 需要 network OK 了才行
|
26
biggray0312 2019-02-27 18:23:34 +08:00 via Android
楼主你试试把配好的 systemd service 文件放到系统挂载点下的目录中, 比如 /etc/systemd/.../ 下,再去 enable,也许就好了。我过去的经验告诉我这个和 service 文件的位置是有关系的。
|
27
Ansen 2019-02-27 18:33:13 +08:00
systemctl enable xxx
|
28
mason961125 2019-02-27 18:44:04 +08:00
哦...想起来了,systemctl daemon-reload 了吗?
|
29
reself 2019-02-27 18:46:53 +08:00 via Android
如果 start 能正常启动而 enable 不能正常自动启动的话,考虑是服务依赖的问题,调整一下服务依赖,按依赖顺序启动应该就没问题了
|
30
kernel 2019-02-27 19:34:07 +08:00
你要用回 rc.local 也是一句话的事儿
|
31
hljjhb 2019-02-27 20:32:00 +08:00 via Android
帖 service 内容有这么难么 让大家帮着一起猜(〜 ̄▽ ̄)〜
|
32
tabris17 2019-02-27 20:38:54 +08:00
systemd 的确是好东西,启动脚本写起来太麻烦了
|
33
jiafaner OP |
34
CallMeReznov 2019-02-27 22:17:19 +08:00
其实很简单,LZ 搜索一下默认系统里有没有较晚启动的服务,然后在配置文件 Wants 填上,试验一下会不会正常即可
我第一次搞也是莫名其妙的(其实现在也只是会找网上的抄下来罢了) |
35
cy97cool 2019-02-27 22:26:58 +08:00 via Android
我瞎猜一下 难道是\r\n 的换行方式问题?
改成\n 换行试试 |
36
zmz125000 2019-02-27 23:10:41 +08:00 via Android
不同用户环境变量的问题?
|
37
izoabr 2019-02-27 23:19:12 +08:00
我也觉得是,这东西太复杂了点,以前 init script 的时候很干净很清爽,自己很清楚都起了啥服务,都干啥用的,现在一堆服务都不知道啥玩意儿。
但对桌面系统的话可能会比较好 |
38
uyhyygyug1234 2019-02-27 23:39:22 +08:00
centos 我之前记录了一个样例
配置 Supervisor 开机启动: vi /usr/lib/systemd/system/supervisord.service [Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target 配置开机自启 systemctl enable supervisord 验证一下是否为开机启动:systemctl is-enabled supervisord |
39
q397064399 2019-02-28 07:34:30 +08:00 via iPhone
supervisorctl 大部分人只是想要一个自动启动的守护进程罢了
|
40
julyclyde 2019-02-28 08:03:00 +08:00
你不需要并不代表没人需要
你可以坚持你自己的用法啊,也不是必须学 systemd |
41
huyudong1991 2019-02-28 08:22:34 +08:00 via iPhone
加个 crond 进程检测
|
42
ofblyt 2019-02-28 12:13:38 +08:00
systemd 实在是太好用了
|
43
janxin 2019-02-28 12:26:47 +08:00
LZ 要么了解一下 rc.local 和 systemd 使用时候的区别?
|
44
May725 2019-02-28 13:26:53 +08:00
我倒觉得 systemd 挺明朗的, 以前的脚本需要注意的内容太多了。
|