登录后,我希望我的自动启动应用程序能够立即启动,但它们似乎只在大约 90 秒后才启动。
我尝试用谷歌搜索,但我看到的都是想要延迟启动应用程序的人......我在寻找相反的东西。
我使用 guake(下拉终端),有时想在登录后立即点击它,但我必须等待自动启动。
这种情况已经持续了很长时间,我甚至不确定它是否是设计使然,但我想知道是否有办法立即运行它(我尝试使用 systemd,但我猜对于 X11 应用程序来说这也不太合适)。这在我的多台机器上表现相同……以前和现在的台式机和笔记本电脑,我从来没有花时间研究它,因为我可以在登录时简单地启动应用程序,它确实立即工作……但是当我让它自动启动时,它会延迟。今天我试图弄清楚,但我完全没有弄清楚如何调试它……
还尝试使用不同的应用程序(gedit)来查看是否是应用程序正在做的事情,但它的行为相同,并且从顶部看你会清楚地看到它们没有运行......然后(90 秒后)它们启动了。
~ cat ~/.config/autostart/guake.desktop seg 20 dez 2021 11:35:40
[Desktop Entry]
Name=Guake Terminal
Comment=Use the command line in a Quake-like terminal
TryExec=guake
Exec=guake
Icon=guake
Type=Application
Categories=GNOME;GTK;System;Utility;TerminalEmulator;
StartupNotify=true
X-Desktop-File-Install-Version=0.22
X-GNOME-Autostart-Delay=0
~ cat /etc/*elease seg 20 dez 2021 11:38:38
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
有人知道发生了什么事吗?
** 编辑 **
~ free -h qui 30 dez 2021 19:07:54
total used free shared buff/cache available
Mem: 31Gi 2,6Gi 25Gi 30Mi 2,9Gi 28Gi
Swap: 2,0Gi 0B 2,0Gi
~ sysctl vm.swappiness qui 30 dez 2021 19:07:56
vm.swappiness = 60
登录后但在自动启动应用程序启动之前
top - 19:12:55 up 10 min, 5 users, load average: 0,11, 0,32, 0,31
Tasks: 460 total, 1 running, 458 sleeping, 0 stopped, 1 zombie
%Cpu(s): 0,0 us, 0,4 sy, 0,0 ni, 99,6 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
MiB Mem : 32015,8 total, 27507,7 free, 1505,3 used, 3002,8 buff/cache
MiB Swap: 2048,0 total, 2048,0 free, 0,0 used. 30073,2 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
832 root 20 0 0 0 0 S 1,7 0,0 0:09.37 nvidia-modeset/
6604 root 20 0 24,2g 55624 35720 S 1,3 0,2 0:01.70 Xorg
7245 pguedes 20 0 816508 84356 49328 S 1,0 0,3 0:01.19 guake
200 root 20 0 0 0 0 I 0,3 0,0 0:00.08 kworker/15:1-events
1517 root -51 0 0 0 0 S 0,3 0,0 0:02.13 irq/110-nvidia
6747 pguedes 20 0 5041032 374532 112356 S 0,3 1,1 0:03.69 gnome-shell
6757 pguedes 20 0 153416 8964 7020 S 0,3 0,0 0:00.19 gesticled
7931 pguedes 20 0 12272 4156 3076 R 0,3 0,0 0:00.20 top
1 root 20 0 168648 12748 8436 S 0,0 0,0 0:01.21 systemd
2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 kworker/0:0H-events_highpri
7 root 20 0 0 0 0 I 0,0 0,0 0:00.04 kworker/0:1-rcu_par_gp
9 root 0 -20 0 0 0 I 0,0 0,0 0:00.00 mm_percpu_wq
10 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcu_tasks_rude_
11 root 20 0 0 0 0 S 0,0 0,0 0:00.00 rcu_tasks_trace
12 root 20 0 0 0 0 S 0,0 0,0 0:00.00 ksoftirqd/0
13 root 20 0 0 0 0 I 0,0 0,0 0:00.13 rcu_sched
14 root rt 0 0 0 0 S 0,0 0,0 0:00.00 migration/0
15 root -51 0 0 0 0 S 0,0 0,0 0:00.
答案1
最终我发现问题是一个守护进程(我自己编写的)导致了这个问题,因为我错过了 gnome 文档中的以下几行。
应用程序的启动阶段由其 .desktop 文件中的 X-GNOME-Autostart-Phase 键控制。如果未设置,则默认为应用程序阶段。前 4 个阶段中的应用程序在启动并运行时必须向会话管理器发出信号(通过 XSMP);会话管理器不会启动下一个阶段,直到当前阶段的每个应用程序都表明它已准备就绪。应用程序阶段中的应用程序不一定会与会话管理器通信。
并且在同一页面上稍后还出现:
在“初始化”阶段,应用程序可以以状态 0 退出,以表明已完成设置。
看https://wiki.gnome.org/Projects/SessionManagement/NewGnomeSession#Startup
这意味着在初始化阶段启动的应用程序需要返回 0 以表明它们已完成设置,gnome 会话启动可以继续...否则它会超时(就像发生在我身上的情况一样)。我在文档中错过了这一点,所以我基本上是在那个阶段从那个 .desktop 启动我的守护进程 :facepalm:
把答案留在这里,以防它能帮助别人调试类似的东西