[Seek Help] 【已解决】怎么守护开机自启动的进程不会被后台杀死 Resolved
Tofloor
poster avatar
liusu
deepin
2023-07-12 16:40
Author

最近在折腾卸载自带uos浏览器后 下载器接管edge浏览器。 现在有一个问题。就是下载器接管edge依赖一个

dlmextensionservice 的服务。我把这个服务设置成开机自启 现在可以正常接管edge的下载了。但是在自动运行一段时间后,这个进程会被杀掉,或者不在运行。

这个dlmextensionservice服务是随自带uos浏览器一起运行的。uos浏览器启动这个进程就会启动。退出后过一段时间自动关闭。

所以现在请教 应该如何让这个进程长期保持运行?

Reply Favorite View the author
All Replies
liusu
deepin
2023-07-12 16:47
#1

我是在/.config/autostart

创建的开机启动。其他的方法太负责,然后我都弄失败了

Reply View the author
liusu
deepin
2023-07-12 16:48
#2

https://bbs.deepin.org/phone/post/236075

以上是原贴的链接

Reply View the author
owen_337
deepin testing team
2023-07-12 19:10
#3

楼主你好,可以尝试使用systemd来确保dlmextensionservice进程长期运行。以下是一种可以尝试的解决方案:

  1. 创建一个dlmextensionservice.service文件,用于定义dlmextensionservice服务的配置。可以使用以下命令创建该文件:

sudo nano /etc/systemd/system/dlmextensionservice.service

  1. 在dlmextensionservice.service文件中,添加以下内容:

[Unit]

Description=dlmextensionservice

[Service]

ExecStart=/usr/bin/dlmextensionservice

Restart=always

RestartSec=3

[Install]

WantedBy=default.target

  1. 保存并关闭文件。
  2. 启用并启动dlmextensionservice服务:
    sudo systemctl daemon-reload

sudo systemctl enable dlmextensionservice

sudo systemctl start dlmextensionservice

这将使dlmextensionservice服务在系统启动时自动启动,并在进程意外退出时自动重新启动。

Reply View the author
liusu
deepin
2023-07-12 19:58
#4
owen_337

楼主你好,可以尝试使用systemd来确保dlmextensionservice进程长期运行。以下是一种可以尝试的解决方案:

  1. 创建一个dlmextensionservice.service文件,用于定义dlmextensionservice服务的配置。可以使用以下命令创建该文件:

sudo nano /etc/systemd/system/dlmextensionservice.service

  1. 在dlmextensionservice.service文件中,添加以下内容:

[Unit]

Description=dlmextensionservice

[Service]

ExecStart=/usr/bin/dlmextensionservice

Restart=always

RestartSec=3

[Install]

WantedBy=default.target

  1. 保存并关闭文件。
  2. 启用并启动dlmextensionservice服务:
    sudo systemctl daemon-reload

sudo systemctl enable dlmextensionservice

sudo systemctl start dlmextensionservice

这将使dlmextensionservice服务在系统启动时自动启动,并在进程意外退出时自动重新启动。

感谢大佬编辑回复,我是有用过这样的方法的 但是似乎不起作用。也许是我哪些内容写错了导致不起作用,晚上回去我按你写的内容重新试一下

Reply View the author
兆兆嘟嘟嘟
deepin
2023-07-13 01:24
#5

你用的Edge浏览器有没有安装“下载器下载支持”插件?

Reply View the author
liusu
deepin
2023-07-13 01:41
#6
兆兆嘟嘟嘟

你用的Edge浏览器有没有安装“下载器下载支持”插件?

肯定有啊,提取的uos浏览器的下载器插件然后打包成crx。

Reply View the author
hotime
deepin
2023-07-13 02:08
#7

我们打开深度浏览器之后,在终端中ps -ef | grep dlm
可以看到除了/usr/bin/dlmextensionservice的进程,在这之前还有一个[startdlmservice]

图片.png

看样子不是直接执行的,所以我们下载“下载器”的deb包看一下,在解压后可以看到在/usr/libexec/openconnect目录下有个startdlmservice.sh,也就是说浏览器可能是通过这个文件去执行dlmextensionservice服务的。

该文件内容如下:

#!/bin/bash

nohup /usr/bin/dlmextensionservice &

这里可以看到,用的是nohup指令去执行的dlmextensionservice服务。

资料可知nohup的作用是即使对应的 Shell 被退出后依然保持运行

