Linux

是什麼導致程序在啟動時啟動?

  • November 12, 2020

我有一個問題:

前段時間,我安裝了一個叫 的軟體wii-u-gc-adapter,執行它後,我可以將我的 GameCube 控制器插入我的 Linux 機器台式電腦來玩遊戲。這很好用。

我一定是在某個時間點接受了一些建議,以便在我的電腦中的某個地方放置一條在啟動時執行此過程的指令。

我提出這個問題是因為當我關閉電腦時,它會掛起一分 30 秒,等待此過程結束。

當我./wii-u-gc-adapter自己執行時,我會手動殺死它。但是在安裝它的某個時候,我告訴我的系統執行它。

該程序列在 中usr/local/bin,這並不讓我感到驚訝。

這是我的結尾$pstree

       ├─whoopsie───2*[{whoopsie}]
       ├─wii-u-gc-adapte───2*[{wii-u-gc-adapte}]
       ├─wpa_supplicant
       └─xdg-permission-───2*[{xdg-permission-}]

htop我過濾wii時看到以下內容:

htop為wii過濾

當我關閉電腦時,我必須等待一分 30 秒,當我按 F2 時,我看到以下消息:

A stop job is running for Wii U Gamecube Adapter

我想清理這個鬆散的結局。我通常會記錄我在修改文件時所做的事情,但我不認為我在這裡做了,所以我很難找到我在哪裡進行了導致該程序在啟動時執行的更改。

$$ Some progress here - edit 1 $$

~$ ps j 1045
  PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
     1    1045    1045    1045 ?             -1 Ssl      0   0:00 /usr/local/bin/wii-u-gc-adapter

所以 1045 的父程序是 PPID 1,即看起來有人告訴 systemd 啟動這個程序。我想將此過程從該列表中刪除。

$$ more progress here $$ 通過轉到 /etc 並使用 ag 搜尋找到一個 gamecube.service 文件。

systemd/system/gamecube.service
2:Description=Wii U Gamecube Adapter
8:ExecStart=/usr/local/bin/wii-u-gc-adapter

我想完全刪除這項服務。

$$ Third edit $$我正在關注這個答案:https ://superuser.com/a/936976 $$ Fourth edit $$按照超級使用者的步驟,在發現父程序確實是用 ps j 進行 systemd 後,這個問題現在已經解決了。

解決方案:

  1. 在 pstree 中查找程序名稱
  2. 在 htop 中查找程序,從那裡獲取 PID
  3. 使用命令~$ ps j [PID]查找父程序的PID
  4. 如果 PID 為 1,則它正在由systemd
  5. 如果它是由 systemd 啟動的,請將此答案與您從第 1 步和第 2 步獲得的資訊一起使用,以從systemd啟動時執行的內容列表中完全刪除該程序。

引用自:https://unix.stackexchange.com/questions/619139