CINXE.COM

Servers | Linux Journal

<!DOCTYPE html> <html lang="en" dir="ltr" prefix="content: http://purl.org/rss/1.0/modules/content/ dc: http://purl.org/dc/terms/ foaf: http://xmlns.com/foaf/0.1/ og: http://ogp.me/ns# rdfs: http://www.w3.org/2000/01/rdf-schema# schema: http://schema.org/ sioc: http://rdfs.org/sioc/ns# sioct: http://rdfs.org/sioc/types# skos: http://www.w3.org/2004/02/skos/core# xsd: http://www.w3.org/2001/XMLSchema# " class="no-js wf-loading"> <head> <meta charset="utf-8" /> <meta name="Generator" content="Drupal 9 (https://www.drupal.org)" /> <meta name="MobileOptimized" content="width" /> <meta name="HandheldFriendly" content="true" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="icon" href="/themes/linuxjournal/favicon.ico" type="image/vnd.microsoft.icon" /> <link rel="alternate" type="application/rss+xml" title="Servers" href="https://www.linuxjournal.com/taxonomy/term/153/feed" /> <title>Servers | Linux Journal</title> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/align.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/fieldgroup.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/container-inline.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/clearfix.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/details.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/hidden.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/item-list.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/js.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/nowrap.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/position-container.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/progress.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/reset-appearance.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/resize.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/sticky-header.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-counter.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-report-counters.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-report-general-info.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/tablesort.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/system/css/components/tree-child.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/modules/contrib/poll/css/poll.base.css?smwnh4" /> <link rel="stylesheet" media="all" href="/modules/contrib/poll/css/poll.theme.css?smwnh4" /> <link rel="stylesheet" media="all" href="/core/modules/views/css/views.module.css?smwnh4" /> <link rel="stylesheet" media="all" href="/modules/contrib/webform/modules/webform_bootstrap/css/webform_bootstrap.css?smwnh4" /> <link rel="stylesheet" media="all" href="/libraries/shariff/shariff.complete.css?smwnh4" /> <link rel="stylesheet" media="all" href="/themes/linuxjournal/css/style.css?smwnh4" /> <link rel="stylesheet" media="all" href="/themes/linuxjournal/css/fonts.css?smwnh4" /> <!-- <script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js" integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl" crossorigin="anonymous"></script>--> <script> // Non-blocking webfonts. (function iife() { 'use strict'; // JS is able to start executing. document.documentElement.classList.remove('no-js'); // Optimization for Repeat Views // Stop early for repeat views that have already cached fonts. if (sessionStorage.fontsLoadedLateef && sessionStorage.fontsLoadedOpensans /* && sessionStorage.fontsLoadedNEWFONT */) { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-opensans'); document.documentElement.classList.add('wf-lateef'); // document.documentElement.classList.add('wf-NEWFONT'); return; } // Inlined Font Face Observer script + Promise polyfill. /*! Font Face Observer v2.0.13 - © Bram Stein. License: BSD-3-Clause */ (function(){'use strict';var f,g=[];function l(a){g.push(a);1==g.length&&f()}function m(){for(;g.length;)g[0](),g.shift()}f=function(){setTimeout(m)};function n(a){this.a=p;this.b=void 0;this.f=[];var b=this;try{a(function(a){q(b,a)},function(a){r(b,a)})}catch(c){r(b,c)}}var p=2;function t(a){return new n(function(b,c){c(a)})}function u(a){return new n(function(b){b(a)})}function q(a,b){if(a.a==p){if(b==a)throw new TypeError;var c=!1;try{var d=b&&b.then;if(null!=b&&"object"==typeof b&&"function"==typeof d){d.call(b,function(b){c||q(a,b);c=!0},function(b){c||r(a,b);c=!0});return}}catch(e){c||r(a,e);return}a.a=0;a.b=b;v(a)}} function r(a,b){if(a.a==p){if(b==a)throw new TypeError;a.a=1;a.b=b;v(a)}}function v(a){l(function(){if(a.a!=p)for(;a.f.length;){var b=a.f.shift(),c=b[0],d=b[1],e=b[2],b=b[3];try{0==a.a?"function"==typeof c?e(c.call(void 0,a.b)):e(a.b):1==a.a&&("function"==typeof d?e(d.call(void 0,a.b)):b(a.b))}catch(h){b(h)}}})}n.prototype.g=function(a){return this.c(void 0,a)};n.prototype.c=function(a,b){var c=this;return new n(function(d,e){c.f.push([a,b,d,e]);v(c)})}; function w(a){return new n(function(b,c){function d(c){return function(d){h[c]=d;e+=1;e==a.length&&b(h)}}var e=0,h=[];0==a.length&&b(h);for(var k=0;k<a.length;k+=1)u(a[k]).c(d(k),c)})}function x(a){return new n(function(b,c){for(var d=0;d<a.length;d+=1)u(a[d]).c(b,c)})};window.Promise||(window.Promise=n,window.Promise.resolve=u,window.Promise.reject=t,window.Promise.race=x,window.Promise.all=w,window.Promise.prototype.then=n.prototype.c,window.Promise.prototype["catch"]=n.prototype.g);}()); (function(){function l(a,b){document.addEventListener?a.addEventListener("scroll",b,!1):a.attachEvent("scroll",b)}function m(a){document.body?a():document.addEventListener?document.addEventListener("DOMContentLoaded",function c(){document.removeEventListener("DOMContentLoaded",c);a()}):document.attachEvent("onreadystatechange",function k(){if("interactive"==document.readyState||"complete"==document.readyState)document.detachEvent("onreadystatechange",k),a()})};function r(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.h=document.createElement("span");this.f=document.createElement("span");this.g=-1;this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;"; this.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;";this.b.appendChild(this.h);this.c.appendChild(this.f);this.a.appendChild(this.b);this.a.appendChild(this.c)} function t(a,b){a.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:"+b+";"}function y(a){var b=a.a.offsetWidth,c=b+100;a.f.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.g!==b?(a.g=b,!0):!1}function z(a,b){function c(){var a=k;y(a)&&a.a.parentNode&&b(a.g)}var k=a;l(a.b,c);l(a.c,c);y(a)};function A(a,b){var c=b||{};this.family=a;this.style=c.style||"normal";this.weight=c.weight||"normal";this.stretch=c.stretch||"normal"}var B=null,C=null,E=null,F=null;function G(){if(null===C)if(J()&&/Apple/.test(window.navigator.vendor)){var a=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent);C=!!a&&603>parseInt(a[1],10)}else C=!1;return C}function J(){null===F&&(F=!!document.fonts);return F} function K(){if(null===E){var a=document.createElement("div");try{a.style.font="condensed 100px sans-serif"}catch(b){}E=""!==a.style.font}return E}function L(a,b){return[a.style,a.weight,K()?a.stretch:"","100px",b].join(" ")} A.prototype.load=function(a,b){var c=this,k=a||"BESbswy",q=0,D=b||3E3,H=(new Date).getTime();return new Promise(function(a,b){if(J()&&!G()){var M=new Promise(function(a,b){function e(){(new Date).getTime()-H>=D?b():document.fonts.load(L(c,'"'+c.family+'"'),k).then(function(c){1<=c.length?a():setTimeout(e,25)},function(){b()})}e()}),N=new Promise(function(a,c){q=setTimeout(c,D)});Promise.race([N,M]).then(function(){clearTimeout(q);a(c)},function(){b(c)})}else m(function(){function u(){var b;if(b=-1!= f&&-1!=g||-1!=f&&-1!=h||-1!=g&&-1!=h)(b=f!=g&&f!=h&&g!=h)||(null===B&&(b=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),B=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))),b=B&&(f==v&&g==v&&h==v||f==w&&g==w&&h==w||f==x&&g==x&&h==x)),b=!b;b&&(d.parentNode&&d.parentNode.removeChild(d),clearTimeout(q),a(c))}function I(){if((new Date).getTime()-H>=D)d.parentNode&&d.parentNode.removeChild(d),b(c);else{var a=document.hidden;if(!0===a||void 0===a)f=e.a.offsetWidth, g=n.a.offsetWidth,h=p.a.offsetWidth,u();q=setTimeout(I,50)}}var e=new r(k),n=new r(k),p=new r(k),f=-1,g=-1,h=-1,v=-1,w=-1,x=-1,d=document.createElement("div");d.dir="ltr";t(e,L(c,"sans-serif"));t(n,L(c,"serif"));t(p,L(c,"monospace"));d.appendChild(e.a);d.appendChild(n.a);d.appendChild(p.a);document.body.appendChild(d);v=e.a.offsetWidth;w=n.a.offsetWidth;x=p.a.offsetWidth;I();z(e,function(a){f=a;u()});t(e,L(c,'"'+c.family+'",sans-serif'));z(n,function(a){g=a;u()});t(n,L(c,'"'+c.family+'",serif')); z(p,function(a){h=a;u()});t(p,L(c,'"'+c.family+'",monospace'))})})};"object"===typeof module?module.exports=A:(window.FontFaceObserver=A,window.FontFaceObserver.prototype.load=A.prototype.load);}()); // Load and observe Lateef var Lateef = new FontFaceObserver('Lateef', {weight: 400}); Promise.all([Lateef.load()]).then(function() { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-lateef'); // Optimization for Repeat Views // Set a flag in localstorage so repeat views can skip processing FFO. sessionStorage.fontsLoadedLateef = true; }); // Load and observe Open Sans var os300 = new FontFaceObserver('Open Sans', {weight: 300}); var os400 = new FontFaceObserver('Open Sans', {weight: 400}); Promise.all([os300.load(), os400.load()]).then(function() { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-opensans'); // Optimization for Repeat Views // Set a flag in localstorage so repeat views can skip processing FFO. sessionStorage.fontsLoadedOpensans = true; }); // Load and observe NEWFONT /* var NEWFONT = new FontFaceObserver('NEWFONT', {weight: 400}); Promise.all([NEWFONT.load()]).then(function() { document.documentElement.classList.remove('wf-loading'); document.documentElement.classList.add('wf-NEWFONT'); // Optimization for Repeat Views // Set a flag in localstorage so repeat views can skip processing FFO. sessionStorage.fontsLoadedNEWFONT = true; }); */ })(); </script> <script src="https://www.google.com/recaptcha/api.js" async defer></script> <script src=https://slashdot.org/country.js></script> <script src="/themes/linuxjournal/js/ada.js"></script> <script src="/themes/linuxjournal/js/accessibility.js"></script> <script>window.addEventListener('load', function() { new Accessibility(); });</script> <script src="//a.fsdn.com/con/js/sftheme/cmp2.js"></script> <link rel="stylesheet" href="//a.fsdn.com/con/css/sftheme/sandiego/cmp.css" type="text/css"> <link rel="stylesheet" href="/themes/linuxjournal/css/ccpa.css" type="text/css"> <script>window.bizx.cmp.init({ geo: window });</script> <script> function bm_trace() { (function (w,d,t) { _ml = w._ml || {}; _ml.eid = '771'; var s, cd, tag; s = d.getElementsByTagName(t)[0]; cd = new Date(); tag = d.createElement(t); tag.async = 1; tag.src = 'https://ml314.com/tag.aspx?' + cd.getDate() + cd.getMonth(); s.parentNode.insertBefore(tag, s); })(window,document,'script'); } bizx.cmp.ifConsent('', ['all', 'bombora'],bm_trace); </script> </head> <body class="path-taxonomy has-glyphicons"> <a href="#main-content" class="visually-hidden focusable skip-link"> Skip to main content </a> <div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas> <div id="wrap"> <div class="leader-wrapper" id="leader-wrapper"> </div> <div class="brand-wrapper" id="brand-wrapper"> <div class="brand container"> <div class="region region-brand"> <a class="logo navbar-btn" href="/" title="Home" rel="home"> <h1><img src="/themes/linuxjournal/images/ljlogo.png" alt="Linux Journal" /></h1> </a> <section id="block-topbannernearlogo" class="block block-block-content block-block-contenta8e75a3d-967c-416d-8944-4015d1f90a84 clearfix"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><a href="https://www.windriver.com/products/elxr-pro?utm_source=ba&amp;utm_medium=pa&amp;utm_campaign=ba-dg-amer-awa-vsmf-eLxrProLau_lin_dis_09172024"><img alt="Windriver eLxrPro" data-entity-type="file" data-entity-uuid="8ba04368-7803-4329-a196-dc1ea780ec2a" src="/sites/default/files/inline-images/WindRiver-eLxrPro_0.png" width="728" height="90" loading="lazy" /></a></div> </section> </div> </div> <div class="header-wrapper"> <header class="navbar navbar-default container" id="navbar" role="banner"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <div id="navbar-collapse" class="navbar-collapse collapse"> <div class="region region-navigation-collapsible"> <section id="block-linuxjournal-main-menu" class="block block-system block-system-menu-blockmain clearfix navbar__menu col-xs-12 col-sm-8"> <ul class="menu menu--main nav navbar-nav"> <li class="expanded dropdown first"> <a href="/" class="dropdown-toggle" data-toggle="dropdown" data-drupal-link-system-path="&lt;front&gt;">Topics+ <span class="caret"></span></a> <ul class="dropdown-menu"> <li class="first"> <a href="/tag/cloud">Cloud</a> </li> <li> <a href="/tag/containers" data-drupal-link-system-path="taxonomy/term/978">Containers</a> </li> <li> <a href="/tag/desktop">Desktop</a> </li> <li> <a href="/tag/kernel" data-drupal-link-system-path="taxonomy/term/662">Kernel</a> </li> <li> <a href="/tag/mobile">Mobile</a> </li> <li> <a href="/tag/networking">Networking</a> </li> <li> <a href="/tag/privacy">Privacy</a> </li> <li> <a href="/tag/programming">Programming</a> </li> <li> <a href="/tag/security" data-drupal-link-system-path="taxonomy/term/31">Security</a> </li> <li> <a href="/tag/servers">Servers</a> </li> <li class="last"> <a href="/tag/sysadmin" data-drupal-link-system-path="taxonomy/term/21">SysAdmin</a> </li> </ul> </li> <li> <a href="/news" data-drupal-link-system-path="news">News</a> </li> <li class="last"> <a href="/books" data-drupal-link-system-path="books">eBooks</a> </li> </ul> </section> <section class="search-block-form block block-search block-search-form-block clearfix navbar__search col-xs-12 col-sm-4 col-md-4 col-md-offset-0" data-drupal-selector="search-block-form" id="block-linuxjournal-search" role="search"> <h2 class="block-title sr-only">Search</h2> <form action="/search/node" method="get" id="search-block-form" accept-charset="UTF-8"> <div class="form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group"> <label for="edit-keys" class="control-label sr-only">Search</label> <div class="input-group"><input title="Enter the terms you wish to search for." data-drupal-selector="edit-keys" class="form-search form-control" placeholder="Search" type="search" id="edit-keys" name="keys" value="" size="15" maxlength="128" /><span class="input-group-btn"><button type="submit" value="Search" class="button js-form-submit form-submit btn-primary btn icon-only" name=""><span class="sr-only">Search</span><span class="icon glyphicon glyphicon-search" aria-hidden="true"></span></button></span></div> <div id="edit-keys--description" class="description help-block"> Enter the terms you wish to search for. </div> </div> <div class="form-actions form-group js-form-wrapper form-wrapper" data-drupal-selector="edit-actions" id="edit-actions"></div> </form> </section> </div> </div> <div class="navbar-header"> <div class="region region-navigation"> <section id="block-mobilenavigation" class="block block-system block-system-menu-blockmenu-mobile-navbar clearfix col-xs-12 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-0 navbar__menu navbar__mobilenavigation"> <ul class="menu menu--menu-mobile-navbar nav"> <li class="first"> <a href="/news" data-drupal-link-system-path="news">News</a> </li> <li> <a href="/popular" data-drupal-link-system-path="popular">Popular</a> </li> <li class="last"> <a href="/recent" data-drupal-link-system-path="recent">Recent</a> </li> </ul> </section> </div> </div> </header> </div> </div> <div role="main" class="main-container container js-quickedit-main-content" id="main"> <div class="row"> <section class="col-sm-12"> <div class="highlighted"> <div class="region region-highlighted"> <div data-drupal-messages-fallback class="hidden"></div> </div> </div> <a id="main-content"></a> <div class="region region-content"> <h1 class="page-header">Servers</h1> <div class="views-element-container form-group"><div class="view view-taxonomy-term view-id-taxonomy_term view-display-id-page_1 js-view-dom-id-e75cf5168152ab69156c43bdccc93cf4fdf26aae5bb43f5236280b2e2be3ea45"> <div class="view-header"> <div about="/tag/servers" typeof="schema:Thing"> <span property="schema:name" content="Servers" class="hidden"></span> </div> </div> <div class="view-content"> <div class="views-row"><article data-history-node-id="1340119" role="article" about="/content/papas-got-brand-new-nas-software" class="story is-promoted teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/papas-got-brand-new-nas-software" rel="bookmark"> <span>Papa&#039;s Got a Brand New NAS: the Software</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/kyle-rankin" lang="" about="/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="">Kyle Rankin</a></span> - October 29, 2018 </div> </footer> <div class="content-body"> Who needs a custom NAS OS or a web-based GUI when command-line NAS software is so easy to configure? </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1340062" role="article" about="/content/stop-killing-your-cattle" class="story is-promoted teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/stop-killing-your-cattle" rel="bookmark"> <span>Stop Killing Your Cattle: Server Infrastructure Advice</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/kyle-rankin" lang="" about="/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="">Kyle Rankin</a></span> - September 11, 2018 </div> </footer> <div class="content-body"> It&#039;s great to treat your infrastructure like cattle—until it comes to troubleshooting. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339869" role="article" about="/content/why-you-should-do-it-yourself" class="story is-promoted teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/why-you-should-do-it-yourself" rel="bookmark"> <span>Why You Should Do It Yourself</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/kyle-rankin" lang="" about="/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="">Kyle Rankin</a></span> - May 31, 2018 </div> </footer> <div class="content-body"> Bring back the DIY movement and start with your own Linux servers. It wasn&#039;t very long ago that we lived in a society where it was a given that average people would do things themselves. There was a built-in assumption that you would perform basic repairs on household items, do general maintenance and repairs on your car, mow your lawn, cook your food and patch your clothes. The items around you reflected this assumption with visible and easy-to-access screws, spare buttons sewn on the bottom of shirts and user-replaceable parts. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339631" role="article" about="/content/rapid-secure-patching-tools-and-methods" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/rapid-secure-patching-tools-and-methods" rel="bookmark"> <span>Rapid, Secure Patching: Tools and Methods</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/charles-fisher" lang="" about="/users/charles-fisher" typeof="schema:Person" property="schema:name" datatype="">Charles Fisher</a></span> - January 29, 2018 </div> </footer> <div class="content-body"> Generate enterprise-grade SSH keys and load them into an agent for control of all kinds of Linux hosts. Script the agent with the Parallel Distributed Shell (pdsh) to effect rapid changes over your server farm. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339604" role="article" about="/content/avoiding-server-disaster" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/avoiding-server-disaster" rel="bookmark"> <span>Avoiding Server Disaster</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/reuven-m-lerner" lang="" about="/users/reuven-m-lerner" typeof="schema:Person" property="schema:name" datatype="">Reuven M. Lerner</a></span> - January 17, 2018 </div> </footer> <div class="content-body"> Worried that your server will go down? You should be. Here are some disaster-planning tips for server owners. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339585" role="article" about="/content/thinking-concurrently" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/thinking-concurrently" rel="bookmark"> <span>Thinking Concurrently: How Modern Network Applications Handle Multiple Connections</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/reuven-m-lerner" lang="" about="/users/reuven-m-lerner" typeof="schema:Person" property="schema:name" datatype="">Reuven M. Lerner</a></span> - January 12, 2018 </div> </footer> <div class="content-body"> Reuven explores different types of multiprocessing and looks at the advantages and disadvantages of each. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339558" role="article" about="/content/ansible-automation-framework-thinks-sysadmin" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/ansible-automation-framework-thinks-sysadmin" rel="bookmark"> <span>Ansible: the Automation Framework That Thinks Like a Sysadmin</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/shawn-powers" lang="" about="/users/shawn-powers" typeof="schema:Person" property="schema:name" datatype="">Shawn Powers</a></span> - January 5, 2018 </div> </footer> <div class="content-body"> I&#039;ve written about and trained folks on various DevOps tools through the years, and although they&#039;re awesome, it&#039;s obvious that most of them are designed from the mind of a developer. There&#039;s nothing wrong with that, because approaching configuration management programmatically is the whole point. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339554" role="article" about="/content/banana-backups" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/banana-backups" rel="bookmark"> <span>Banana Backups</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/kyle-rankin" lang="" about="/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="">Kyle Rankin</a></span> - November 21, 2017 </div> </footer> <div class="content-body"> In the September 2016 issue, I wrote an article called &quot;Papa&#039;s Got a Brand New NAS&quot; where I described how I replaced my rackmounted gear with a small, low-powered ARM device—the Odroid XU4. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339545" role="article" about="/content/sysadmin-101-patch-management" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/sysadmin-101-patch-management" rel="bookmark"> <span>Sysadmin 101: Patch Management</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/kyle-rankin" lang="" about="/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="">Kyle Rankin</a></span> - November 14, 2017 </div> </footer> <div class="content-body"> A few articles ago, I started a Sysadmin 101 series to pass down some fundamental knowledge about systems administration that the current generation of junior sysadmins, DevOps engineers or &quot;full stack&quot; developers might not learn otherwise. I had thought that I was done with the series, but then the WannaCry malware came out and exposed some of the poor patch management practices still </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339524" role="article" about="/content/pssc-labs-powerserve-hpc-servers-and-powerwulf-hpc-clusters" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/pssc-labs-powerserve-hpc-servers-and-powerwulf-hpc-clusters" rel="bookmark"> <span>PSSC Labs&#039; PowerServe HPC Servers and PowerWulf HPC Clusters</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/james-gray" lang="" about="/users/james-gray" typeof="schema:Person" property="schema:name" datatype="">James Gray</a></span> - October 16, 2017 </div> </footer> <div class="content-body"> In its quest to provide customers the latest and best computing solutions that deliver relentless performance with the absolute lowest TCO, PSSC Labs has supercharged two server solutions with next-generation processing power. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339481" role="article" about="/content/suse-linux-enterprise-server-sap-applications" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/suse-linux-enterprise-server-sap-applications" rel="bookmark"> <span>SUSE Linux Enterprise Server for SAP Applications</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/james-gray" lang="" about="/users/james-gray" typeof="schema:Person" property="schema:name" datatype="">James Gray</a></span> - September 6, 2017 </div> </footer> <div class="content-body"> Saving customers time, effort and budget as they implement SAP landscapes, including on-premises and now on-demand, are the core selling points for SUSE Linux Enterprise Server for SAP Applications. The latest release of the SAP-focused SUSE Linux server is also now available as the operating system for SAP solutions on Google Cloud Platform (GCP). </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339476" role="article" about="/content/ocado-technologys-kubermesh" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/ocado-technologys-kubermesh" rel="bookmark"> <span>Ocado Technology&#039;s Kubermesh</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/james-gray" lang="" about="/users/james-gray" typeof="schema:Person" property="schema:name" datatype="">James Gray</a></span> - August 30, 2017 </div> </footer> <div class="content-body"> Instead of relying on servers concentrated in one large data center, the new Kubermesh is designed to simplify data-center architectures for smart factories by elegantly and cost effectively leveraging a distributed network of computing nodes spread across the enterprise. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339451" role="article" about="/content/pssc-labs-eco-blade-1u" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/pssc-labs-eco-blade-1u" rel="bookmark"> <span>PSSC Labs&#039; Eco Blade 1U</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/james-gray" lang="" about="/users/james-gray" typeof="schema:Person" property="schema:name" datatype="">James Gray</a></span> - July 31, 2017 </div> </footer> <div class="content-body"> Arguably &quot;the greenest blade server on the market&quot;, PSSC Labs&#039; new Eco Blade 1U rack server offers power and performance with energy savings of up to 46% over competing servers, says the company. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339440" role="article" about="/content/applied-expert-systems-incs-cleverview-tcpip-linux-0" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/applied-expert-systems-incs-cleverview-tcpip-linux-0" rel="bookmark"> <span>Applied Expert Systems, Inc.&#039;s CleverView for TCP/IP on Linux</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/james-gray" lang="" about="/users/james-gray" typeof="schema:Person" property="schema:name" datatype="">James Gray</a></span> - July 12, 2017 </div> </footer> <div class="content-body"> The contemporary data center is typified by an ever-increasing amount of traffic occurring between servers, observes Applied Expert Systems, Inc. (AES), sagely. Fulfilling the logical need to facilitate improved server-to-server communications, AES created CleverView for TCP/IP on Linux, now at v2.7. CleverView provides IT staff access to current and </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339420" role="article" about="/content/my-love-affair-synology" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/my-love-affair-synology" rel="bookmark"> <span>My Love Affair with Synology</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/shawn-powers" lang="" about="/users/shawn-powers" typeof="schema:Person" property="schema:name" datatype="">Shawn Powers</a></span> - June 22, 2017 </div> </footer> <div class="content-body"> In my &quot;Hodge Podge&quot; article in the October 2016 issue, I mentioned how much I love the Synology NAS I have in my server closet (Figure 1). </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339406" role="article" about="/content/orchestration-mcollective-part-ii" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/orchestration-mcollective-part-ii" rel="bookmark"> <span>Orchestration with MCollective, Part II</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/kyle-rankin" lang="" about="/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="">Kyle Rankin</a></span> - June 8, 2017 </div> </footer> <div class="content-body"> In my last article, I introduced how MCollective could be used for general orchestration tasks. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339382" role="article" about="/content/iosafe-server-5" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/iosafe-server-5" rel="bookmark"> <span>ioSafe Server 5</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/james-gray" lang="" about="/users/james-gray" typeof="schema:Person" property="schema:name" datatype="">James Gray</a></span> - May 12, 2017 </div> </footer> <div class="content-body"> Until now, says ioSafe, true zero-recovery-point server solutions have been available only to the biggest of companies. However, with the arrival of ioSafe&#039;s Server 5, SMEs have access to &quot;the industry&#039;s first fire and waterproof server&quot; designed to eliminate data loss and minimize downtime. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339355" role="article" about="/content/simple-server-hardening-part-ii" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/simple-server-hardening-part-ii" rel="bookmark"> <span>Simple Server Hardening, Part II</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/kyle-rankin" lang="" about="/users/kyle-rankin" typeof="schema:Person" property="schema:name" datatype="">Kyle Rankin</a></span> - April 11, 2017 </div> </footer> <div class="content-body"> In my last article, I talked about the classic, complicated approach to server hardening you typically will find in many hardening documents and countered it with some specific, simple hardening steps that are much more effective and take a only few minutes. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339335" role="article" about="/content/smbclient-security-windows-printing-and-file-transfer" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/smbclient-security-windows-printing-and-file-transfer" rel="bookmark"> <span>smbclient Security for Windows Printing and File Transfer</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/charles-fisher" lang="" about="/users/charles-fisher" typeof="schema:Person" property="schema:name" datatype="">Charles Fisher</a></span> - March 28, 2017 </div> </footer> <div class="content-body"> Microsoft Windows is usually a presence in most computing environments, and UNIX administrators likely will be forced to use resources in Windows networks from time to time. Although many are familiar with the Samba server software, the matching smbclient utility often escapes notice. </div> </div> </article> </div> <div class="views-row"><article data-history-node-id="1339323" role="article" about="/content/hodge-podge" class="story is-promoted is-sticky teaser clearfix"> <div class="teaser-image"> </div> <div class="teaser-text"> <h2> <a href="/content/hodge-podge" rel="bookmark"> <span>Hodge Podge</span> </a> </h2> <footer> <div class="author"> <span><a title="View user profile." href="/users/shawn-powers" lang="" about="/users/shawn-powers" typeof="schema:Person" property="schema:name" datatype="">Shawn Powers</a></span> - March 21, 2017 </div> </footer> <div class="content-body"> For every article, I try to write something that is interesting, entertaining, educational and fun. Sometimes I even succeed. Many other times I have some things I&#039;d like to talk about, but there&#039;s not enough of it to fill the space. This time, I decided a disjointed hodge podge would be the theme. So let&#039;s just have a virtual nerdy talk about stuff, shall we? </div> </div> </article> </div> </div> <nav class="pager-nav text-center" role="navigation" aria-labelledby="pagination-heading"> <h4 id="pagination-heading" class="visually-hidden">Pagination</h4> <ul class="pagination js-pager__items"> <li class="pager__item is-active active"> <a href="?page=0" title="Current page"> <span class="visually-hidden"> Current page </span>1</a> </li> <li class="pager__item"> <a href="?page=1" title="Go to page 2"> <span class="visually-hidden"> Page </span>2</a> </li> <li class="pager__item"> <a href="?page=2" title="Go to page 3"> <span class="visually-hidden"> Page </span>3</a> </li> <li class="pager__item pager__item--next"> <a href="?page=1" title="Go to next page" rel="next"> <span class="visually-hidden">Next page</span> <span aria-hidden="true">››</span> </a> </li> <li class="pager__item pager__item--last"> <a href="?page=2" title="Go to last page" rel="last"> <span class="visually-hidden">Last page</span> <span aria-hidden="true">Last »</span> </a> </li> </ul> </nav> <div class="feed-icons"> <a href="https://www.linuxjournal.com/taxonomy/term/153/feed" class="feed-icon"> Subscribe to Servers </a> </div> </div> </div> </div> </section> </div> </div> <footer class="footer container" role="contentinfo"> <div class="region region-footer"> <section class="views-element-container block block-views block-views-blocknewsletter-promo-block-block-1 clearfix" id="block-views-block-newsletter-promo-block-block-1"> <div class="form-group"><div class="view view-newsletter-promo-block view-id-newsletter_promo_block view-display-id-block_1 js-view-dom-id-ae0b032ff08da232b03b30b104d0e005b5d38c105e3e6718aa98aa640caf91cf"> <div class="view-content"> <div class="views-row"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div class="newsletter-bottom"> <div class="col-md-9 col-sm-12 signup-form"> <!--<h3>Linux Journal Week in Review</h3> <p>Sign up to get all the good stuff delivered to your inbox every week.</p> <form id="subForm" class="js-cm-form" action="https://www.createsend.com/t/subscribeerror?description=" method="post" data-id="A61C50BEC994754B1D79C5819EC1255CDBC34DDF3E170B13E2BAC2D68C42BF424F853383C84F5BAE38EAB4CFA5C73907CAC074FF8192503AF80F3699F7FE5CE1"> <div class="flexform">--> <!--<label for="fieldEmail">Email</label> <br />--> <!--<input id="fieldEmail" name="cm-gjjtdh-gjjtdh" type="email" class="js-cm-email-input" placeholder="Enter your email. Get the newsletter." required /> <button class="js-cm-submit-button" type="submit">Sign Up</button> </div> <div> <input id="cm-privacy-consent" name="cm-privacy-consent" required type="checkbox" /> <label for="cm-privacy-consent">I give my consent to be emailed</label> <input id="cm-privacy-consent-hidden" name="cm-privacy-consent-hidden" type="hidden" value="true" /> </div> </form> <script type="text/javascript" src="https://js.createsend1.com/javascript/copypastesubscribeformlogic.js"></script> </div>--> <!--<div class="col-md-3 col-sm-12 subs-callout"> <img src="/sites/default/files/styles/large/public/2019-01/LJ294-Jan2019-Cover_0.jpg" width="100px" /> <h3>The Value of Open Source Journalism</h3> <p> Subscribe and support our coverage for technology's biggest thinkers – with up to 52% savings. </p> <strong><a href="https://www.linuxjournal.com/subscribe">Subscribe <i class="fa fa-angle-double-right" aria-hidden="true"></i></a> </strong> </div>--> </div> </div> </div> </div> </div> </div> </section> </div> <div class="footer-blocks col-sm-12"> <div class="col-md-6 col-sm-12 footer-left"> <div class="region region-footer-left"> <section id="block-connectwithusfooter" class="block block-block-content block-block-content5e722bd4-5e08-454b-8507-956089bfa661 clearfix"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div class="footer-heading">Connect With Us <span class="social-media sm-a-no-underline"><a href="https://youtube.com/linuxjournalonline" alt="Linux Journal on YouTube" aria-label="YouTube"><i class="fa fa-youtube fa-2x"></i></a><a href="https://www.facebook.com/linuxjournal/" alt="Linux Journal on Facebook" aria-label="Facebook"><i class="fa fa-facebook-f fa-2x"></i><a href="https://twitter.com/linuxjournal" alt="Linux Journal on Twitter" aria-label="Twitter"><i class="fa fa-twitter fa-2x"></i></a></span></div> <p>Linux Journal, representing 25+ years of publication, is the original magazine of the global Open Source community.</p></div> </section> <section id="block-linuxjournal-block-9" class="block block-block-content block-block-content8669793b-e217-4426-a79e-eb3c21ede127 clearfix"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div id="copyright">© 2024 Slashdot Media, LLC. All rights reserved.</div> </div> </section> <section id="block-privacyterms" class="block block-block-content block-block-contenta203b8bd-80ef-4982-bf6e-784dd7b44120 clearfix"> <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><ul class="menu menu--footer-submenu nav" id="terms-nav"> <li><a href="https://slashdotmedia.com/privacy-statement/" rel="nofollow" target="_blank">PRIVACY POLICY</a></li> <li><a href="https://slashdotmedia.com/terms-of-use/" rel="nofollow" target="_blank">TERMS OF SERVICE</a></li> <li><a href="/sponsors">ADVERTISE</a></li> </ul></div> </section> </div> </div> <div class="col-md-4 col-sm-8 footer-middle"> <div class="region region-footer-middle"> <nav role="navigation" aria-labelledby="block-footermenucolumn2-menu" id="block-footermenucolumn2"> <h2 class="visually-hidden" id="block-footermenucolumn2-menu">Footer Menu Column 2</h2> <ul class="menu menu--footer-menu-column-2 nav"> <li class="first"> <a href="/content/masthead" data-drupal-link-system-path="node/1007727">Masthead</a> </li> <li> <a href="/author" data-drupal-link-system-path="node/1009249">Authors</a> </li> <li class="last"> <a href="/form/contact" data-drupal-link-system-path="webform/contact">Contact Us</a> </li> </ul> </nav> <nav role="navigation" aria-labelledby="block-footermenucolumn3-menu" id="block-footermenucolumn3"> <h2 class="visually-hidden" id="block-footermenucolumn3-menu">Footer Menu Column 3</h2> <ul class="menu menu--footer-menu-column-3 nav"> <li class="first"> <a href="/rss_feeds" data-drupal-link-system-path="node/1000457">RSS Feeds</a> </li> <li class="last"> <a href="/aboutus" data-drupal-link-system-path="node/1000267">About Us</a> </li> </ul> </nav> </div> </div> </div> </footer> </div> </div> <script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","scriptPath":null,"pathPrefix":"","currentPath":"taxonomy\/term\/153","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"bootstrap":{"forms_has_error_value_toggle":1,"popover_enabled":1,"popover_animation":1,"popover_auto_close":1,"popover_container":"body","popover_content":"","popover_delay":"0","popover_html":0,"popover_placement":"right","popover_selector":"","popover_title":"","popover_trigger":"click"},"linuxjournal":{"disqus":{"origin":"https:\/\/www.linuxjournal.com","prettyUrl":"\/tag\/servers","fullUrl":"https:\/\/www.linuxjournal.com\/tag\/servers","embedUrl":"https:\/\/linuxjournal.disqus.com\/embed.js","shortname":"linuxjournal"}},"ajaxTrustedUrl":{"\/search\/node":true},"user":{"uid":0,"permissionsHash":"a7b3a803411eb9cbd5d7d374ffb326721ee8274ab5a665df8f38311e3aad858c"}}</script> <script src="/core/assets/vendor/jquery/jquery.min.js?v=3.6.3"></script> <script src="/core/assets/vendor/underscore/underscore-min.js?v=1.13.6"></script> <script src="/core/misc/polyfills/element.matches.js?v=9.5.9"></script> <script src="/core/misc/polyfills/object.assign.js?v=9.5.9"></script> <script src="/core/assets/vendor/once/once.min.js?v=1.0.1"></script> <script src="/core/assets/vendor/jquery-once/jquery.once.min.js?v=9.5.9"></script> <script src="/core/misc/drupalSettingsLoader.js?v=9.5.9"></script> <script src="/core/misc/drupal.js?v=9.5.9"></script> <script src="/core/misc/drupal.init.js?v=9.5.9"></script> <script src="/themes/contrib/bootstrap/js/drupal.bootstrap.js?smwnh4"></script> <script src="/themes/contrib/bootstrap/js/attributes.js?smwnh4"></script> <script src="/themes/contrib/bootstrap/js/theme.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/affix.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/alert.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/button.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/carousel.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/collapse.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/dropdown.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/modal.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/tooltip.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/popover.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/scrollspy.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/tab.js?smwnh4"></script> <script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/transition.js?smwnh4"></script> <script src="/themes/linuxjournal/js/lj-consentmanager.js?smwnh4"></script> <script src="/modules/contrib/webform/js/webform.behaviors.js?v=9.5.9"></script> <script src="/core/misc/jquery.once.bc.js?v=9.5.9"></script> <script src="/core/misc/states.js?v=9.5.9"></script> <script src="/themes/contrib/bootstrap/js/misc/states.js?smwnh4"></script> <script src="/modules/contrib/webform/js/webform.states.js?v=9.5.9"></script> <script src="/modules/contrib/webform/modules/webform_bootstrap/js/webform_bootstrap.states.js?v=9.5.9"></script> <script src="/themes/contrib/bootstrap/js/popover.js?smwnh4"></script> <!-- START EMBED --> <noscript><img src="https://api.b2c.com/api/noscript-448i7exgpyqpr9c144q.gif"></noscript> <!-- END EMBED --> <!-- Matomo --> <script type="text/javascript"> var _paq = _paq || []; function initPiwik() { _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://analytics.linuxjournal.com/"; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', '50']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); } </script> <noscript><p><img src="https://analytics.linuxjournal.com/piwik.php?idsite=50&amp;rec=1" style="border:0;" alt="" /></p></noscript> <!-- End Matomo Code --> <div class="modal-custom overlay-custom" id="ccpa-modal" style="margin-left: 0; display: none; max-width: 100%; width: 100%"> <div id="modal-content" class="modal-content"> <div class="modal-header" id="ccpa-modal-content-destination"></div> <span class="close" id="modal-close">&times;</span> </div> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10