Linux Series: Dites - lui qu'il ne connaît pas kill du tout

Flydean 2021-09-15 10:06:19
linux series dites lui qu


Introduction

Avec beaucoup de programmeurs,Ces programmeurs sont probablement familiersforPlusieurs façons de traverser,Mais ne sait rien de l'environnement dans lequel le programme écrit est déployé.J'en suis sûr.,Inspring bootAprès l'apparition,Peu de programmeurs le savent déjà.tomcatComment ça marche?.Pour eux,Exécuter unjarLe sac est fini..

La sophistication des outils nous apporte beaucoup de commodité,Améliore également l'efficacité du développement des programmeurs,Il abaisse également le seuil d'entrée des programmeurs.J'aimerais en discuter avec vous aujourd'hui.,linuxDanskillÀ quoi servent exactement les ordres?.

Peut - être qu'il y a beaucoup de petits partenaires qui entrent en contact pour la première fois.killC'est un collègue qui lui a donné l'ordre.,Mettre le processuskillLaisse tomber..AlorskillC'est vraiment pour tuer le processus??

UtiliserkillPour tuer le processus

Voyons d'abord.killBasic,Et l'application la plus courante est de tuer le processus.Avant de tuer le processus,Nous devons trouver ce processusID.

Généralement utilisépsLa commande trouve ce processusID.Rejoignez ce processusID=54321.

Ensuite, vous pouvez utiliserkill 54321Pour tuer ce processus..

Un étudiant plus âgé,Peut également être utilisékill -9 54321Pour forcer le processus à tuer.

Y a - t - il une utilisation plus approfondie?Oui.,Venez voir.

killUtilisation approfondie de

Regardez d'abordkillQuels sont les paramètres de commande pour:

kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

Je vois.killLe paramètre pour estsig,C'est le signal..C'est - à - direkillL'essence est de transmettre des signaux au programme.

Si vous utilisez kill -l ,On peut l'avoir jusqu'au bout.killCombien de signaux peuvent être transmis:

kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX

Total64Un signal,Ça pourrait être différent.killVersion,Le signal est différent.,Mais en gros, ils couvrent tous les signaux habituels.

Voici la signification de certains signaux communs:

HUP 1 Déconnexion du terminal
INT 2 Interruption(Même chose. Ctrl + C)
QUIT 3 Sortie(Même chose. Ctrl + \)
TERM 15 Résiliation
KILL 9 Résiliation forcée
CONT 18 Continue.(AvecSTOPAu contraire., fg/bgLes ordres)
STOP 19 Pause(Même chose. Ctrl + Z)

Qu'en penses - tu?killEt la version de?

/bin/kill --version
kill from util-linux 2.23.2

SikillNon.sig,Il passera par défaut.sig=TERM,C'est - à - dire15.Donc, au - dessuskill 54321Et kill -15 54321Est équivalent.

En général,Nous préférons utiliserSIGTERMSignal.C'est parce que lorsque le programme reçoitSIGTERMAprès le signal,Il y a des procédures de nettoyage,Ou une fermeture élégante.

Sikill -9 C'est - à - direSIGKILL,L'application ne pourra pas capter ce signal,Cela entraîne la fermeture forcée du programme,Il y a des chances qu'il y ait des anomalies.,Par exemple, les données n'ont pas été sauvegardées,Le transfert de données n'est pas terminé, etc..

sigIl y a aussi une valeur spéciale appelée0,Si0Et si,Il n'y aura pas de signal réel.,C'est juste pour la détection des anomalies..

pidC'estprocess id,Peut être interprété comme un numéro de processus.En plus du numéro de processus,Vous pouvez également passer des valeurs spéciales,Par exemple,:

  • 0 Représente le processus actuelgroupTous les processus
  • -1 Représente toutPID>1Processus

Et un spécialpid=1,C'estpidReprésente le processus initialinit,Ce processus ne doit pas être tué..

Sauf quePIDAu - delà,Nous avons vukillC'est acceptable.jobspec.job idPeut être utiliséjobsCommandes pour lister.

Processus zombies etkill

C'est comme ça quepid=1Le processus initial dekillDe.Il y a un autre type qui ne peut pas êtrekillLe processus est appelé processus zombie.

Le processus zombie estlinuxUn état très unique dans le programme,Ça veut dire que le processus est terminé.,Mais il n'est pas encore mort.,Comme un zombie..

linuxDans5L'état du grand processus est:RUNNING:En cours d'exécution ou en attente d'exécution,UNINTERRUPTABLE:État de blocage non interruptible,INTERRUPTABLE:État de blocage interruptible,STOPPED:État en attente etZOMBIE:Statut zombie.

Qu'est - ce qu'un processus zombie??

Le processus zombie fait référence au programme après la sortie,Le processus n'a pas disparu immédiatement.,Au lieu de cela, une structure de données appelée zombie serait conservée.Cette structure de données est unique,Parce qu'il n'a pas d'espace mémoire,Pas de code exécutable,Bien sûr que non..C'est juste une place dans la liste des processus,Diverses informations ont été enregistrées à la sortie du processus.

Le processus zombie est principalement le site où le processus de rétention quitte,Utilisé par le processus parent ou l'Administrateur du système pour l'analyse,Donc le processus zombie est laissé au processus parent pour la collecte et la libération.Parce que le processus zombie est sorti,Alors utilisezkillÇa ne sert à rien,Vous ne pouvez attendre que la sortie de son processus parent,Pour vraiment sortir.

Comment voir le processus zombie?La façon la plus simple est d'utilisertopLes ordres:

top - 14:34:38 up 305 days, 4:23, 2 users, load average: 0.20, 0.29, 0.47
Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 0.7 sy, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1882008 total, 525524 free, 311440 used, 1045044 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 1382560 avail Mem

