Uzyskać prawdziwą ścieżkę aplikacji z pid?

Jak mogę uzyskać szczegóły procesu, takie jak nazwa aplikacji i prawdziwa ścieżka aplikacji z id procesu?

Używam Mac OS X.

Author: MacGeek, 2011-09-22

6 answers

Łatwo jest uzyskać nazwę / lokalizację procesu, jeśli znasz PID, po prostu użyj proc_name lub proc_pidpath. Spójrz na poniższy przykład, który zawiera ścieżkę procesu:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <libproc.h>

int main (int argc, char* argv[])
{
    pid_t pid; int ret;
    char pathbuf[PROC_PIDPATHINFO_MAXSIZE];

    if ( argc > 1 ) {
        pid = (pid_t) atoi(argv[1]);
        ret = proc_pidpath (pid, pathbuf, sizeof(pathbuf));
        if ( ret <= 0 ) {
            fprintf(stderr, "PID %d: proc_pidpath ();\n", pid);
            fprintf(stderr, "    %s\n", strerror(errno));
        } else {
            printf("proc %d: %s\n", pid, pathbuf);
        }
    }

    return 0;
}
 24
Author: Alen Stojanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-16 09:16:24

Możesz użyć Monitora aktywności - http://en.wikipedia.org/wiki/Activity_Monitor

Lub w aplikacji Terminal możesz użyć:

ps xuwww -p PID

PIDjest identyfikatorem procesu, którego szukasz Więcej pomocy w poleceniu ps znajdziesz w

man ps
 17
Author: iwg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-22 08:59:48

Spróbuj użyć lsof

Przykład:

lsof -p 1066 -Fn | awk 'NR==2{print}' | sed "s/n\//\//"

Wyjście:
/Users/user/Library/Application Support/Sublime Text 2/Packages

 5
Author: hewigovens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-10 02:53:21

Jeśli PID jest PID "aplikacji użytkownika", to możesz uzyskać NSRunningApplication aplikacji w następujący sposób:

NSRunningApplication * app = [NSRunningApplication  
    runningApplicationWithProcessIdentifier:pid
];

I wypisanie ścieżki pliku wykonywalnego:

NSLog(@"Executable of app: %@", app.executableURL.path);
[5]} pakiet aplikacji jest tutaj
NSLog(@"Executable of app: %@", app.bundleURL.path);

Jednak nie będzie to działać z procesami systemowymi lub w tle, jest ograniczone do aplikacji użytkownika(te zwykle widoczne w Docku po uruchomieniu). Obiekt NSRunningApplication pozwala sprawdzić, czy aplikacja jest aktywna, ukryć/odkryć ją i zrobić wszystkie inne miłe rzeczy.

Po prostu myślałem, że wspomniałem o tym tutaj dla kompletności. Jeśli chcesz pracować z dowolnymi procesami, akceptowana odpowiedź jest oczywiście lepsza.

 2
Author: Mecki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-08 14:44:30

Użyj tego kodu, aby znaleźć processinfo psn.

Następnie użyj następującej funkcji, aby uzyskać lokalizację,

OSStatus GetProcessBundleLocation (const ProcessSerialNumber *psn, fsref *location);

 0
Author: MacGeek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-27 09:24:08

Chciałbym zrobić lepszy SSH-copy-id tylko w bash!! W tym celu muszę wiedzieć, gdzie jest sshd, aby zapytać go o jego rzeczywistą konfigurację. W pewnym systemie mam wiele sshd i który nie jest moim przyjacielem. Również na niektórych macOS polecenie ps nie pokazuje pełnej ścieżki dla sshd.

lsof -p $PPID | grep /sshd | awk '{print $9}'

This return

/usr/sbin/sshd

Po tym jak mógłbym prosić o

sudo /usr/sbin/sshd -T | grep authorizedkeysfile

Ten zwrot, na jakimś systemie

authorizedkeysfile .ssh/authorized_keys
Więc muszę się wstawić .ssh / authorized_keys
 0
Author: bunam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-28 22:43:16