.desktopファイルの実行パスから予想されるプロセス名を取得する方法

.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-stablenull が返されます。

ただし、実行するとpidof chromeすべてのPIDが返されます。

879321 879303 805004 755066 693852 693837 693796 688198 624316 624289 3194 2788 2762 2734 2686 26 2601

PIDを見つけるより良い方法はありますか?

.desktopファイル内の情報から検索する必要があります。 (非常に長い物語)

ありがとう

ベストアンサー1

行に応じて、Exec異なる実行可能ファイルを実行するシェルスクリプト、リンク、または他の実行可能ファイルを生成する実行可能ファイルもあります。

ファイルから情報を取得する方法がわかりませんが、desktop1つの解決策はファイルを実行することです。

私は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

おすすめ記事