其實這是一個老問題了,但直到這兩天忽然覺得討厭,所以想起來詢問解決方案。
不排除這個問題早已有人解答,但由於不知道該用什麼關鍵詞,所以google搜不到答案。
先說背景:使用SDDM啓動KDE,啓動後pasystray和solaar會自動(隨KDE)啓動,駐留在托盤區。
然而經檢查,KDE的systemsetting相關部分、.xprofile、`.config/autostart/`中均沒有發現這兩者的蹤跡,而且systemd的模塊中(無論用戶或系統)也沒有它們。
`ps -ef | grep pasystray`發現其父進程是1號進程,solaar也一樣。所以也沒辦法從進程樹中找到蛛絲馬跡。
所以,請問有什麼方法可以:
1. 禁止這兩者自啓動
2. 尋找所有可能的自啓動來源
現在的一個猜想是dbus信號啓動,類似於networkmanager在特定程序(如firefox)啓動後進行的自啓動。但不知道如何排查。
知識很重要,而相當的運用能力更重要。
离线
2. 可以通过一些手段来找到是谁启动的它。比如基于 bcc 或者 ftrace 的 execsnoop 脚本(bcc 那个在 bcc-tools-git 包里有)。
离线
位置在哪,在用户session里的就必然是kde的锅呗。必要组件不让你关闭之类的
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
2. 可以通过一些手段来找到是谁启动的它。比如基于 bcc 或者 ftrace 的 execsnoop 脚本(bcc 那个在 bcc-tools-git 包里有)。
我有空看看。這倆都不熟Orz
知識很重要,而相當的運用能力更重要。
离线
位置在哪,在用户session里的就必然是kde的锅呗。必要组件不让你关闭之类的
不是,這倆都不是KDE的組件。
這句裏“用戶session”是什麼意思?systemd的session?我已經排查過了,沒有。
如果是說進程的用戶的話,是我的用戶,但沒有更多信息了。
最近编辑记录 renyuneyun (2018-05-12 19:37:33)
知識很重要,而相當的運用能力更重要。
离线
systemctl status看看
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
2. 可以通过一些手段来找到是谁启动的它。比如基于 bcc 或者 ftrace 的 execsnoop 脚本(bcc 那个在 bcc-tools-git 包里有)。
結果讓我更迷糊了……用bcc的execsnoop發現是1號進程啓動的它們……
pasystray 4696 1 0 /bin/pasystray
solaar 4700 1 0 /bin/solaar
然而systemctl --user status中的確沒有這兩個東西。
systemctl status中能看到session-c7中有它們。
知識很重要,而相當的運用能力更重要。
离线
1 号进程是系统级那个 systemd 啦。但是为什么是 session-c7 呢?……
离线
1 号进程是系统级那个 systemd 啦。但是为什么是 session-c7 呢?……
是啊,所以看起來是systemd啓動的,但無論是系統服務還是用戶服務都沒有這倆東西。。。
我也不知道爲什麼是session-c7……可能是因爲我從KDE註銷又重新登入好幾次?……
知識很重要,而相當的運用能力更重要。
离线
破案了……
/etc/xdg/autostart中被自動創建了這倆條目(由相關包直接帶的),但kde的systemsettings完全不列出這裏的東西。。。我還以爲那些文件是“模板”……
在其中相應條目中加上Hidden=true之後就不會再自動啓動了……
MDZZ……
但是爲什麼是init進程/systemd啓動的?不應該是X啓動的麼?
知識很重要,而相當的運用能力更重要。
离线
啊,你看代码就知道了,ppid 那一列的获取是不可靠的……(所以还是 sysdig 和 process event connector 更可靠)
离线
/etc/xdg/autostart普通用户应该写不进去的,不会自动创建,应该是某个软件包安装的,pacman -Qo
查一下。
以及system ctl status加不加--user看到的是一样的,区别就是显不显示系统级那些cgroup既然进程在session里,systemctl肯定能看见,无非就是终端有时会糊掉然后某些输出行看不见,重开一个干净的窗口再执行一次或者--no-pager就能看见了。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
都在session里了当然不是service
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
/etc/xdg/autostart普通用户应该写不进去的,不会自动创建,应该是某个软件包安装的,pacman -Qo
查一下。
以及system ctl status加不加--user看到的是一样的,区别就是显不显示系统级那些cgroup既然进程在session里,systemctl肯定能看见,无非就是终端有时会糊掉然后某些输出行看不见,重开一个干净的窗口再执行一次或者--no-pager就能看见了。
是包自己帶的(見前一回覆)。我的表述有問題。
(當然我仍然不明白爲什麼要自己帶這玩意……坑爹嘛?)
都在session里了当然不是service
問題是爲什麼會是1號進程……
我檢查service是因爲按理說systemd只能通過執行service執行長期的任意程序吧?
知識很重要,而相當的運用能力更重要。
离线
問題是爲什麼會是1號進程……
我檢查service是因爲按理說systemd只能通過執行service執行長期的任意程序吧?
因为 1 号进程是收养者呀。
离线