Sortie ci - dessus,Nous pouvons voir qu'il y a0- Oui.zombie.

java thread dump

killIl y a aussi un endroit très utile pour générerjavaLa procédurethread dump,Va maintenantjavaInformations sur le thread du programmedumpSors de là.,Peut faire des analyses utiles,Comme l'analyse des impasses, etc..

Pourquoi?javaProcessusthread dumpEt alors??Facile à utiliserkill -3 Commande juste:

kill -3 <pid>

À partir de ce qui précède, nous pouvons spécifier3Le signal représenté estSIGQUIT.Ça montreJVMLa capture de ce signal est intégrée,Si ce signal est reçu,Oui.dumpInformations actuelles sur le thread.

java thread dumpÀ droitejavaUtile pour l'analyse des fils.

Résumé

Cet article présentekillUtilisation approfondie et principe de fonctionnement sous - jacent,A également présentékillPlusieurs applications,J'espère que quelqu'un te le redemandera.killC'était quand?,Tout le monde peut être fier de lui dire!

Cet article a été inclus dans http://www.flydean.com/01-that-is-kill/

L'interprétation la plus populaire,Les plus profondes marchandises sèches,Le tutoriel le plus concis,Beaucoup de petits trucs que vous ne connaissez pas vous attendent pour découvrir!

Bienvenue à mon numéro public:「La procédure.」,Comprendre la technologie,Je te connais mieux.!

版权声明
本文为[Flydean]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915085853001C.html

  1. 10天拿到字節跳動Java崗比特offer,Java知識點思維導圖
  2. 10 jours pour obtenir un Byte Jump Java post offer, Java Knowledge point Mind Map
  3. 10 jours pour obtenir l'octet Jump Java post offer, apprendre les étapes du développement Java
  4. Java version of gppc Reality Three: server side stream
  5. Linux Series: Dites - lui qu'il ne connaît pas kill du tout
  6. "Data structure and algorithm" of front end -- binary search
  7. 2020-2021京东Java面试真题解析,如何才能通过一线互联网公司面试
  8. 13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息
  9. 12 SpringBoot整合RocketMQ实现过滤消息-根据TAG方式过滤消息
  10. 11 SpringBoot整合RocketMQ实现事务消息
  11. 11 springboot Consolidated rocketmq Implementation transaction message
  12. 12 springboot Consolidated rocketmq Implements Filtering messages - Filtering messages according to tag method
  13. 13 springboot Consolidated rocketmq Implementation Filtering messages - Filtering messages according to SQL expressions
  14. linux系列之:告诉他,他根本不懂kill
  15. (1)java Spring Cloud+Spring boot企业快速开发架构之微服务是什么?它的优缺点有哪些?
  16. Oracle 检查 DATE 列 RANGE 分区表已有分区的最大日期时间
  17. ConcurrentHashMap--原理
  18. 2020 - 2021 JD Java interview Real question Analysis, How can interview through First - Line Internet Company
  19. Concurrenthashmap - - Principes
  20. Oracle vérifie l'heure de date maximale d'une partition existante dans la colonne date
  21. Docker Compose 实践及梳理
  22. Qu'est - ce qu'un microservice pour Java Spring Cloud + Spring Boot Enterprise Quick Development architecture?Quels sont ses avantages et ses inconvénients?
  23. Plus sign interview knowledge points in Java
  24. Pratique et organisation de la composition des dockers
  25. Linux Series: Dites - lui qu'il ne connaît pas kill du tout
  26. Convenient CSS and jQuery drop-down menu solution
  27. Linux analog packet loss rate
  28. Redis:我是如何与客户端进行通信的
  29. 15 useful cron work examples commonly used by Senior Linux system administrators
  30. 24个 JavaScript 循环遍历方法,你都知道吗?
  31. Reading notes of JavaScript advanced programming (3rd Edition) 4
  32. 30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘(图文讲解)
  33. 24 méthodes de traversée de boucle Javascript, vous savez?
  34. 30 minutes pour apprendre à ouvrir le tableau de bord k8s (kubernets) dans le docker (explication graphique)
  35. Redis: comment je communique avec les clients
  36. Wsl2: Windows native Linux subsystem
  37. 30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘(图文讲解)
  38. Docker Compose 实践及梳理
  39. Python高级用法总结(8)-函数式编程
  40. 261页前端面试题宝典,JavaScript变量声明提升
  41. The performance of JVM and Java applications of the same version differs by 30% on X86 and aarch64 platforms. Why?
  42. Page 261: dictionnaire des questions d'entrevue de première ligne, promotion de la Déclaration des variables JavaScript
  43. Python Advanced use Summary (8) - functional Programming
  44. Pratique et organisation de la composition des dockers
  45. 30 minutes pour apprendre à ouvrir le tableau de bord k8s (kubernets) dans le docker (explication graphique)
  46. [design pattern series] simple factory
  47. 2021Java最新大厂面试真题,阿里技术专家深入讲解
  48. Java equals and==
  49. Spring5(五)——AOP
  50. 海量列式非关系数据库HBase 原理深入
  51. java collections
  52. 海量列式非關系數據庫HBase 原理深入
  53. Base de données non relationnelle à grande échelle
  54. Printemps 5 (v) - AOP
  55. 2021 le dernier vrai problème d'entrevue d'usine de Java, expliqué en profondeur par les experts techniques d'Ali
  56. Java knowledge structure diagram and thinkinjava PDF file
  57. Do redis transactions satisfy atomicity?
  58. Java programmers must master 10 open source tools!
  59. [Cao Gong's essay] talk about the contract between Maven framework and plug-ins
  60. What books are better for learning Java