{"id":2483,"date":"2025-10-30T08:56:38","date_gmt":"2025-10-30T07:56:38","guid":{"rendered":"https:\/\/alessandromasciadri.com\/?p=2483"},"modified":"2025-10-30T09:02:50","modified_gmt":"2025-10-30T08:02:50","slug":"come-creare-un-watchdog-per-cups","status":"publish","type":"post","link":"https:\/\/alessandromasciadri.com\/come-creare-un-watchdog-per-cups\/","title":{"rendered":"Come creare un watchdog per Cups"},"content":{"rendered":"\t\t<div data-akihiro-type=\"ama-post\" data-akihiro-id=\"2483\" class=\"akihiro akihiro-2483\" data-akihiro-post-type=\"post\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-f8d088d e-flex e-con-boxed e-con e-parent\" data-id=\"f8d088d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"akihiro-element akihiro-element-6a113d1 akihiro-widget akihiro-widget-text-editor\" data-id=\"6a113d1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In questo scenario ci troviamo su una macchina Linux in cui abbiamo bisogno di monitorare lo stato di Cups e, in caso di crash del servizio, riavviarlo.<\/p><p>Per raggiungere questo scopo si possono seguire vari approcci. In questo articolo ne illustriamo uno, che non \u00e8 il migliore, ma \u00e8 sufficientemente efficace. Seguiranno aggiornamenti in cui illustrer\u00f2 gli altri approcci.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-b607d32 akihiro-widget akihiro-widget-heading\" data-id=\"b607d32\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t<h3 class=\"akihiro-heading-title akihiro-size-default\">Metodo del loop infinito di controllo<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-5944604 akihiro-widget akihiro-widget-text-editor\" data-id=\"5944604\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Questo approccio \u00e8 piuttosto minimalista, ma con il quale si ottiene un comportamento simile ad un watchdog.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-5a467ee akihiro-widget akihiro-widget-code-highlight\" data-id=\"5a467ee\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-bash line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-bash\">\n\t\t\t\t\t<xmp>#!\/bin\/bash\n# \/usr\/local\/bin\/cups-watchdog-light.sh\nLOGFILE=\"\/var\/log\/cups-watchdog.log\"\nSLEEP=30\n\necho \"$(date '+%Y-%m-%d %H:%M:%S') - Watchdog avviato\" >> \"$LOGFILE\"\n\nwhile true; do\n    if ! pidof cupsd >\/dev\/null 2>&1; then\n        echo \"$(date '+%Y-%m-%d %H:%M:%S') - CUPS non attivo, riavvio...\" >> \"$LOGFILE\"\n        \/etc\/init.d\/cups restart >>\"$LOGFILE\" 2>&1\n    fi\n    sleep \"$SLEEP\"\ndone\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"akihiro-element akihiro-element-33d0ddd akihiro-widget akihiro-widget-text-editor\" data-id=\"33d0ddd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"akihiro-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Lo script \u00e8 semplice. Abbiamo:<\/p><ul><li>Loop infinito con uno sleep parametrizzabile impostato a 30 secondi<\/li><li>Controllo dell&#8217;esistenza di un processo cupsd<\/li><li>In caso di assenza di un processo cupsd, tracciatura nel log e riavvio del servizio<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>In questo scenario ci troviamo su una macchina Linux in cui abbiamo bisogno di monitorare lo stato di Cups e, in caso di crash del servizio, riavviarlo. Per raggiungere questo scopo si possono seguire vari approcci. In questo articolo ne illustriamo uno, che non \u00e8 il migliore, ma \u00e8 sufficientemente efficace. Seguiranno aggiornamenti in cui [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[61,20],"class_list":["post-2483","post","type-post","status-publish","format-standard","hentry","category-sistemistica","tag-cups","tag-linux"],"_links":{"self":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/2483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/comments?post=2483"}],"version-history":[{"count":4,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/2483\/revisions"}],"predecessor-version":[{"id":2487,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/posts\/2483\/revisions\/2487"}],"wp:attachment":[{"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/media?parent=2483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/categories?post=2483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alessandromasciadri.com\/ama-json\/wp\/v2\/tags?post=2483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}