J'ai écrit un script très court qui obtient un pid de $ 1 puis tue le processus. J'ai quelques questions/demandes d'amélioration. (OSX)Utiliser ps et awk pour obtenir pid, puis le tuer
#!/bin/bash
getpid=$(ps aux -O start | grep -i "$1" | grep -v grep | grep -v $0 | awk '{ if (NR==1) {print $2}}')
kill $getpid
Par exemple:
$ ~/killpro.sh java
qui tue l'instance la plus récente de java.
Ou:
$ ~/killpro.sh chrome
Pour tuer Google Chrome, évidemment.
D'abord, est-il un moyen pratique pour obtenir ce enfilés en une seule ligne, à l'aide de lire -p peut-être, afin qu'il puisse à son tour être aliasé et devenir quelque chose comme:
$ killpro
$ Enter name: chrome
$
Non pas que ce beaucoup plus facile, en fait c'est un peu plus de travail, mais cela contourne le besoin de taper un chemin et une extension de coque qui est souhaitable. Deuxièmement, y a-t-il quelque chose de fondamentalement faux dans mon approche initiale? Ai-je manqué quelque chose d'évident qui annule le besoin de tout cela?
Tout commentaire est apprécié.
Merci d'avance, je suis (comme vous pouvez le dire) nouveau à cela.
OS X n'a-t-il pas une commande 'killall' ou' pidof'? – melpomene
@melpomene: Il a 'killall', mais il ne peut pas tuer seulement le dernier processus. Pas de "pidof", mais c'est assez facile à implémenter. – Amadan
Les scripts shell peuvent avoir n'importe quel nom. l'extension '.sh' est juste pour indiquer ce qui s'y trouve. Vous pourriez utiliser 'file killpro' et cela rapporterait quelque chose comme' shell script'. Alors nommez votre script 'killpro'. ALORS vous avez besoin d'un répertoire local, communément '~/usr/local/bin' pour stocker votre script ET éditer votre' .bashrc' ou ailleurs pour indiquer 'export PATH =" ~/usr/local/bin: $ PATH "'. Alors aucune fonction embêtante ou définitions d'alias requises. Tapez simplement 'killpro' et il fonctionnera. Bonne chance. – shellter