0
votes

Comment pouvez-vous utiliser les arguments de position de AWK dans un script shell

J'utilise l'extrait suivant pour tuer brusquement tout processus Java en cours d'exécution: xxx pré>

J'aimerais avoir ceci dans un script shell que je peux exécuter sur plusieurs machines, mais quand je l'ai mis dans Le script et exécutez-le, il faut les 2 $ dans l'AWK comme un argument passé. J'ai essayé simple, double et triple backslashing le backslashing le $ mais rien ne fonctionne. P>

Économie unique Résultats dans: P>

awk: cmd. line:1 {print
awk: cmd. line:1:      ^ unexpected newline or end of string


6 commentaires

Vous devez modifier les citations doubles en guillemets simples dans l'expression awk . Sinon, le 2 $ est traité comme une variable de coque plutôt qu'un champ / une colonne dans Awk.


Cela dit, pgrep ou pidof est mieux adapté à cet imo.


Je crois que Awk a sa propre utilisation pour $ {Number} variables. Peut-être une meilleure façon consiste à enregistrer les arguments $ sur d'autres variables et à les utiliser dans votre commande AWK.


Java Est-ce mauvais qu'il a besoin du -9 ?


citations simples ou doubles n'a pas d'importance. J'ai essayé les deux. J'utilise la fonction dans une fonction qui utilise attendre de sorte que toute la ligne soit cotée. La suggestion de Jetchisel d'utilisation de PGREP était la seule solution qui a fonctionné


J'utilise dans une fonction qui utilise attendre de sorte que toute la ligne est double citée - inclure ensuite ces informations dans votre question et montrez que le code dans votre exemple puisqu'il est extrêmement important.


3 Réponses :


2
votes

Du: XXX PRE>

Sortie d'échantillon: P>

28510


0 commentaires

2
votes

Pourriez-vous s'il vous plaît essayer la suivi (prise d'inspiration de @james Fine Réponse ici).

ps -ef | awk '/[j]ava/{cmd=(cmd?cmd OFS:"")$2} END{print "kill -9 " cmd}' | bash


0 commentaires

1
votes

Il y a une commande qui fait cela: xxx

pkill accepte le -Signal (par exemple, -9 ) Notation Comme Kill , mais je vous recommande de commencer par des signaux plus faibles pour vous permettre de couper le temps pour les processus tués pour éteindre correctement. Je fais habituellement -hup (Accueil, -1 ) puis standard (aucun drapeau pour terminer, -term ou -15 ) puis -9 (tuer, -Kill ).

Si vous voulez savoir ce que cela va faire avant de le faire fonctionner, vous pouvez Répertoriez les identifiants de processus correspondants avec: xxx

ou pour plus de détails: xxx

(ou pgrep java | xargs ps -f si vous préférez)


0 commentaires