{"id":300,"date":"2017-11-10T15:14:42","date_gmt":"2017-11-10T15:14:42","guid":{"rendered":"https:\/\/bootstrap-it.com\/blog\/?p=300"},"modified":"2017-11-10T15:22:47","modified_gmt":"2017-11-10T15:22:47","slug":"overview-history-systemd%e2%80%8a-linux-process-manager","status":"publish","type":"post","link":"https:\/\/bootstrap-it.com\/blog\/?p=300","title":{"rendered":"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager"},"content":{"rendered":"<div id=\"s-share-buttons\" class=\"horizontal-w-c-circular s-share-w-c\"><a href=\"http:\/\/www.facebook.com\/sharer.php?u=https:\/\/bootstrap-it.com\/blog\/?p=300\" target=\"_blank\" title=\"Share to Facebook\" class=\"s3-facebook hint--top\"><\/a><a href=\"http:\/\/twitter.com\/intent\/tweet?text=A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager&url=https:\/\/bootstrap-it.com\/blog\/?p=300\" target=\"_blank\"  title=\"Share to Twitter\" class=\"s3-twitter hint--top\"><\/a><a href=\"http:\/\/reddit.com\/submit?url=https:\/\/bootstrap-it.com\/blog\/?p=300&title=A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager\" target=\"_blank\" title=\"Share to Reddit\" class=\"s3-reddit hint--top\"><\/a><a href=\"http:\/\/www.linkedin.com\/shareArticle?mini=true&url=https:\/\/bootstrap-it.com\/blog\/?p=300\" target=\"_blank\" title=\"Share to LinkedIn\" class=\"s3-linkedin hint--top\"><\/a><a href=\"mailto:?Subject=A%20brief%20overview%20and%20history%20of%20systemd\u200a\u2014\u200athe%20Linux%20process%20manager&Body=Here%20is%20the%20link%20to%20the%20article:%20https:\/\/bootstrap-it.com\/blog\/?p=300\" title=\"Email this article\" class=\"s3-email hint--top\"><\/a><\/div><p id=\"d54e\" class=\"graf graf--p graf-after--h3\">Intelligently running Linux services includes knowing how to test for their status which, in turn, requires understanding how modern Linux distributions manage processes. This article\u200a\u2014\u200aexcerpted from the early access edition (MEAP) of\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\">my new Manning book \u201cLinux in Action\u201d<\/a>\u00a0(which is available for 37% off using the code\u00a0<strong class=\"markup--strong markup--p-strong\">fcclinton3<\/strong>), will briefly explore the function and history of systemd\u200a\u2014\u200athe process manager that seems to be loved, feared, and hated in equal parts.<\/p>\n<p id=\"aa42\" class=\"graf graf--p graf-after--p\">Something on your Linux box isn\u2019t running? Troubleshooting is your friend. But before you even get there, shouldn\u2019t you make sure the underlying service is actually running? Sometimes the configuration files are by default set to inactive.<\/p>\n<p id=\"0955\" class=\"graf graf--p graf-after--p\">You can use\u00a0<em class=\"markup--em markup--p-em\">systemctl status<\/em>\u00a0to find out whether a service\u200a\u2014\u200aOpenSSH in this example\u200a\u2014\u200ais running on your machine:<\/p>\n<pre id=\"e1f3\" class=\"graf graf--pre graf-after--p\">$ systemctl status ssh\r\n\u25cf ssh.service - OpenBSD Secure Shell server\r\n   Loaded: loaded (\/lib\/systemd\/system\/ssh.service; enabled; vendor preset: enabled)\r\n   Active: active (running) since Mon 2017-05-15 12:37:18 UTC; 4h 47min ago  \r\n Main PID: 280 (sshd)   &lt;2&gt;\r\n    Tasks: 8\r\n   Memory: 10.1M\r\n      CPU: 1.322s\r\n   CGroup: \/system.slice\/ssh.service\r\n           \u251c\u2500 280 \/usr\/sbin\/sshd -D\r\n           \u251c\u2500 894 sshd: ubuntu [priv] \r\n           \u251c\u2500 903 sshd: ubuntu@pts\/4  \r\n           \u251c\u2500 904 -bash\r\n           \u251c\u25001612 bash\r\n           \u251c\u25001628 sudo systemctl status ssh\r\n           \u2514\u25001629 systemctl status ssh\r\n[...]<\/pre>\n<p id=\"7da1\" class=\"graf graf--p graf-after--pre\">In this case, as you can see from the Active line of the output, everything is fine. If you did have to crank it up yourself though, you\u2019d use systemctl once again, but this time with\u00a0<em class=\"markup--em markup--p-em\">start<\/em>\u00a0in place of\u00a0<em class=\"markup--em markup--p-em\">status<\/em>. Bored with your new toy?\u00a0<em class=\"markup--em markup--p-em\">systemctl stop<\/em>\u00a0will put it away for you.<\/p>\n<pre id=\"6745\" class=\"graf graf--pre graf-after--p\"># systemctl stop ssh<\/pre>\n<p id=\"5f25\" class=\"graf graf--p graf-after--pre\">That systemctl fellow seems nice enough, but we\u2019ve barely had the chance to meet him. Let\u2019s dig a big deeper.<\/p>\n<h4 id=\"2e05\" class=\"graf graf--h4 graf-after--p\">Linux process management<\/h4>\n<p id=\"892d\" class=\"graf graf--p graf-after--h4\">First, just what is systemctl and what\u2019s it actually doing? To properly answer that question, you\u2019ll have to think for a bit about how Linux manages system processes in general. And since it\u2019s always nice to meet new friends, you will also learn about some process tracking tools to make understanding the way things work easier.<\/p>\n<p id=\"c911\" class=\"graf graf--p graf-after--p\">Software, as I\u2019m sure you already know, is programming code containing instructions to control computer hardware on behalf of human users. An operating system is a tool for organizing and managing software packages so that they can effectively leverage a computer\u2019s hardware resources. Organizing and managing processes for a complex multi-process and multi-user operating environment is no simple task. To make it work, you\u2019ll need some kind of traffic cop to tightly control the many moving parts. Let me introduce you to systemctl, a hard-working officer in the traffic division of the Linux Police Department.<\/p>\n<figure id=\"b79c\" class=\"graf graf--figure graf-after--p\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"aspectRatioPlaceholder-fill\"><\/div>\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*OD9MOvg4XlBFYezYqwUSMA.png\" data-width=\"1187\" data-height=\"471\" data-action=\"zoom\" data-action-value=\"1*OD9MOvg4XlBFYezYqwUSMA.png\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"75\" height=\"27\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*OD9MOvg4XlBFYezYqwUSMA.png\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*OD9MOvg4XlBFYezYqwUSMA.png\" \/><\/div>\n<\/div><figcaption class=\"imageCaption\">The availability and responsiveness of many system services are managed by systemd\u2019s systemctl process\u00a0manager<\/figcaption><\/figure>\n<h4 id=\"b678\" class=\"graf graf--h4 graf-after--figure\">Viewing processes with the ps\u00a0command<\/h4>\n<p id=\"dcf2\" class=\"graf graf--p graf-after--h4\">Let\u2019s pull out an electron microscope and see if we can\u2019t spot an actual process in its natural\u00a0<span class=\"markup--quote markup--p-quote is-other\" data-creator-ids=\"96398f5e2c69\">habitat<\/span>. The very first process to wake up and get everything else going when a Linux computer boots is called init (although as we\u2019ll soon discover, that name can be misleading). You can see for yourself that init is first by running the following ps command exactly the way it\u2019s printed here\u200a\u2014\u200aI\u2019ll explain the details in just a minute.<\/p>\n<pre id=\"8251\" class=\"graf graf--pre graf-after--p\">$ ps -ef | grep init \r\nroot         1     0  0 12:36 ?        00:00:00 \/sbin\/init \r\nubuntu    1406   904  0 16:26 pts\/4    00:00:00 grep --color=auto init<\/pre>\n<p id=\"96f9\" class=\"graf graf--p graf-after--pre\">The rightmost column of output (\/sbin\/init on the first line) represents the location and name of the file behind the process itself. In this case, it\u2019s a file called \u201cinit\u201d that lives in the \/sbin directory. The leftmost column on this first line contains the word\u00a0<em class=\"markup--em markup--p-em\">root<\/em>\u00a0and tells us that the owner of this process is the root user. The only other piece of information that interests us right now is the number 1, which is the process ID (PID) of the init process. The only way you\u2019re going to get PID 1 is by getting there before anyone else.<\/p>\n<p id=\"506c\" class=\"graf graf--p graf-after--p\">By the way, the second line displayed by that ps command is the process assigned to the grep command itself. Note how its owner is ubuntu (my username) and its PID is much higher than 1.<\/p>\n<p id=\"e664\" class=\"graf graf--p graf-after--p\">Before moving on it\u2019s worth spending a bit more time with ps. As you\u2019ve seen, ps displays information about active processes. It\u2019s often important to have access to process-related information so we can properly plan and troubleshoot system behavior. You can expect to use ps early and often.<\/p>\n<p id=\"523a\" class=\"graf graf--p graf-after--p\">If you were to type just ps and run it, you\u2019d probably get only two results: the first, a process called bash that represents the Bash command interpreter being used by your current shell session, and the most recent command (which, of course, was ps). But by looking at the PID assigned to Bash (7447, in this example), you just know there are lots and lots of other processes already hard at work somewhere on your system. These will have been spawned by parent shells going all the way back to the init process itself.<\/p>\n<pre id=\"d1e9\" class=\"graf graf--pre graf-after--p\">$ ps\r\n PID TTY          TIME CMD\r\n7447 pts\/3    00:00:00 bash\r\n8041 pts\/3    00:00:00 ps<\/pre>\n<p id=\"55ac\" class=\"graf graf--p graf-after--pre\">Adding the -e argument to ps as we did above will return not only the processes running in your current child shell, but all the processes from all parent shells right back up to init.<\/p>\n<p id=\"dbbd\" class=\"graf graf--p graf-after--p\">A parent shell is a shell environment from within which new (child) shells can subsequently be launched and through which programs run. You can think of your GUI desktop session as a shell, and the terminal you open to get a command line as its child. The top level shell (the grandparent?) is the one that is run first when Linux boots.<\/p>\n<p id=\"d556\" class=\"graf graf--p graf-after--p\">If you want to visualize parent and child shells\/processes, you can use the pstree commmand (adding the -p argument to display the PID numbers for each process). Note how the very first process (assigned PID 1) is\u00a0<em class=\"markup--em markup--p-em\">systemd<\/em>. On older versions of Linux, this would have been called\u00a0<em class=\"markup--em markup--p-em\">init<\/em>\u00a0instead.<\/p>\n<pre id=\"5684\" class=\"graf graf--pre graf-after--p\">$ pstree -p\r\nsystemd(1)\u2500\u252c\u2500agetty(264) \r\n           \u251c\u2500agetty(266)\r\n           \u251c\u2500agetty(267)\r\n           \u251c\u2500agetty(268)\r\n           \u251c\u2500agetty(269)\r\n           \u251c\u2500apache2(320)\u2500\u252c\u2500apache2(351)\r\n           \u2502              \u251c\u2500apache2(352)\r\n           \u2502              \u251c\u2500apache2(353)\r\n           \u2502              \u251c\u2500apache2(354)\r\n           \u2502              \u2514\u2500apache2(355)\r\n           \u251c\u2500cron(118)\r\n           \u251c\u2500dbus-daemon(109)\r\n           \u251c\u2500dhclient(204)\r\n           \u251c\u2500dockerd(236)\u2500\u252c\u2500docker-containe(390)\u2500\u252c\u2500{docker-containe}(392)\r\n           \u2502              \u2502                      \u2514\u2500{docker-containe}(404)\r\n           \u2502              \u251c\u2500{dockerd}(306)\r\n           \u2502              \u2514\u2500{dockerd}(409)\r\n           \u251c\u2500mysqld<span class=\"markup--quote markup--pre-quote is-other\" data-creator-ids=\"afaf9fcd2337\">(280)\u2500\u252c\u2500{mysqld}(325)\r\n           \u2502             \u251c\u2500{mysqld}(326)\r\n           \u2502             \u2514\u2500{mysqld}(399)<\/span>\r\n           \u251c\u2500nmbd(294)\r\n           \u251c\u2500rsyslogd(116)\u2500\u252c\u2500{in:imklog}(166)\r\n           \u2502               \u251c\u2500{in:imuxsock}(165)\r\n           \u2502               \u2514\u2500{rs:main Q:Reg}(167)\r\n           \u251c\u2500smbd(174)\u2500\u252c\u2500smbd(203)\r\n           \u2502           \u2514\u2500smbd(313)\r\n           \u251c\u2500sshd(239)\u2500\u2500\u2500sshd(840)\u2500\u2500\u2500sshd(849)\u2500\u2500\u2500bash(850)\u2500\u2500\u2500pstree(15328)\r\n           \u251c\u2500systemd-journal(42)\r\n           \u2514\u2500systemd-logind(108)<\/pre>\n<p id=\"97dd\" class=\"graf graf--p graf-after--pre\">Go ahead and try all these commands on your own machine. Even on a quiet system, you\u2019ll probably see dozens of processes; a busy desktop PC or server can easily have thousands.<\/p>\n<h4 id=\"60fb\" class=\"graf graf--h4 graf-after--p\">Working with\u00a0systemd<\/h4>\n<p id=\"564d\" class=\"graf graf--p graf-after--h4\">There\u2019s something interesting about that \/sbin\/init file we just saw. \u201cfile\u201d is a venerable Unix program that gives you insider information about a file.\u00a0<span class=\"markup--quote markup--p-quote is-other\" data-creator-ids=\"96398f5e2c69\">If you run\u00a0<em class=\"markup--em markup--p-em\">file<\/em>\u00a0with \/sbin\/init as its argument, you\u2019ll see that the init file is not actually a program, but simply a symbolic link to a program called systemd.<\/span><\/p>\n<pre id=\"75a2\" class=\"graf graf--pre graf-after--p\">$ file \/sbin\/init\r\n\/sbin\/init: symbolic link to \/lib\/systemd\/systemd<\/pre>\n<p id=\"78a6\" class=\"graf graf--p graf-after--pre\">After many years of fragmentation and some vigorous political infighting, nearly all Linux distributions now use the same process manager: systemd. systemd is a drop-in replacement for the init process. By \u201cdrop-in replacement\u201d I mean that, even if the way it gets things done can be quite different, to the casual observer, systemd functions just like init always did. That\u2019s why the \/sbin\/init file is now really nothing more than a link to the systemd program.<\/p>\n<p id=\"68aa\" class=\"graf graf--p graf-after--p\">This is all a bit theoretical since you\u2019ll probably never actually invoke the systemd program itself by name\u200a\u2014\u200aeither directly or through its \/sbin\/init front end. This is because, as you\u2019ve already seen, the key administration tasks are handled by systemctl on behalf of systemd.<\/p>\n<p id=\"11c4\" class=\"graf graf--p graf-after--p\">Technically, systemd\u2019s primary job is to control the ways individual processes are born, live their lives, and then die. The systemctl command we used above is the tool of choice for those tasks. But\u200a\u2014\u200asomewhat controversially\u200a\u2014\u200athe systemd developers expanded the functionality far beyond the traditional role of process management to take control over various system services. Included under the new systemd umbrella are tools like a logging manager (journald), network manager (networkd), and device manager (you guessed it: udevd). Curious? The \u201cd\u201d stands for daemon; a background system process.<\/p>\n<figure id=\"7326\" class=\"graf graf--figure graf-after--p\">\n<div class=\"aspectRatioPlaceholder is-locked\">\n<div class=\"progressiveMedia js-progressiveMedia graf-image is-canvasLoaded is-imageLoaded\" data-image-id=\"1*Vf0O0r-mozXQQORL-y39oQ.png\" data-width=\"720\" data-height=\"903\" data-is-featured=\"true\" data-action=\"zoom\" data-action-value=\"1*Vf0O0r-mozXQQORL-y39oQ.png\" data-scroll=\"native\"><canvas class=\"progressiveMedia-canvas js-progressiveMedia-canvas\" width=\"60\" height=\"75\"><\/canvas><img decoding=\"async\" class=\"progressiveMedia-image js-progressiveMedia-image\" src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*Vf0O0r-mozXQQORL-y39oQ.png\" data-src=\"https:\/\/cdn-images-1.medium.com\/max\/800\/1*Vf0O0r-mozXQQORL-y39oQ.png\" \/><\/div>\n<\/div>\n<\/figure>\n<p id=\"7bb1\" class=\"graf graf--p graf-after--figure graf--trailing\">This article is adapted from chapter 3 (<em class=\"markup--em markup--p-em\">Remote connectivity: safely access networked machines<\/em>) of my\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/www.manning.com\/books\/linux-in-action?a_aid=bootstrap-it&amp;a_bid=4ca15fc9\">Manning \u201cLinux in Action\u201d book<\/a>. There\u2019s lots more fun where this came from. Who knows\u2026you might also enjoy my recently published\u00a0<a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.manning.com\/books\/learn-amazon-web-services-in-a-month-of-lunches?a_aid=bootstrap-it&amp;amp;a_bid=1c1b5e27\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/www.manning.com\/books\/learn-amazon-web-services-in-a-month-of-lunches?a_aid=bootstrap-it&amp;amp;a_bid=1c1b5e27\">Learn Amazon Web Services in a Month of Lunches<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Intelligently running Linux services includes knowing how to test for their status which, in turn, requires understanding how modern Linux distributions manage processes. This article\u200a\u2014\u200aexcerpted from the early access edition (MEAP) of\u00a0my new Manning book \u201cLinux in Action\u201d\u00a0(which is available&hellip; <a href=\"https:\/\/bootstrap-it.com\/blog\/?p=300\" class=\"more-link\">Continue Reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":303,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-300","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.2.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager - Bootstrap IT<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bootstrap-it.com\/blog\/?p=300\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager - Bootstrap IT\" \/>\n<meta property=\"og:description\" content=\"Intelligently running Linux services includes knowing how to test for their status which, in turn, requires understanding how modern Linux distributions manage processes. This article\u200a\u2014\u200aexcerpted from the early access edition (MEAP) of\u00a0my new Manning book \u201cLinux in Action\u201d\u00a0(which is available&hellip; Continue Reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bootstrap-it.com\/blog\/?p=300\" \/>\n<meta property=\"og:site_name\" content=\"Bootstrap IT\" \/>\n<meta property=\"article:published_time\" content=\"2017-11-10T15:14:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-11-10T15:22:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/bootstrap-it.com\/blog\/wp-content\/uploads\/systemd-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"317\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"dbclin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@davidbclinton\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"dbclin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/?p=300\",\"url\":\"https:\/\/bootstrap-it.com\/blog\/?p=300\",\"name\":\"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager - Bootstrap IT\",\"isPartOf\":{\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#website\"},\"datePublished\":\"2017-11-10T15:14:42+00:00\",\"dateModified\":\"2017-11-10T15:22:47+00:00\",\"author\":{\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec\"},\"breadcrumb\":{\"@id\":\"https:\/\/bootstrap-it.com\/blog\/?p=300#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bootstrap-it.com\/blog\/?p=300\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/?p=300#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/bootstrap-it.com\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#website\",\"url\":\"https:\/\/bootstrap-it.com\/blog\/\",\"name\":\"Bootstrap IT\",\"description\":\"Learn technology using technology\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bootstrap-it.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec\",\"name\":\"dbclin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g\",\"caption\":\"dbclin\"},\"sameAs\":[\"http:\/\/bootstrap-it.com\/\",\"dbclinton\",\"https:\/\/twitter.com\/davidbclinton\"],\"url\":\"https:\/\/bootstrap-it.com\/blog\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager - Bootstrap IT","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bootstrap-it.com\/blog\/?p=300","og_locale":"en_US","og_type":"article","og_title":"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager - Bootstrap IT","og_description":"Intelligently running Linux services includes knowing how to test for their status which, in turn, requires understanding how modern Linux distributions manage processes. This article\u200a\u2014\u200aexcerpted from the early access edition (MEAP) of\u00a0my new Manning book \u201cLinux in Action\u201d\u00a0(which is available&hellip; Continue Reading &rarr;","og_url":"https:\/\/bootstrap-it.com\/blog\/?p=300","og_site_name":"Bootstrap IT","article_published_time":"2017-11-10T15:14:42+00:00","article_modified_time":"2017-11-10T15:22:47+00:00","og_image":[{"width":800,"height":317,"url":"https:\/\/bootstrap-it.com\/blog\/wp-content\/uploads\/systemd-1.png","type":"image\/png"}],"author":"dbclin","twitter_card":"summary_large_image","twitter_creator":"@davidbclinton","twitter_misc":{"Written by":"dbclin","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bootstrap-it.com\/blog\/?p=300","url":"https:\/\/bootstrap-it.com\/blog\/?p=300","name":"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager - Bootstrap IT","isPartOf":{"@id":"https:\/\/bootstrap-it.com\/blog\/#website"},"datePublished":"2017-11-10T15:14:42+00:00","dateModified":"2017-11-10T15:22:47+00:00","author":{"@id":"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec"},"breadcrumb":{"@id":"https:\/\/bootstrap-it.com\/blog\/?p=300#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bootstrap-it.com\/blog\/?p=300"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bootstrap-it.com\/blog\/?p=300#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bootstrap-it.com\/blog"},{"@type":"ListItem","position":2,"name":"A brief overview and history of systemd\u200a\u2014\u200athe Linux process manager"}]},{"@type":"WebSite","@id":"https:\/\/bootstrap-it.com\/blog\/#website","url":"https:\/\/bootstrap-it.com\/blog\/","name":"Bootstrap IT","description":"Learn technology using technology","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bootstrap-it.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/ae0fb1d5b3b01558b92b6426d77766ec","name":"dbclin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/bootstrap-it.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a93785d437350478a7f1dfcbec58d26bc28e0124e405179acbe1b4325c09f90a?s=96&d=mm&r=g","caption":"dbclin"},"sameAs":["http:\/\/bootstrap-it.com\/","dbclinton","https:\/\/twitter.com\/davidbclinton"],"url":"https:\/\/bootstrap-it.com\/blog\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=300"}],"version-history":[{"count":2,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/300\/revisions"}],"predecessor-version":[{"id":302,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/300\/revisions\/302"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/303"}],"wp:attachment":[{"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bootstrap-it.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}