{"id":721,"date":"2013-09-06T12:55:16","date_gmt":"2013-09-06T11:55:16","guid":{"rendered":"http:\/\/www.symablog.de\/blog\/?p=721"},"modified":"2013-09-09T06:45:51","modified_gmt":"2013-09-09T05:45:51","slug":"perl-programm-soll-nur-einmal-laufen-unix","status":"publish","type":"post","link":"https:\/\/www.symablog.de\/blog\/perl-programm-soll-nur-einmal-laufen-unix\/","title":{"rendered":"Perl &#8211; Programm soll nur einmal laufen (UNIX)"},"content":{"rendered":"<p>Manchmal muss man unbedingt sicherstellen, dass ein Programm nur einmal l\u00e4uft.<br \/>\nDazu guckt das Programm in die Prozessliste und stellt hoffentlich fest, das es selbst nur einmal l\u00e4uft.<br \/>\nGrundlage ist das Kommando pgrep. <\/p>\n<p><code><\/p>\n<pre>\ncmd> pgrep -f mein_script\n2120\n8094\n8119\n<\/pre>\n<p><\/code><\/p>\n<p>Es liefert die Prozess_ID&#8217;s &#8211; in diesem Beispiel l\u00e4uft &#8222;mein_script&#8220; drei mal.<br \/>\nIm Programm z\u00e4hlt man nur die Zeilen und bricht bei mehr als einer Zeile ab.<\/p>\n<p><code><\/p>\n<pre>\n$i=0;\nopen(CMD,\"pgrep -f mein_script | \") or die;\nwhile ( $line=&lt;CMD&gt; )  {\n  $i++;\n};\nclose(CMD);\nexit if ( $i > 1 );\n<\/pre>\n<p><\/code><br \/>\nHier weichen wir auf das externe Systemkommando pgrep aus und leiten es \u00fcber eine Pipe der Standardausgabe an unser Programm. Wer also nicht mit Perl arbeitet, kann gleiche Funktionalit\u00e4t auch mit der Shell oder allen anderen Programmiersprachen, die meist immer Zugriff auf externe Kommandos bieten, realisieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manchmal muss man unbedingt sicherstellen, dass ein Programm nur einmal l\u00e4uft. Dazu guckt das Programm in die Prozessliste und stellt hoffentlich fest, das es selbst nur einmal l\u00e4uft. Grundlage ist das Kommando pgrep. cmd> pgrep -f mein_script 2120 8094 8119 &hellip; <a class=\"more-link\" href=\"https:\/\/www.symablog.de\/blog\/perl-programm-soll-nur-einmal-laufen-unix\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[5,78],"tags":[194,110],"class_list":["post-721","post","type-post","status-publish","format-standard","hentry","category-perl","category-praxis","tag-perl","tag-pgrep"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p37Rzq-bD","_links":{"self":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts\/721"}],"collection":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/comments?post=721"}],"version-history":[{"count":7,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts\/721\/revisions"}],"predecessor-version":[{"id":739,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/posts\/721\/revisions\/739"}],"wp:attachment":[{"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/media?parent=721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/categories?post=721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.symablog.de\/blog\/wp-json\/wp\/v2\/tags?post=721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}