fhs-install-v2ray icon indicating copy to clipboard operation
fhs-install-v2ray copied to clipboard

对于仓库中 v2ray.service [email protected] 能不能同时使用的问题

Open unknowndevQwQ opened this issue 5 years ago • 22 comments
trafficstars

就像标题问的那样,我发现 v2ray.service 中的 -confdir 指定的是 /usr/local/etc/v2ray,但是 [email protected] 是 -config /usr/local/etc/v2ray/%i.json

如果打算同时使用这两个 .service 的话,是否会带来不便?

unknowndevQwQ avatar Jun 04 '20 08:06 unknowndevQwQ

的確是會帶來不便的,這可能會造成配置上的衝突。

因為 v2ray.service 會讀取目錄下的所有配置,之所以保留 [email protected],是為了應對仍要使用單文件配置的情況,所以沒有考慮同時使用 v2ray.service[email protected] 的情景。

ghost avatar Jun 13 '20 06:06 ghost

的確是會帶來不便的,這可能會造成配置上的衝突。

因為 v2ray.service 會讀取目錄下的所有配置,之所以保留 [email protected],是為了應對仍要使用單文件配置的情況,所以沒有考慮同時使用 v2ray.service[email protected] 的情景。

原来如此,那未来会做出改变吗?

unknowndevQwQ avatar Jun 14 '20 01:06 unknowndevQwQ

我個人更傾向於保持現狀,因為多文件配置可以解決大多使用場景了。

不過,如果你願意,可以對現有的 service 進行修改或是替換,比如 v2ray.service 讀取單獨的一個目錄,[email protected] 又讀取單獨的另一個目錄,一個簡單的小腳本,又或是一小部分文檔說明,就可以解決,並且,這可以作為對現有內容的補充,以應對此類問題。

ghost avatar Jun 14 '20 02:06 ghost

我個人更傾向於保持現狀,因為多文件配置可以解決大多使用場景了。

不過,如果你願意,可以對現有的 service 進行修改或是替換,比如 v2ray.service 讀取單獨的一個目錄,[email protected] 又讀取單獨的另一個目錄,一個簡單的小腳本,又或是一小部分文檔說明,就可以解決,並且,這可以作為對現有內容的補充,以應對此類問題。

例如 config2confdir.sh 吗?

unknowndevQwQ avatar Jun 14 '20 10:06 unknowndevQwQ

是的。

ghost avatar Jun 26 '20 17:06 ghost

安装脚本在升级时好像没有考虑到用户已经在使用[email protected]的情况,升级后直接启动了v2ray.service(且升级前没有停止[email protected])。

sixg0000d avatar Jul 05 '20 11:07 sixg0000d

安装脚本在升级时好像没有考虑到用户已经在使用[email protected]的情况,升级后直接启动了v2ray.service(且升级前没有停止[email protected])。

确实

unknowndevQwQ avatar Jul 07 '20 14:07 unknowndevQwQ

建议重新打开一下,因为还有一个问题没有解决

unknowndevQwQ avatar Jul 13 '20 06:07 unknowndevQwQ

@unknowndev233 可以新建一個文件夾,例如:

/usr/local/etc/v2ray/config/

然後將 [email protected] 文件中的 ExecStart 部分修改為:

ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config/%i.json

ghost avatar Jul 13 '20 10:07 ghost

@unknowndev233 可以新建一個文件夾,例如:

/usr/local/etc/v2ray/config/

然後將 [email protected] 文件中的 ExecStart 部分修改為:

ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/config/%i.json

问一下,systemd 文件放在 /usr/local/lib/systemd/system 时 systemd 也可以感知到吗?

unknowndevQwQ avatar Jul 13 '20 15:07 unknowndevQwQ

剛剛試了一下,是可以的。

ghost avatar Jul 13 '20 16:07 ghost

剛剛試了一下,是可以的。

我有一个想法,把 unit 文件放在那里,然后有个脚本在 /etc/systemd/system/v2ray.service.d 做覆盖

