web-dev-qa-db-fra.com

Comment savoir quel service a démarré un processus pour pouvoir le désactiver?

Comment lier un processus à un service associé, puis le désactiver de manière permanente?

Je connais

ps aux | less 

me donnera le nom du processus et le port mais je veux obtenir le service associé (et même l’emplacement du fichier) afin que je puisse le désactiver au démarrage si nécessaire et savoir où sont les fichiers et si je dois désinstaller quelque chose.

4
user637251

Sur Ubuntu 16.04 et les versions plus récentes (en utilisant systemd comme init), vous pouvez utiliser systemctl status <PID>à partir de ce post Unix & Linux) :

Pour les processus de service:

$ systemctl status 561
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2017-01-04 15:38:01 JST; 7h ago
 Main PID: 561 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/sshd.service
           └─561 /usr/bin/sshd -D

Pour d’autres choses, ce sera probablement dans une portée de session utilisateur:

$ systemctl status $(pgrep chrome -n)
● session-c2.scope - Session c2 of user muru
   Loaded: loaded (/run/systemd/transient/session-c2.scope; transient; vendor preset: disabled)
Transient: yes
   Active: active (running) since Wed 2017-01-04 15:46:30 JST; 7h ago
    Tasks: 422
   CGroup: /user.slice/user-1000.slice/session-c2.scope

Une autre réponse dans cet article d'U & L a une commande plus simple:

ps -o unit -p <PID>

Comparer:

$ ps -o pid,unit -p $(pgrep chrome -n) 561 
  PID UNIT
  320 session-c2.scope
  561 sshd.service
7
muru