不过,经测试发现dlmextensionservice似乎会检测是否有浏览器运行,如果所有浏览器都退出了,那么在数分钟后dlmextensionservice进程也会终止以节省资源。

因为“下载器下载支持”这一插件并没有适配深度浏览器以外的其他Chromium系列浏览器,比如Edge浏览器,在启用这一插件的情况下,打开Edge浏览器并不会执行[startdlmservice],所以dlmextensionservice也未能启动,从而导致下载器无法接管Edge浏览器。

因此,折中一些的话,我们可以在其桌面入口文件中修改Exec参数,使其执行两条命令,除了打开Edge浏览器,还要先执行dlmextensionservice

sudo vim /opt/apps/com.browser.softedge.stable/entries/applications/microsoft-edge.desktop

修改Exec参数为如下所示:

Exec=bash -c "/usr/libexec/openconnect/startdlmservice.sh && /opt/apps/com.browser.softedge.stable/files/microsoft-edge %U"

这样就符合你的需求了。

Reply View the author
hotime
deepin
2023-07-13 02:26
#8
liusu

肯定有啊,提取的uos浏览器的下载器插件然后打包成crx。

对了,下载器的浏览器插件是在这里:/usr/share/downloader/extension/ojlicckikdkkaclkpdddijgehekpmmbg.crx

Reply View the author
liusu
deepin
2023-07-13 03:02
#9
hotime

我们打开深度浏览器之后,在终端中ps -ef | grep dlm
可以看到除了/usr/bin/dlmextensionservice的进程,在这之前还有一个[startdlmservice]

图片.png

看样子不是直接执行的,所以我们下载“下载器”的deb包看一下,在解压后可以看到在/usr/libexec/openconnect目录下有个startdlmservice.sh,也就是说浏览器可能是通过这个文件去执行dlmextensionservice服务的。

该文件内容如下:

#!/bin/bash

nohup /usr/bin/dlmextensionservice &

这里可以看到,用的是nohup指令去执行的dlmextensionservice服务。

资料可知nohup的作用是即使对应的 Shell 被退出后依然保持运行

不过,经测试发现dlmextensionservice似乎会检测是否有浏览器运行,如果所有浏览器都退出了,那么在数分钟后dlmextensionservice进程也会终止以节省资源。

因为“下载器下载支持”这一插件并没有适配深度浏览器以外的其他Chromium系列浏览器,比如Edge浏览器,在启用这一插件的情况下,打开Edge浏览器并不会执行[startdlmservice],所以dlmextensionservice也未能启动,从而导致下载器无法接管Edge浏览器。

因此,折中一些的话,我们可以在其桌面入口文件中修改Exec参数,使其执行两条命令,除了打开Edge浏览器,还要先执行dlmextensionservice

sudo vim /opt/apps/com.browser.softedge.stable/entries/applications/microsoft-edge.desktop

修改Exec参数为如下所示:

Exec=bash -c "/usr/libexec/openconnect/startdlmservice.sh && /opt/apps/com.browser.softedge.stable/files/microsoft-edge %U"

这样就符合你的需求了。

感谢大佬编辑回复。

Reply View the author
liusu
deepin
2023-07-13 06:22
#10
hotime

我们打开深度浏览器之后,在终端中ps -ef | grep dlm
可以看到除了/usr/bin/dlmextensionservice的进程,在这之前还有一个[startdlmservice]

图片.png

看样子不是直接执行的,所以我们下载“下载器”的deb包看一下,在解压后可以看到在/usr/libexec/openconnect目录下有个startdlmservice.sh,也就是说浏览器可能是通过这个文件去执行dlmextensionservice服务的。

该文件内容如下:

#!/bin/bash

nohup /usr/bin/dlmextensionservice &

这里可以看到,用的是nohup指令去执行的dlmextensionservice服务。

资料可知nohup的作用是即使对应的 Shell 被退出后依然保持运行

不过,经测试发现dlmextensionservice似乎会检测是否有浏览器运行,如果所有浏览器都退出了,那么在数分钟后dlmextensionservice进程也会终止以节省资源。

因为“下载器下载支持”这一插件并没有适配深度浏览器以外的其他Chromium系列浏览器,比如Edge浏览器,在启用这一插件的情况下,打开Edge浏览器并不会执行[startdlmservice],所以dlmextensionservice也未能启动,从而导致下载器无法接管Edge浏览器。

