Ubuntu
如何從 .desktop 文件中的可執行路徑獲取預期的程序名稱
我正在閱讀在 /usr/share/applications 中找到的 .desktop 文件,似乎有些與執行檔不共享相同的程序名稱(大多數都這樣做)。
有沒有辦法找到程序名稱會是什麼?
例子:
Chrome 的 .desktop 文件
[Desktop Entry] Version=1.0 Name=Google Chrome Exec=/usr/bin/google-chrome-stable %U StartupNotify=true Terminal=false Icon=google-chrome Type=Application Categories=Network;WebBrowser; MimeType=application/pdf;application/rdf+xml;application/rss+xml;application/xhtml+xml;application/xhtml_xml;application/xml;image/gif;image/jpeg;image/png;image/webp;text/html;text/xml;x-scheme-handler/ftp;x-scheme-handler/http;x-scheme-handler/https; Actions=new-window;new-private-window;
當我執行
pidof google-chrome-stable
它返回null。但是當我執行
pidof chrome
它時,它會返回所有的 PID879321 879303 805004 755066 693852 693837 693796 688198 624316 624289 3194 2788 2762 2734 2685 2677 2641 2637 2620 2613 2611 2601
有沒有更好的方法來找到 PID?
請注意,我必須從 .desktop 文件中找到的資訊中進行搜尋。(很長的故事)
謝謝
它取決於
Exec
行,它可能是執行另一個執行檔的 shell 腳本,也可能是連結,甚至是生成另一個執行檔的執行檔。我不確定如何僅從
desktop
文件中獲取資訊,但是一種解決方案可能是執行它…請注意,我沒有 google-chrome,所以我在範例中使用了 chromium。
# Extract the command from desktop file $ CMD=$(grep -Po "(?<=^Exec=).+\s" /usr/share/applications/chromium.desktop) $ echo $CMD /usr/bin/chromium # Run it $ CMD & # Get the PID $ PID=$(echo $!) $ echo $PID 5146 # Get process name from PID $ ps --no-header -p $PID -o comm chromium # Get the complete command line + arguments ps --no-header -p $PID -o cmd /usr/lib/chromium/chromium --show-component-extension-options --enable-gpu-rasterization # Terminate process kill -SIGTERM $PID