Nous pouvons installer GNU coreutils via brew
. Mais il n'y a pas de ps
dans les utilitaires. Pouvons-nous utiliser gnu ps
dans OS X?
J'aimerais utiliser GNU ps
car il offre plus d'options et de fonctionnalités.
Nous pouvons installer GNU coreutils via brew
. Mais il n'y a pas de ps
dans les utilitaires. Pouvons-nous utiliser gnu ps
dans OS X?
J'aimerais utiliser GNU ps
car il offre plus d'options et de fonctionnalités.
Il n'y a pas de programme ps portable. La commande ps disponible sur linux est, comme d'autres l'ont mentionné, du package "procps". La raison pour laquelle cela ne peut pas être porté sur OSX est parce que les noyaux Linux et OSX n'exposent pas cette information de la même manière. Linux utilise un pseudo-système de fichiers dans /proc, tandis que OSX utilise la fonction sysctl. D'autres systèmes peuvent utiliser l'un ou l'autre mécanisme mais fournissent des données dans un format différent, ou peuvent exiger que des programmes comme ps lisent directement dans la mémoire du noyau.
En général, il n'y a pas de norme pour la manière dont les informations sur les processus sont disponibles pour les programmes comme ps et top; donc le programme doit être conçu pour un système d'exploitation spécifique. S'il manque une fonctionnalité spécifique à ps OSX, vous devrez trouver un autre programme qui peut le faire, ou en écrire un vous-même (consultez le manuel sysctl, en particulier KERN_PROC comme point de départ), ou modifier la commande ps existante pour ajouter la fonctionnalité.
Autrement, si vous pouvez obtenir ce dont vous avez besoin en analysant la sortie de la commande ps elle-même, vous pouvez écrire un programme portable - la sortie avec l'option -o
est raisonnablement fiable sur toutes les plateformes, en particulier si vous vous référez à la norme UNIX pour les noms de colonnes à utiliser.
Est-ce que le système de fichiers /proc
est le seul moyen fourni par le noyau Linux pour obtenir une liste des processus, ou existe-t-il également des appels système séparés qui fournissent ces informations?
Non, car cela n'existe pas. Quant à pourquoi il n'y a pas de ps
intégré dans le coreutils
de GNU, consultez cette réponse sur les forums Unix & Linux.
La meilleure formule alternative disponible via Homebrew est psgrep
:
psgrep est un petit script shell Bash qui recherche la liste des processus (telle qu'obtenue par ps(1) ) en utilisant l'outil impressionnant grep(1) pour sa puissance.
Cela dit, vous pouvez toujours utiliser psgrep
pour se comporter comme le ps
de OS X. Par exemple:
OPTIONS
-a Rechercher la liste des processus en utilisant le format "ps aux" de BSD. Cette option
inclut les processus de tous les utilisateurs dans la recherche.
-b Rechercher la liste des processus en utilisant le format "ps ux" de BSD (par défaut).
Cette option inclut seulement les processus de l'utilisateur en cours d'exécution.
pgrep
est également disponible via brew
, qui est syntaxiquement plus proche de ps
, mais moins efficace que psgrep
:
psgrep(1) est plus utile que pgrep(1) car non seulement il peut rechercher la liste des processus et retourner un PID, mais il peut également fournir des informations plus utiles telles que son UID, GID, utilisation mémoire/CPU, priorité, et tout ce qui est supporté par ps.
Toute emphase de ma part.
@patrix agh! bon point, confirmé: type -a pgrep
pgrep est /usr/local/bin/pgrep
pgrep est /usr/bin/pgrep
Juste en passant, comme mentionné ici, le package proctools
provenant de MacPorts ou Homebrew fournit pgrep
et pkill
, ce que je cherchais personnellement en arrivant ici.
ps
n'est pas partie des GNU coreutils selon Wikipedia. La version qui vient avec ma distribution Linux semble être de procps, mais il semble qu'il n'y ait pas de formule pour cela dans homebrew. Il y a des formules pour pstree
qui peuvent vous donner de superbes vues arborescentes, et aussi htop
est un autre bon visualiseur de processus.
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.
0 votes
Avez-vous essayé d'exécuter
ps
oups -ef
dans un terminal sur OSX ? Ça marche pour moi sur OSX 10.7.5 sans aucune modification, sur deux machines différentes. C'est dans /bin/ps0 votes
Oui, je sais, je voulais utiliser GNU
ps
car il a plus d'options et de fonctionnalités.0 votes
Ah OK, désolé je n'ai pas réalisé cela à partir de la question telle qu'elle était posée. Je suggérerais d'inclure cela quelque part, au cas où quelqu'un d'autre pense comme moi - bonne chance pour trouver une solution
0 votes
Merci pour la suggestion. J'ai ajouté plus d'explications à ce sujet.