如何找出自动启动的程序?

如何找出自动启动的程序?

有很多建议如何让程序自动启动,但我现在需要的是相反的:我想找出为什么某个程序在启动时启动。

用例如下:经过一番折腾,xbindkeys 我决定关闭 Ubuntu,拍摄虚拟机快照,然后使其xbindkeys自动启动。但是,xbindkeys启动后它已经运行了。我该如何找出原因?

尝试过systemctl,研究过~/.bashrc~/.profile不在那里。pstreexbindkeys直接来自systemd

Ubuntu 18.04.3 LTS。

答案1

当你安装包时xbindkeys

sudo apt install xbindkeys

它会在用户主目录中创建一个 .desktop 文件,其中$HOME/.config/autostart/包含以下内容

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=xbindkeys
Comment=Start xbindkeys
Exec=xbindkeys_autostart
Terminal=false
Type=Application
Categories=
GenericName=
Hidden=true

如果你观察这一Exec行,这个 .desktop 文件将会执行xbindkeys_autostart,它实际上/usr/bin/xbindkeys_autostart包含以下内容

#!/bin/bash

set -e
set -u
set -E

PROG="/usr/bin/xbindkeys"
NOAUTO="${HOME}/.xbindkeys.noauto"

# This file autostarts xbindkeysrc if the user (or system) has a config
# for it AND does NOT Have a .xbindkeys.noauto in his homedir.

# we only run if there is no NOAUTO file
if ! [[ -f ${NOAUTO} ]] && [[ -x ${PROG} ]]; then
    # User config wins over system config
    # guile config wins over classic config
    for cfile in "/etc/xbindkeysrc" "$HOME/.xbindkeysrc" "$HOME/.xbindkeysrc.scm"; do
        if [[ -f ${cfile} ]] || [[ -L ${cfile} ]]; then
            CONF="${cfile}"
        fi
    done

    # Run $PROG - if it has been configured
    if [ -n "${CONF}" ]; then
        $PROG -f $CONF
    fi
fi

例如,手动添加自动启动程序,直接在启动应用程序列表中输入命令,如下所示

在此处输入图片描述

你可以看到这两个 .desktop 文件之间的区别,其中“Hidden”行对于一个文件为 false,对于另一个文件为 true

在此处输入图片描述

在此处输入图片描述

如果你这样做Hidden=trueHidden=false你可以在 GUI 启动应用程序列表中看到它,如下所示

在此处输入图片描述

相关内容