您尚未登录。

#1 2022-10-13 13:39:27

野鹤
会员
注册时间: 2022-08-15
帖子: 53

(已解决)求助:怎样让一个程序开机启动

我的系统安装了Canon LBP2900+打印机,能够正常打印,但需要加载captstatusui 程序才能自动检测缺纸、卡纸等状态。请问如何将程序设置为开机启动?谢谢

最近编辑记录 野鹤 (2022-11-17 10:24:14)

离线

#2 2022-10-13 14:05:19

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

桌面是mate

离线

#3 2022-10-13 18:18:05

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,964
个人网站

Re: (已解决)求助:怎样让一个程序开机启动

取决于类型:

  • 作为系统服务,编写 systemd 系统服务(xx.service)然后 systemctl enable 之

  • 作为用户服务,编写 systemd 用户服务(xx.service;文件位置不一样)然后 systemctl --user enable 之

  • 作为桌面环境自启动项,编写 .desktop 文件然后放到 autostart 目录

很多软件会依具体情况给你打包好相应的 .service 或者 .desktop 文件,你启用就好了。

离线

#4 2022-10-13 20:12:30

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

谢谢回复。还要继续请教:
1.如果作为系统服务,把程序相关的命令语句写在.service里,还是再创建一个脚本用来调用?
2.如果作为用户服务,.service放在哪里 ?
3.deepin系统存在~/.config/autostart目录,arch下autostart在哪里?

依云 说:

取决于类型:

  • 作为系统服务,编写 systemd 系统服务(xx.service)然后 systemctl enable 之

  • 作为用户服务,编写 systemd 用户服务(xx.service;文件位置不一样)然后 systemctl --user enable 之

  • 作为桌面环境自启动项,编写 .desktop 文件然后放到 autostart 目录

很多软件会依具体情况给你打包好相应的 .service 或者 .desktop 文件,你启用就好了。

最近编辑记录 野鹤 (2022-10-13 20:40:28)

离线

#5 2022-10-13 20:27:34

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,964
个人网站

Re: (已解决)求助:怎样让一个程序开机启动

简单的就直接写了,复杂的要写个脚本 wrap 一下。

离线

#6 2022-10-13 20:46:54

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

请问,如果作为用户服务,.service放在哪里 ?
另外,deepin系统存在~/.config/autostart目录,arch下autostart在哪里?

依云 说:

简单的就直接写了,复杂的要写个脚本 wrap 一下。

离线

#7 2022-10-13 21:39:29

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,964
个人网站

Re: (已解决)求助:怎样让一个程序开机启动

一般是 ~/.config/systemd/user 下。见 https://man.archlinux.org/man/systemd.unit.5
~/.config/autostart 是 XDG 标准。这个是由桌面环境处理的。

离线

#8 2022-10-13 21:50:44

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

非常感谢

依云 说:

一般是 ~/.config/systemd/user 下。见 https://man.archlinux.org/man/systemd.unit.5
~/.config/autostart 是 XDG 标准。这个是由桌面环境处理的。

离线

#9 2022-10-14 20:56:40

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

小白再问:
请问为什么一个命令在终端可以运行,写入.desktop也可以运行,但作为服务不能运行 ?

依云 说:

一般是 ~/.config/systemd/user 下。见 https://man.archlinux.org/man/systemd.unit.5
~/.config/autostart 是 XDG 标准。这个是由桌面环境处理的。

最近编辑记录 野鹤 (2022-10-15 06:40:09)

离线

#10 2022-10-14 23:07:03

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,964
个人网站

Re: (已解决)求助:怎样让一个程序开机启动

看看报错?大约是环境变量的问题,比如 DISPLAY 变量,是在你登录图形环境之后才设置上的。

离线

#11 2022-10-15 06:47:39

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

谢谢大神。
在桌面终端里systemctl start 之,没有任何提示,也没有相关进程驻留(.desktop方式可以驻留)。把.service中的命令语句换成mkdir,systemctl start可以创建目录。

依云 说:

看看报错?大约是环境变量的问题,比如 DISPLAY 变量,是在你登录图形环境之后才设置上的。

最近编辑记录 野鹤 (2022-10-15 09:26:30)

离线

#12 2022-10-15 11:43:23

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,964
个人网站

Re: (已解决)求助:怎样让一个程序开机启动

systemctl status 之看看。

离线

#13 2022-10-16 09:05:13

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

错误提示如下,请您看看。
$ sudo systemctl status capt
× capt.service - AutoExec
     Loaded: loaded (/etc/systemd/system/capt.service; disabled; preset: disabl>
     Active: failed (Result: exit-code) since Sun 2022-10-16 09:06:15 CST; 2s a>
   Duration: 14ms
    Process: 1637 ExecStart=/usr/bin/captstatusui -P LBP3000 (code=exited, stat>
   Main PID: 1637 (code=exited, status=1/FAILURE)
        CPU: 14ms

10月 16 09:06:15 archlinux systemd[1]: Started AutoExec.
10月 16 09:06:15 archlinux captstatusui[1637]: cannot open display:
10月 16 09:06:15 archlinux systemd[1]: capt.service: Main process exited, code=>
10月 16 09:06:15 archlinux systemd[1]: capt.service: Failed with result 'exit-c>


依云 说:

systemctl status 之看看。

最近编辑记录 野鹤 (2022-10-16 09:07:57)

离线

#14 2022-10-16 09:13:20

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

如果将ExecStart=/usr/bin/captstatusui -P LBP3000 改成ExecStart=/usr/bin/captstatusui -P LBP3000  -e,提示如下:
× capt.service - AutoExec
     Loaded: loaded (/etc/systemd/system/capt.service; disabled; preset: disabl>
     Active: failed (Result: exit-code) since Sun 2022-10-16 09:11:15 CST; 22s >
   Duration: 14ms
    Process: 1702 ExecStart=/usr/bin/captstatusui -P LBP3000 -e (code=exited, s>
   Main PID: 1702 (code=exited, status=1/FAILURE)
        CPU: 14ms

10月 16 09:11:15 archlinux systemd[1]: Started AutoExec.
10月 16 09:11:15 archlinux captstatusui[1702]: cannot open display:
10月 16 09:11:15 archlinux systemd[1]: capt.service: Main process exited, code=>
10月 16 09:11:15 archlinux systemd[1]: capt.service: Failed with result 'exit-c>

离线

#15 2022-10-16 09:18:36

野鹤
会员
注册时间: 2022-08-15
帖子: 53

Re: (已解决)求助:怎样让一个程序开机启动

在终端直接执行captstatusui -P LBP3000 ,会弹出一个窗口。执行captstatusui -P LBP3000  -e,不会弹出窗口,但captstatusui 进程会驻留。

离线

页脚