因此,折中一些的话,我们可以在其桌面入口文件中修改Exec参数,使其执行两条命令,除了打开Edge浏览器,还要先执行dlmextensionservice

sudo vim /opt/apps/com.browser.softedge.stable/entries/applications/microsoft-edge.desktop

修改Exec参数为如下所示:

Exec=bash -c "/usr/libexec/openconnect/startdlmservice.sh && /opt/apps/com.browser.softedge.stable/files/microsoft-edge %U"

这样就符合你的需求了。

感谢大佬 大佬辛苦了。我测试一下。感谢感谢。

Reply View the author
liusu
deepin
2023-07-13 06:27
#11
hotime

我们打开深度浏览器之后,在终端中ps -ef | grep dlm
可以看到除了/usr/bin/dlmextensionservice的进程,在这之前还有一个[startdlmservice]

图片.png

看样子不是直接执行的,所以我们下载“下载器”的deb包看一下,在解压后可以看到在/usr/libexec/openconnect目录下有个startdlmservice.sh,也就是说浏览器可能是通过这个文件去执行dlmextensionservice服务的。

该文件内容如下:

#!/bin/bash

nohup /usr/bin/dlmextensionservice &

这里可以看到,用的是nohup指令去执行的dlmextensionservice服务。

资料可知nohup的作用是即使对应的 Shell 被退出后依然保持运行

不过,经测试发现dlmextensionservice似乎会检测是否有浏览器运行,如果所有浏览器都退出了,那么在数分钟后dlmextensionservice进程也会终止以节省资源。

因为“下载器下载支持”这一插件并没有适配深度浏览器以外的其他Chromium系列浏览器,比如Edge浏览器,在启用这一插件的情况下,打开Edge浏览器并不会执行[startdlmservice],所以dlmextensionservice也未能启动,从而导致下载器无法接管Edge浏览器。

因此,折中一些的话,我们可以在其桌面入口文件中修改Exec参数,使其执行两条命令,除了打开Edge浏览器,还要先执行dlmextensionservice

sudo vim /opt/apps/com.browser.softedge.stable/entries/applications/microsoft-edge.desktop

修改Exec参数为如下所示:

Exec=bash -c "/usr/libexec/openconnect/startdlmservice.sh && /opt/apps/com.browser.softedge.stable/files/microsoft-edge %U"

这样就符合你的需求了。

真的万分感谢,耽误您这么长时间。

Reply View the author
liusu
deepin
2023-07-13 08:02
#12
hotime

我们打开深度浏览器之后,在终端中ps -ef | grep dlm
可以看到除了/usr/bin/dlmextensionservice的进程,在这之前还有一个[startdlmservice]

图片.png

看样子不是直接执行的,所以我们下载“下载器”的deb包看一下,在解压后可以看到在/usr/libexec/openconnect目录下有个startdlmservice.sh,也就是说浏览器可能是通过这个文件去执行dlmextensionservice服务的。

该文件内容如下:

#!/bin/bash

nohup /usr/bin/dlmextensionservice &

这里可以看到,用的是nohup指令去执行的dlmextensionservice服务。

资料可知nohup的作用是即使对应的 Shell 被退出后依然保持运行

不过,经测试发现dlmextensionservice似乎会检测是否有浏览器运行,如果所有浏览器都退出了,那么在数分钟后dlmextensionservice进程也会终止以节省资源。

因为“下载器下载支持”这一插件并没有适配深度浏览器以外的其他Chromium系列浏览器,比如Edge浏览器,在启用这一插件的情况下,打开Edge浏览器并不会执行[startdlmservice],所以dlmextensionservice也未能启动,从而导致下载器无法接管Edge浏览器。

因此,折中一些的话,我们可以在其桌面入口文件中修改Exec参数,使其执行两条命令,除了打开Edge浏览器,还要先执行dlmextensionservice

sudo vim /opt/apps/com.browser.softedge.stable/entries/applications/microsoft-edge.desktop

修改Exec参数为如下所示:

Exec=bash -c "/usr/libexec/openconnect/startdlmservice.sh && /opt/apps/com.browser.softedge.stable/files/microsoft-edge %U"

这样就符合你的需求了。

经过测试 商店下载的edge可以使用

Reply View the author
foxbcd
deepin
2023-07-14 00:02
#13
liusu

经过测试 商店下载的edge可以使用

用 3 楼 owen_337 的方法不就好了吗,费这么大劲

Reply View the author