{"id":120834,"date":"2020-11-25T11:00:17","date_gmt":"2020-11-25T08:00:17","guid":{"rendered":"https:\/\/en.buradabiliyorum.com\/how-to-kill-zombie-processes-on-linux\/"},"modified":"2020-11-25T11:00:17","modified_gmt":"2020-11-25T08:00:17","slug":"how-to-kill-zombie-processes-on-linux","status":"publish","type":"post","link":"https:\/\/buradabiliyorum.com\/en\/how-to-kill-zombie-processes-on-linux\/","title":{"rendered":"#How to Kill Zombie Processes on Linux"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6a2dc61725582\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #dd3333;color:#dd3333\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #dd3333;color:#dd3333\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6a2dc61725582\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-kill-zombie-processes-on-linux\/#How_Process_States_Work_on_Linux\" >How Process States Work on Linux<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-kill-zombie-processes-on-linux\/#What_Causes_Zombie_Processes_on_Linux\" >What Causes Zombie Processes on Linux?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-kill-zombie-processes-on-linux\/#How_to_Remove_Zombie_Processes\" >How to Remove Zombie Processes<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/buradabiliyorum.com\/en\/how-to-kill-zombie-processes-on-linux\/#Zombies_Arent_Scary_%E2%80%A6\" >Zombies Aren\u2019t Scary \u2026<\/a><\/li><\/ul><\/nav><\/div>\n<p><strong>&#8220;#How to Kill Zombie Processes on Linux&#8221;<\/strong><\/p>\n<div>\n<figure id=\"attachment_442612\" style=\"width: 650px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-442612 size-full\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2019\/09\/xstock-lede-linux-see-attribution.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.rjm91kC_Jl.png\" alt=\"A terminal window on a Linux laptop.\" width=\"650\" height=\"300\" data-credittext=\"Fatmawati Achmad Zaenuri\/Shutterstock\" data-crediturl=\"https:\/\/www.shutterstock.com\/image-vector\/linux-interface-screen-notebook-world-map-321627716\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><figcaption class=\"wp-caption-text\"><span class=\"imagecredit\"><a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/www.shutterstock.com\/image-vector\/linux-interface-screen-notebook-world-map-321627716\">Fatmawati Achmad Zaenuri\/Shutterstock<\/a><\/span><\/figcaption><\/figure>\n<p>Programs that are poorly written or performing badly can leave zombie processes lurking inside your Linux computer. Find out how zombies are created, and how you can finally lay them to rest.<\/p>\n<h3 id=\"process-information\"><span class=\"ez-toc-section\" id=\"How_Process_States_Work_on_Linux\"><\/span>How Process States Work on Linux<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Linux, of course, has to keep track of all the <a href=\"https:\/\/buradabiliyorum.com\/en\/category\/download-scripts-themes-apps\/\" data-internallinksmanager029f6b8e52c=\"9\" title=\"Download Scripts &amp; Themes &amp; Apps\" target=\"_blank\" rel=\"noopener\">app<\/a>lications and daemons running on your computer. One of the ways it does this is by maintaining the\u00a0process table. This is a list of structures in kernel memory. Each process has an entry in this list that contains some information about it.<\/p>\n<p>There isn\u2019t a great deal in each of the process table structures. They hold the <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/en.wikipedia.org\/wiki\/Process_identifier\">process ID<\/a>, a few other data items, and a pointer to the\u00a0process control block\u00a0(PCB) for that process.<\/p>\n<p>It\u2019s the PCB that holds the many details Linux needs to look up or set for each process. The PCB is also updated as a process is created, given processing time, and finally destroyed.<\/p>\n<p>The Linux PCB contains over 95 fields. <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/torvalds\/linux\/blob\/master\/include\/linux\/sched.h\">It\u2019s defined<\/a> as a structure called <code>task_struct.h<\/code>, and it\u2019s over 700 lines long. The PCB contains the following types of information:<\/p>\n<ul>\n<li><strong>Process State<\/strong>: The states are described below.<\/li>\n<li><strong>Process Number<\/strong>: Its unique identifier within the operating system.<\/li>\n<li><strong>Program Counter<\/strong>: When this process is next given access to the CPU, the system will use this address to find the next instruction of the process that should be executed.<\/li>\n<li><strong>Registers<\/strong>: The list of CPU registers used by this process. The list might contain accumulators, index registers, and stack pointers.<\/li>\n<li><strong>Open File List<\/strong>: Files associated with this process.<\/li>\n<li><strong>CPU Scheduling Information<\/strong>: Used to determine how frequently, and for how long, CPU processing time is awarded to this process. The priority of the process, pointers to scheduling queues, and other scheduling parameters have to be recorded in the PCB.<\/li>\n<li><strong>Memory Management Information<\/strong>: Details about the memory this process is using, such as the start and end addresses of the process memory, and pointers to the memory pages.<\/li>\n<li><strong>I\/O Status Information<\/strong>: Any in- or output devices used by the process.<\/li>\n<\/ul>\n<p>The \u201cProcess State\u201d can be any of the following:<\/p>\n<ul>\n<li><strong>R: <\/strong>A\u00a0running or runnable\u00a0process. Running meaning it\u2019s receiving CPU cycles and executing. A runnable\u00a0process is ready to run and waiting for a CPU slot.<\/li>\n<li><strong>S:<\/strong> A sleeping process. The process is waiting for an action to complete, such as an in- or output operation, or for a resource to become available.<\/li>\n<li><strong>D: <\/strong>The process is in an uninterruptible sleep state. It\u2019s using a blocking system call and can\u2019t continue until the system calls have completed. Unlike the \u201cSleep\u201d state, a process in this state won\u2019t respond to signals until the system call is completed and execution has returned to the process.<\/li>\n<li><strong>T:<\/strong> The process has terminated (stopped) because it received the <code>SIGSTOP<\/code> signal. It\u00a0<a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/man7.org\/linux\/man-pages\/man7\/signal.7.html\">will only respond<\/a>\u00a0to the <code>SIGKILL<\/code>\u00a0or\u00a0<code>SIGCONT<\/code> signals, which either kill the process or instruct it to continue, respectively. This is what\u2019s happening when you swap from <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/fg.1p.html\">foreground\u00a0(<code>fg<\/code>)<\/a> to <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/bg.1p.html\">background (<code>bg)<\/code><\/a> tasks.<\/li>\n<li><strong>Z:<\/strong>\u00a0A Zombie process. When a process completes, it doesn\u2019t just vanish. It frees up any memory it\u2019s using and removes itself from memory, but its entry in the process table and PCB remain. Its state is set to <code>EXIT_ZOMBIE<\/code>, and its parent process is notified (by the <code>SIGCHLD<\/code> signal) that the child process has finished.<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p>In the Zombie state, the parent process calls one of the\u00a0 <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/man7.org\/linux\/man-pages\/man2\/wait.2.html\"><code>wait()<\/code> families of functions<\/a>\u00a0when the child process is created. It then waits for a state change in the child process. Has the child process been stopped, continued, or killed by a signal? Has it terminated by running through the natural completion of its code?<\/p>\n<p>If the state change is one that means the child process has stopped running, its exit code is read. Then, the child\u2019s PCB is destroyed and its entry in the process table is removed. Ideally, this all happens in the blink of an eye, and processes in the zombie state don\u2019t exist for very long.<\/p>\n<p><strong>RELATED:<\/strong> <strong><em>How to Run and Control Background Processes on Linux<\/em><\/strong><\/p>\n<h3 id=\"why-the-dead-sometimes-linger\"><span class=\"ez-toc-section\" id=\"What_Causes_Zombie_Processes_on_Linux\"><\/span>What Causes Zombie Processes on Linux?<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>A poorly written parent process might not call the <code>wait()<\/code> function when the child process is created. This means nothing is watching for state changes in the child process, and the <code>SIGCHLD<\/code> signal will be ignored. Or, perhaps another application is affecting the execution of the parent process, either due to poor programming or malicious intent.<\/p>\n<p>However, if the parent process isn\u2019t watching for state changes in the child process, the proper system housekeeping won\u2019t occur. The PCB and the entry in the process table won\u2019t be removed when the child process terminates. This results in the zombie state never being removed from the PCB.<\/p>\n<p>Zombies do use a bit of memory, but they don\u2019t usually pose a problem. The entry in the process table is small, but, until it\u2019s released, the process ID can\u2019t be reused. On a 64-bit operating system, that\u2019s unlikely to cause any issues because the PCB is much larger than the process table entry.<\/p>\n<p>A huge number of zombies could, conceivably, affect the amount of memory that\u2019s free for other processes. If you\u2019ve got that many zombies, though, you\u2019ve got a serious problem with the parent application or an operating system bug.<\/p>\n<h3 id=\"removing-zombie-processes\"><span class=\"ez-toc-section\" id=\"How_to_Remove_Zombie_Processes\"><\/span>How to Remove Zombie Processes<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>You can\u2019t kill a zombie process because it\u2019s already dead. It won\u2019t respond to any signals because it\u2019s been removed from memory\u2014there\u2019s nowhere to send a <code>SIGKILL<\/code> signal. You can try sending the <code>SIGCHLD<\/code> signal to the parent process, but if it didn\u2019t work when the child process terminated, it\u2019s unlikely to work now, either.<\/p>\n<p>The only reliable solution is to kill the parent process. When it\u2019s terminated, its child processes are inherited by the <code>init<\/code> process, which is the first process to run in a Linux system (its process ID is 1).<\/p>\n<p>The <code>init<\/code> process regularly performs the necessary cleanup of zombies, so to kill them, you just have to kill the process that created them. The <code>top<\/code> command is a convenient way to see if you have any zombies.<\/p>\n<p>Type the following:<\/p>\n<pre><span style=\"font-family: Consolas, Monaco, monospace;\">top<\/span><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-701995\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2020\/11\/x1-2.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.59VmWUFO7s.png\" alt=\"top in a terminal window\" width=\"646\" height=\"382\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>This system has eight zombie processes. We <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/ps.1.html\">can list these<\/a>\u00a0by using the <code>ps<\/code> command <a rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\/\/man7.org\/linux\/man-pages\/man1\/egrep.1.html\">and piping it into<\/a> <code>egrep<\/code>. Again, zombie processes have a state flag of \u201cZ,\u201d and you\u2019ll usually also see \u201cdefunct.\u201d<\/p>\n<p>Type the following:<\/p>\n<pre>ps aux | egrep \"Z|defunct\"<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-701997\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2020\/11\/x2-2.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.hyq6ftApdg.png\" alt=\"ps aux | egrep &quot;Z|defunct&quot; in a terminal window\" width=\"646\" height=\"57\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>The zombie processes are listed.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-701998\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2020\/11\/x3-2.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.B2NzQE6MCx.png\" alt=\"Output from ps aux | egrep &quot;Z|defunct&quot; in a terminal window\" width=\"646\" height=\"337\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>This is a neater way to discover the process IDs of zombies than scrolling back and forth through <code>top<\/code>. We also see that an application called \u201cbadprg\u201d spawned these zombies.<\/p>\n<p>The process ID of the first zombie is 7641, but we need to find the process ID of its parent process. We can do so by using\u00a0<code><code>ps<\/code><\/code>\u00a0again. We\u2019ll use the\u00a0output option (<code>-o<\/code>) to tell <code>ps<\/code> to display only the parent\u2019s process ID, and then pass it with the <code>ppid=<\/code> flag.<\/p>\n<p>The process we want to find will be indicated by using the <code>-p<\/code> (process) option, and then passing in the zombie\u2019s process ID.<\/p>\n<p>Therefore, we type the following command to look up the process information for process 7641, but it will only report the ID of the parent process:<\/p>\n<pre>ps -o ppid= -p 7641<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-702001\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2020\/11\/x5-2.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.OLAXPwVL7o.png\" alt=\"ps -o ppid= -p 7641 in a terminal window\" width=\"646\" height=\"97\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>We\u2019re told the parent process ID is 7636. We can now cross-reference this by using\u00a0<code>ps<\/code> once more.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-702003\" src=\"https:\/\/www.howtogeek.com\/wp-content\/uploads\/2020\/11\/x7-2.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.XohvWCH0vQ.png\" alt=\"ps -e | grep 7636 in a terminal window\" width=\"646\" height=\"97\" onload=\"pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\" onerror=\"this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);\"\/><\/p>\n<p>We see this matches the name of the parent process from earlier. To kill the parent process, use the SIGKILL option with the kill command as follows:<\/p>\n<pre>kill -SIGKILL 7636<\/pre>\n<p>Depending on the owner of the parent process, you might also need to use <code>sudo<\/code>.<\/p>\n<h2 role=\"heading\" aria-level=\"2\"><span class=\"ez-toc-section\" id=\"Zombies_Arent_Scary_%E2%80%A6\"><\/span>Zombies Aren\u2019t Scary \u2026<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u2026 unless they\u2019re in a massive horde. A few aren\u2019t anything to worry about and a simple reboot will wipe them out.<\/p>\n<p>However, if you notice that an application or process is always spawning zombies, that\u2019s something you should look into. It\u2019s most likely just a sloppily written program, in which case, perhaps there\u2019s an updated version that properly cleans up after its child processes.<\/p>\n<\/div>\n<p><script>\n setTimeout(function(){\n  !function(f,b,e,v,n,t,s)\n  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?\n  n.callMethod.apply(n,arguments):n.queue.push(arguments)};\n  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';\n  n.queue=[];t=b.createElement(e);t.async=!0;\n  t.src=v;s=b.getElementsByTagName(e)[0];\n  s.parentNode.insertBefore(t,s) } (window, document,'script',\n  'https:\/\/connect.facebook.net\/en_US\/fbevents.js');\n   fbq('init', '335401813750447');\n   fbq('track', 'PageView');\n  },3000);\n<\/script><\/p>\n<blockquote><p><strong><span style=\"color: #ff6600;\">If you liked the article, do not forget to share it with your friends. Follow us on\u00a0<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/news.google.com\/publications\/CAAqBwgKMLG0nwswvr63Aw\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Google News<\/a><\/span>\u00a0too, click on the star and choose us from your favorites.<\/span><\/strong><\/p><\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\">For forums sites go to <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/forum.buradabiliyorum.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Forum.BuradaBiliyorum.Com<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<blockquote>\n<p style=\"text-align: center;\"><strong>If you want to read more like this article, you can visit our <span style=\"color: #ff9900;\"><a style=\"color: #ff9900;\" href=\"https:\/\/en.buradabiliyorum.com\/technology\/\" target=\"_blank\" rel=\"noopener noreferrer\">Technology category.<\/a><\/span><\/strong><\/p>\n<\/blockquote>\n<p><span style=\"color: black;\"><a style=\"color: #ff9900;\" href=\"https:\/\/www.howtogeek.com\/701971\/how-to-kill-zombie-processes-on-linux\/\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;#How to Kill Zombie Processes on Linux&#8221; Fatmawati Achmad Zaenuri\/Shutterstock Programs that are poorly written or performing badly can leave zombie processes lurking inside your Linux computer. Find out how zombies are created, and how you can finally lay them to rest. How Process States Work on Linux Linux, of course, has to keep track&#8230;<\/p>\n","protected":false},"author":1,"featured_media":120835,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/www.howtogeek.com\/thumbcache\/2\/200\/de307e8ccc9856a4b842b6ca4a06c5ef\/wp-content\/uploads\/2019\/09\/stock-lede-linux-see-attribution.png","fifu_image_alt":"","footnotes":""},"categories":[18],"tags":[],"class_list":["post-120834","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technology"],"_links":{"self":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/120834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/comments?post=120834"}],"version-history":[{"count":0,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/posts\/120834\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media\/120835"}],"wp:attachment":[{"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/media?parent=120834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/categories?post=120834"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/buradabiliyorum.com\/en\/wp-json\/wp\/v2\/tags?post=120834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}