{"id":2215,"date":"2008-02-12T11:22:59","date_gmt":"2008-02-12T09:22:59","guid":{"rendered":"http:\/\/mummila.net\/vuorovaikutus\/2008\/02\/12\/cronin-suorittama-komentojonotiedosto-ei-toimi\/"},"modified":"2008-02-12T11:22:59","modified_gmt":"2008-02-12T09:22:59","slug":"cronin-suorittama-komentojonotiedosto-ei-toimi","status":"publish","type":"post","link":"https:\/\/mummila.net\/nuudelisoppa\/2008\/02\/12\/cronin-suorittama-komentojonotiedosto-ei-toimi\/","title":{"rendered":"[Ratkaisu] Cronin suorittama komentojonotiedosto ei toimi"},"content":{"rendered":"<dl>\n<dt>L\u00e4ht\u00f6kohta<\/dt>\n<dd>Olen luonut komentojonotiedoston <code>komentojono1<\/code>, joka kutsuu komentojonotiedostoa <code>komentojono2<\/code> seuraavanlaisella rivill\u00e4:<\/p>\n<blockquote>\n<pre><code>komentojono2 parametri1 parametri2<\/code><\/pre>\n<\/blockquote>\n<p>   Olen tallentanut molemmat komentojonotiedostot kotihakemistoni alla olevaan <code>bin<\/code>-alihakemistoon. Bin-alihakemisto on m\u00e4\u00e4ritelty komentojenhakupolkujen (<code>PATH<\/code>-muuttuja) joukkoon komentoriviprofiilissani. Olen muuttanut molempien komentojonotiedostojen oikeuksia niin, ett\u00e4 molemmat toimivat komentorivilt\u00e4 suoritettuina.<br \/>\n   Olen lis\u00e4nnyt komentojono1:n <code>crontab<\/code>-tiedostooni siten, ett\u00e4 se suoritetaan kerran minuutissa:<\/p>\n<blockquote>\n<pre><code>* * * * * \/home\/jani\/bin\/komentojono1<\/code><\/pre>\n<\/blockquote>\n<\/dd>\n<dt>Ongelma<\/dt>\n<dd>Kerran minuutissa automaattisesti suoritettuna komentojono1 ei toimi odottamallani tavalla, niin kuin se toimii komentorivilt\u00e4 suoritettuna.<\/dd>\n<dt>Ongelman syy<\/dt>\n<dd>Olen kutsunut komentojono1:ss\u00e4 komentojono2:ta ilman t\u00e4ytt\u00e4 hakemistopolkua sen edess\u00e4. Kun <code>cron<\/code> suorittaa komentojono1:n, se ei lue komentoriviprofiiliani sit\u00e4 ennen, eik\u00e4 siksi tied\u00e4 etsi\u00e4 komentojono2:ta kotihakemistoni alla olevasta bin-hakemistosta.<\/dd>\n<dt>Ratkaisu<\/dt>\n<dd>Muutan komentojono1:t\u00e4 niin, ett\u00e4 komentojono2:n kutsu tehd\u00e4\u00e4n k\u00e4ytt\u00e4m\u00e4ll\u00e4 t\u00e4ytt\u00e4 hakemistopolkua itse tiedoston nimen edess\u00e4:<\/p>\n<blockquote>\n<pre><code>\/home\/jani\/bin\/komentojono2 parametri1 parametri2<\/code><\/pre>\n<\/blockquote>\n<p>   T\u00e4m\u00e4n j\u00e4lkeen komentojono1:n automaattinen suoritus toimii tarkoittamallani tavalla.<\/dd>\n<dt>Huomautuksia<\/dt>\n<dd>\n<ul>\n<li>Yleisesti ottaen cronin suoritus poikkeaa vuorovaikutteisesta komentorivisuorituksesta siksi, ett\u00e4 Ubuntussa k\u00e4ytett\u00e4vien vuorovaikutteisten komentorivien tulkkina toimii <code>Bash<\/code>, ja cron taas puolestaan k\u00e4ytt\u00e4\u00e4 <code>\/bin\/sh<\/code> -komentoa, joka on symbolinen linkki <code>dash<\/code>-tulkkiin. Kun cron ajaa dashin ei-vuorovaikutteisena, se ei lue mit\u00e4\u00e4n profiilitiedostoja, ja siten n\u00e4m\u00e4 kaksi ymp\u00e4rist\u00f6\u00e4 (crontab ja vuorovaikutteinen komentorivitulkkisovellus kuten <code>P\u00e4\u00e4te<\/code>) voivat poiketa toisistaan huomattavastikin.<\/li>\n<li>Pitemm\u00e4n p\u00e4\u00e4lle t\u00e4ss\u00e4 kuvattua elegantimpi ratkaisu olisi luultavasti luoda komentojonotiedosto <code>cron-suoritus<\/code>, joka ottaa parametrin\u00e4 komentojonotiedoston parametreineen. Cron-suoritus lukisi komentoriviprofiilini ja lis\u00e4ksi selvitt\u00e4isi <a href=\"http:\/\/mummila.net\/vuorovaikutus\/2008\/02\/11\/cronin-suorittama-rhythmbox-client-print-playing-format-ei-toimi\/\"><code>DBUS_SESSION_BUS_ADDRESS<\/code> -muuttujan<\/a> arvon ennen kuin suorittaisi sille komentorivill\u00e4 annetun komentojonotiedoston parametreineen.\n<p>    Sen j\u00e4lkeen lis\u00e4isin <code>\/home\/jani\/bin\/cron-suoritus<\/code> -komentojonon aina varsinaisen komentojonotiedoston ja sen parametrien eteen aina, kun haluaisin suorittaa komentojonotiedoston crontabin kautta automaattisesti. Silloin crontabin suorittamien komentojonotiedostojen ajo muistuttaisi enemm\u00e4n niiden suorittamista komentorivilt\u00e4 ilman, ett\u00e4 jokaiseen komentojonotiedostoon t\u00e4ytyisi tehd\u00e4 crontabista ajamisen huomioonottavia tarkennuksia ja erityisehtoja.<\/p>\n<p>    Koska cron-suoritus lukisi komentoriviprofiilini ennen sille annetun komentojonon suorittamista, ei t\u00e4m\u00e4n komentojonon eteen tarvitsisi crontabissa lis\u00e4t\u00e4 t\u00e4ytt\u00e4 hakemistopolkua:<\/p>\n<blockquote>\n<pre><code>* * * * * \/home\/jani\/bin\/cron-suoritus komentojono parametri<\/code><\/pre>\n<\/blockquote>\n<\/li>\n<\/ul>\n<\/dd>\n<\/dl>\n","protected":false},"excerpt":{"rendered":"<p>Cronin suorittama komentojono ei toimi niin kuin se toimii komentorivilt\u00e4 suoritettuna. Ratkaisu on lis\u00e4t\u00e4 komentojonossa kutsumani toisen komentojonon eteen sen t\u00e4ysi polku.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[3361],"class_list":["post-2215","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-cron"],"_links":{"self":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts\/2215","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/comments?post=2215"}],"version-history":[{"count":0,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/posts\/2215\/revisions"}],"wp:attachment":[{"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/media?parent=2215"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/categories?post=2215"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mummila.net\/nuudelisoppa\/wp-json\/wp\/v2\/tags?post=2215"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}