unknowndevQwQ avatar Jul 13 '20 16:07 unknowndevQwQ

/etc/systemd/system/
├── v2ray.service -> /usr/local/lib/systemd/system/v2ray.service
└── [email protected] -> /usr/local/lib/systemd/system/[email protected]

是類似這種結構麼?

ghost avatar Jul 13 '20 16:07 ghost

/etc/systemd/system/
├── v2ray.service -> /usr/local/lib/systemd/system/v2ray.service
└── [email protected] -> /usr/local/lib/systemd/system/[email protected]

是類似這種結構麼?

不是

unknowndevQwQ avatar Jul 18 '20 13:07 unknowndevQwQ

在 /etc/systemd/system/xxx.service.d 下创建的 .conf 文件可以覆盖原本 .service 文件的内容

假设有一个 /etc/systemd/system/v2ray.service.d/overlayExecStart.conf 文件,内容如下: [Service] ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir

unknowndevQwQ avatar Jul 24 '20 11:07 unknowndevQwQ

這個可以直接執行:

# systemctl edit unit

這會建立一個子配置文件,但並不是所有參數都會被子配置文件覆蓋,並且,在修改 ExecStart 前必須將其置空。

下面是一個例子:

[Service]
User=v2ray
ExecStart=
ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir/

也可執行:

# systemctl edit --full unit

這會打開 /etc/systemd/system/unit


上述方案應由使用者自行判斷。

ghost avatar Jul 24 '20 12:07 ghost

這會建立一個子配置文件,但並不是所有參數都會被子配置文件覆蓋,並且,在修改 ExecStart 前必須將其置空。

下面是一個例子:

[Service]
User=v2ray
ExecStart=
ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir/

~~不需要空吧?~~ 实测发现需要

unknowndevQwQ avatar Jul 29 '20 08:07 unknowndevQwQ

這個可以直接執行:

# systemctl edit unit

這會建立一個子配置文件,但並不是所有參數都會被子配置文件覆蓋,並且,在修改 ExecStart 前必須將其置空。

下面是一個例子:

[Service]
User=v2ray
ExecStart=
ExecStart=/usr/local/bin/v2ray -confdir /etc/v2ray/confdir/

也可執行:

# systemctl edit --full unit

這會打開 /etc/systemd/system/unit

上述方案應由使用者自行判斷。

或许可以把这部分写进文档里

unknowndevQwQ avatar Aug 08 '20 15:08 unknowndevQwQ

额外一提,如果两个配置文件都使用 confdir 的话,那么 v2ray 文件夹可能要考虑创建一个 default 或者类似的文件夹给非模板配置使用

unknowndevQwQ avatar Aug 12 '20 01:08 unknowndevQwQ

@unknowndev233 看看 PR #114 对于解决这个问题是不是足够。

IceCodeNew avatar Sep 19 '20 13:09 IceCodeNew

小白问一下这两个v2ray.service和[email protected]有什么区别呢?我现在用的是4.28.2最新版本,v2ray和caddy都是亲自手动安装的,就是在/etc/systemd/system/下放置*.service文件时感觉[email protected]完全用不到啊,在执行指令systemctl daemon-reload 和 systemctl enable v2ray后,并没有提及到[email protected]这个文件,是不是这个文件没什么太大用处或者用不到?

GleenJi avatar Sep 20 '20 18:09 GleenJi

小白问一下这两个v2ray.service和[email protected]有什么区别呢?我现在用的是4.28.2最新版本,v2ray和caddy都是亲自手动安装的,就是在/etc/systemd/system/下放置*.service文件时感觉[email protected]完全用不到啊,在执行指令systemctl daemon-reload 和 systemctl enable v2ray后,并没有提及到[email protected]这个文件,是不是这个文件没什么太大用处或者用不到?

Refer: https://www.freedesktop.org/software/systemd/man/systemd.unit.html

IceCodeNew avatar Sep 21 '20 00:09 IceCodeNew