- Lähtökohta
- Olen ladannut 12.2.2008 ilmestyneen jakson Rocketboom -ohjelmasta (37,7 Mt:n videotiedosto).
Synaptic-pakettienhallinnassatotem,totem-gstreamerjagstreamer0.10-ffmpegon asennettu. - Ongelma
- Kun avaan videotiedoston
Totem-elokuvasoittimellaja käynnistän sen toiston, ääni kuulostaa samalta kuin äänilevytallenteen toisto kuulostaa silloin, kun levy pyörii hieman liian hitaasti: ääni on matalampi kuin sen pitäisi olla. Muutaman sekunnin välein ääni myös hyppää yli lyhyen matkaa. Haluan, että ääni toistuu tarkoitetun korkuisena eikä hyppelehdi. - Ongelman syy
- Äänen mataluus johtuu siitä, että ääniraita, jonka oikea näytteenottotaajuus on 48000 Hz, soitetaan Totemissa ikään kuin sen taajuus olisi 44100 Hz.
Hyppelehtiminen johtuu luultavasti siitä, että ääni synkronoidaan kuvan kanssa muutaman sekunnin välein, ja liian hitaasti pyörivä ääni jää muutamassa sekunnissa selvästi jälkeen normaalinopeudella pyörivästä kuvasta.
- Ratkaisu
- Ratkaisua ei vielä ole, mutta ongelman voi kiertää Rocketboomin kohdalla tilaamalla videot WMV-muodossa. WMV-muotoisina Rocketboom-videot vaikuttaisivat toimivan niin kuin pitääkin.
Lisäksi ohjelmasta on tarjolla HD-laatuinen syöte. HD-laatuisten videoiden ääni toimii oikein, mutta omalla koneellani kuva nykii hieman, arvatenkin riittämättömän suoritintehon takia.
- Huomautus
- Olen ladannut samana päivänä ilmestyneen jakson Meet the GIMP -ohjelmasta (22,4 Mt:n videotiedosto). Kun toistan Meet the GIMP -videon Totemilla, se pyörii oikein. Komento
mplayer -frames 1 -ao null -vo null -identify meetthegimp032.mp4kertoo videosta seuraavaa:Quicktime/MOV file format detected. ID_VIDEO_ID=0 ID_AUDIO_ID=1 VIDEO: [mp4v] 640x480 24bpp 25.000 fps 0.0 kbps ( 0.0 kbyte/s) ID_FILENAME=meetthegimp032.mp4 ID_DEMUXER=mov ID_VIDEO_FORMAT=mp4v ID_VIDEO_BITRATE=0 ID_VIDEO_WIDTH=640 ID_VIDEO_HEIGHT=480 ID_VIDEO_FPS=25.000 ID_VIDEO_ASPECT=0.0000 ID_AUDIO_FORMAT=mp4a ID_AUDIO_BITRATE=0 ID_AUDIO_RATE=44100 ID_AUDIO_NCH=2 ID_LENGTH=1199.88 ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4) ========================================================================== ID_VIDEO_CODEC=ffodivx ========================================================================== Forced audio codec: mad Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding) FAAD: compressed input bitrate missing, assuming 128kbit/s! AUDIO: 44100 Hz, 2 ch, s16le, 128.0 kbit/9.07% (ratio: 16000->176400) ID_AUDIO_BITRATE=128000 ID_AUDIO_RATE=44100 ID_AUDIO_NCH=2 Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio) decoder) ========================================================================== AO: [null] 44100Hz 2ch s16le (2 bytes per sample) ID_AUDIO_CODEC=faad Starting playback... VDec: vo config request - 640 x 480 (preferred colorspace: Planar YV12) VDec: using Planar YV12 as output csp (no 0) Movie-Aspect is 1.33:1 - prescaling to correct movie aspect. ID_VIDEO_ASPECT=1.3333 VO: [null] 640x480 => 640x480 Planar YV12 A: 0.0 V: 0.0 A-V: 0.030 ct: 0.000 1/ 1 ??% ??% ??,?% 0 0Komento
mplayer -frames 1 -ao null -vo null -identify rb_08_feb_12.movkertoo Rocketboom-videosta seuraavaa:ISO: File Type Major Brand: Original QuickTime Quicktime/MOV file format detected. ID_AUDIO_ID=0 ID_VIDEO_ID=1 VIDEO: [mp4v] 480x270 24bpp 23.976 fps 0.0 kbps ( 0.0 kbyte/s) ID_FILENAME=rb_08_feb_12.mov ID_DEMUXER=mov ID_VIDEO_FORMAT=mp4v ID_VIDEO_BITRATE=0 ID_VIDEO_WIDTH=480 ID_VIDEO_HEIGHT=270 ID_VIDEO_FPS=23.976 ID_VIDEO_ASPECT=0.0000 ID_AUDIO_FORMAT=mp4a ID_AUDIO_BITRATE=64000 ID_AUDIO_RATE=48000 ID_AUDIO_NCH=1 ID_LENGTH=297.92 ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Selected video codec: [ffodivx] vfm: ffmpeg (FFmpeg MPEG-4) ========================================================================== ID_VIDEO_CODEC=ffodivx ========================================================================== Forced audio codec: mad Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding) AUDIO: 48000 Hz, 2 ch, s16le, 64.0 kbit/4.17% (ratio: 8000->192000) ID_AUDIO_BITRATE=64000 ID_AUDIO_RATE=48000 ID_AUDIO_NCH=2 Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio) decoder) ========================================================================== AO: [null] 48000Hz 2ch s16le (2 bytes per sample) ID_AUDIO_CODEC=faad Starting playback... VDec: vo config request - 480 x 270 (preferred colorspace: Planar YV12) VDec: using Planar YV12 as output csp (no 0) Movie-Aspect is 1.78:1 - prescaling to correct movie aspect. ID_VIDEO_ASPECT=1.7778 VO: [null] 480x270 => 480x270 Planar YV12 A: 0.1 V: 0.0 A-V: 0.021 ct: 0.002 2/ 2 ??% ??% ??,?% 0 0Väärän näytetaajuuden käyttö Totemissa käy ilmi, kun videon pyöriessä ohjelmassa valitsen
Elokuva-valikostaOminaisuudet:Sivupalkkiinavautuvien tietojenÄäni-osiossaNäytetaajuudeksiilmoitetaan44100 Hz.Mplayer, jonka mukaan siis ääniraidan taajuus on 48000 Hz, toistaa ääniraidan oikein.
Category: Uncategorized
-
Joidenkin QuickTime-videoiden ääni pätkii GStreamerilla (Totemilla) toistettaessa
-
Miro can't play this file
- Lähtökohta
- Olen lisännyt Participatory Culture Foundationin pakettivaraston
Synaptic-pakettienhallinnanpakettivarastoihin ja asentanut sieltä uusimmanMiro Internet TV:n. Olen asettanut MironAsetukset-ikkunanToisto-välilehdeltä kohdanToista videot peräkkäinvalituksi.
Olen lisännyt/apps/miro/renderers-asetusavaimen listaan arvongstrenderer, eli Miro toistaa nyt videot käyttäen samoja ohjelmistorutiineja kuinTotem-elokuvasoitin.
Olen tilannut Miroon kanavia, ja Miro on ladannut kanavilta uusia videoita. Otan Mirossa esille uusien, ladattujen videoiden näkymän ja aloitan videoiden pyörityksen käynnistämällä listan ensimmäisen videon. - Ongelma
- Videon vaihtuessa, eli edellisen videon loputtua Miro ilmoittaa uuden videon kohdalla
Miro can't play this file. You may be able to open it with a different program.Näin ei tapahdu joka kerta vaan (näennäisen) satunnaisesti. Haluan, että Miro toistaa videon virheilmoituksen antamisen sijasta. - Ongelman syy
- Ei vielä tiedossa.
- Ratkaisu
- Ratkaisua ei vielä ole, mutta ongelman voi kiertää kahdella eri tavalla.
- Palaan Mirossa uusien videoiden näkymään ja aloitan vidoiden pyörityksen tällä kertaa käynnistämällä ensimmäisenä äsken ongelmaan liittyneen videon. Se pyörii nyt normaalisti.
- Virheilmoituksen yhteydessä on
REVEAL FILE-linkki, jonka valittuani Miro avaa videotiedostokansionäkymän. Jos haen kansionäkymästä Mirossa ongelmaan liittyneen videon, avaan ja pyöritän sen Totem-elokuvasoittimella, se toimii normaalisti.
- Huomautuksia
-
- Ongelma ilmeni edellisen Miron päivityksen jälkeen. Päivitin silloin
miro– jamiro-data-paketit versiosta1.1.1-3versioon1.1.2-0pcf1. Ennen päivitystä ongelmaa ei ollut. - Miron foorumeilta löysin yhden tätä virheilmoitusta käsitelleen viestisäikeen. Siinä käyttäjä oli onnistunut ratkaisemaan ongelman asentamalla Ubuntun päivityksiä. Omassa järjestelmässäni ongelman ilmenemisen jälkeen ilmestyneiden päivityksien asentaminen ei ole vaikuttanut ongelmaan.
- Ongelma ilmeni edellisen Miron päivityksen jälkeen. Päivitin silloin
-
[Ratkaisu] Subwoofer ei toimi ilman Duplicate Frontin valitsemista
- Lähtökohta
- Asennuksen jälkeen tietokoneeni äänet toimivat, eli esimerkiksi sisäänkirjautumisen yhteydessä soiva äänitehoste kuulu etukaiuttimista. Tietokoneeni, Shuttle SN45G jossa on nForce2-piirisarjalla varustettu FN45-emolevy, tarjoaa surround-äänet eli äänikanavat kahdelle etukaiuttimelle, yhdelle keskikaiuttimelle, kahdelle surround-kaiuttimelle ja lisäksi LFE-kanavan subwooferille. Olen kytkenyt 5.1 -kaiuttimiston tietokoneeseen sen takapaneelissa olevien ääniliittimien kautta ja käynnistänyt tietokoneen lisäksi kaiuttimiston sen virtakatkaisijasta. Olen kirjautunut sisään työpöydälleni. Olen avannut
Rytmilaatikko-musiikkisoittimenja pannut musiikkikappaleen soimaan. - Ongelma
- Subwooferista ei kuulu ääntä.
Jos merkitsenÄänenvoimakkuuden hallinnassa,Kytkimet-välilehdelläDuplicate Front-kohdan valituksi, subwooferista kuuluu ääntä, mutta silloin etukanavien ääni toistetaan etukaiuttimien lisäksi takakaiuttimista. Haluan, että LFE-kanava toimii niin, että etukanavien ääni toistetaan ainoastaan etukaiuttimissa vaikka LFE-kanava toistetaankin subwooferissa. - Ongelman syy
- Asetukset Äänenvoimakkuuden hallinnassa ovat pielessä.
- Ratkaisu
- Otan Äänenvoimakkuuden hallinnassa
Muokkaa-valikosta esilleAsetukset, ja otan listalta valituksi merkitsemällä pääikkunassa esiin seuraavat raidat:PääPCMSurroundSurround Jack ModeCenterLFELinjatuloCDMikrofoniMikrofoni KaappausMic Boost (+20dB)PC-kaiutinKaappausMixChannel Mode- Duplicate Front
Exchange Center/LFESwap Surround Slot
Suljen asetusikkunan.
Äänenvoimakkuuden hallinnan
Toisto-välilehdellä asetan liukusäätimien alapuolella olevia kaiuttimenkuvia käyttämällä PC-kaiuttimen mykistetyksi (jonka merkkinä kaiuttimen päälle tulee punainen ruksi) ja muut pois mykistystilasta (jolloin kaiuttimen päällä ei ole punaista ruksia). Varmistan lisäksi, että Linjatuloa ja PC-kaiutinta lukuunottamatta kaikki välilehden liukusäätimet on asetettu maksimiinsa (yläasentoon).Nauhoitetaan-välilehdellä varmistan, että Kaappaus ei ole mykistetty kaiuttimen eikä mikrofonin osalta, ja säädän liukusäätimet maksimiinsa.Kytkimet-välilehdellä merkitsen valituiksi kohdat Mikrofoni Kaapppaus, Mic Boost (+20dB), ja Exchange Center/LFE. Valitsemattomiksi jätän kohdat Mix, Duplicate Front ja Swap Surround Slot.
Asetukset-välilehdellä valitsen Surround Jack Mode -valitsimen alasvetovalikosta kohdanIndependent. Channel Mode -valitsimen alasvetovalikosta valitsen kohdan6ch.Suljen Äänenvoimakkuuden hallinnan. Tämän jälkeen LFE-kanavan toisto subwooferilla toimii ilman, että etukanavien signaali toistettaisiin takakaiuttimista etukaiuttimien lisäksi.
- Huomautus
- Äänikanavia voi testata komennolla
speaker-test -Dplug:surround51 -c6 -l1 -twav, joka toistaa ääninäytteitä kultakin kanavalta erikseen, vuoron perään.
-
[Ratkaisu] Speaker-test ilmoittaa äänentoiston avausvirheestä
- Lähtökohta
- Olen kirjautunut sisään työpöydälleni, käynnistänyt
Rytmilaatikko-musiikkisoittimenja pannut sen soittamaan podcast-jaksoa. Olen keskeyttänyt jakson soiton ennen sen loppumista jatkaakseni kuuntelua myöhemmin. Olen avannutPäätteen. Haluan testata äänentoistolaitteistoni toimintaa, joten komennan päätteestäspeaker-test -Dplug:surround51 -c6 -l1 -twav. - Ongelma
- Kaiutintestisovellus
speaker-testilmoittaa seuraavaa:Äänentoistolaite on plug:surround51 Stream parameters are 48000Hz, S16_LE, 6 channels WAV tiedosto(t) Äänentoiston avausvirhe: -16, Device or resource busy Äänentoiston avausvirhe: -16, Device or resource busy Äänentoiston avausvirhe: -16, Device or resource busyÄänentoistolaitteen avausvirheestä ilmoittava rivi tulostuu yhä uudelleen kunnes keskeytän speaker-testin ajon näppäinyhdistelmällä
Control + C. Haluan, että virheilmoituksen sijasta speaker-test toistaa kaiuttimien testaamiseksi ääninäytteitä eri kanavilta. - Ongelman syy
- Speaker-test ei kykene jakamaan äänentoistolaitteistoa toisen ohjelman kanssa, ja Rytmilaatikko on varannut äänentoistolaitteiston käyttöönsä.
- Ratkaisu
- Suljen Rytmilaatikon. Sen jälkeen komennan speaker-testiä uudestaan, jolloin se toimii haluamallani tavalla.
-
Rytmilaatikko ei muista viimeksi soitettua kappaletta
- Lähtökohta
- Olen käynnistänyt
Rytmilaatikko-musiikkisoittimenja valinnutSivupaneelistaPodcastit-näkymän. Olen soittanut aiemmin lataamaani podcast-jaksoa ja pysäyttänyt sen sitten ennen jakson loppumista. Suljen Rytmilaatikon. Myöhemmin käynnistän Rytmilaatikon uudestaan, sillä haluan kuunnella aiemmin aloittamani podcast-jakson loppuun. - Ongelma
- Haluan, että Rytmilaatikko palaa käynnistyessään takaisin näkymään, jossa olin. Haluan, että Rytmilaatikko valitsee valmiiksi viimeksi kesken jättämäni podcast-jakson. Haluan, että Rytmilaatikko muistaa podcast-jaksosta kohdan, johon edellisellä kuuntelukerrallani jäin. Käynnistyessään Rytmilaatikko on kuitenkin avannut
Musiikki-näkymän. Kun menen takaisin Podcastit-näkymään, viimeksi kesken jättämäni podcast-jakso ei ole valmiiksi valittuna puhumattakaan, että Rytmilaatikko muistaisi jaksosta kohdan, jossa kuunteluni viimeksi keskeytyi. - Ongelman syy
- Rytmilaatikossa ei vielä ole haluamiani ominaisuuksia.
- Ratkaisu
- Ei vielä tiedossa.
-
[Ratkaisu] Web-kamerakuvan lähettäminen www-palvelimella näytettäväksi
- Lähtökohta
- Olen kytkenyt web-kameran tietokoneeseeni. Kameralle on ajurit, ja se toimii, eli pystyn katsomaan kameran ottamaa kuvaa paikallisesti esimerkiksi
xawtv:llä.
Minulla on käyttäjätunnus ja salasana ftp-palvelimelle, ja niitä käyttäen pystyn päivittämään web-sivuiltani maailmalle näkyvää sisältöä. Palvelimella on web-sivu, joka näyttää palvelintilaani tallennetunwebcam.jpg-nimisen tiedoston, ja päivittää, eli lataa kuvan automaattisesti uudestaan kerran minuutissa.
Omalla koneellani, kotihakemistossani onbin-alihakemisto ja se on määritelty komentojenhakupolkujen (PATH-muuttuja) joukkoon komentoriviprofiilissani. Olen tallentanut bin-hakemistoonrhythmbox-print-playing-komentojonotiedoston ja todennut sen toimivan.
Pakettienhallinnassaftp,came,imagemagickjarhythmboxovat asennettuna. - Ongelma
- Haluan, että tietokoneeni tallentaa web-kamerani näkymän kuvatiedostoon, lisää tiedostoon tallennetun kuvan päälle tekstinä kuvanottohetken ja lisäksi tiedot samalla hetkellä
Rytmilaatikko-musiikkisoittimessasoivasta kappaleesta, ja lähettää sen jälkeen kuvasta kopion web-palvelimelle. Haluan, että näin tapahtuu automaattisesti kerran minuutissa sen jälkeen, kun olen antanut käskyn, ja aina siihen saakka, että annan kieltävän käskyn. - Ratkaisu
-
- Luon komennolla kotihakemistooni
.camE-alihakemiston. Hakemiston luomiseen käytänmkdir ~/.camE-komentoa. Tähän hakemistoon tallennan jatkossa osan tarvittavista tiedostoista. - Luon
camE:lle kuvan ottamiseen liittyvät parametrit määrittelevän asetustiedoston.
Avaan komennollagedit ~/.camE/camErcasetustiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:[ftp] do = 0 [grab] archive_shot_every = 0 logfile = /home/jani/.camE/camElog device = /dev/video0 temp_file = /home/jani/.camE/webcam.png blockfile = /home/jani/.camE/BLOCK # lag reduction, takes 5 shots, discards # the first 4, thus clearing mmap buffers lag_reduce = 5 width = 320 height = 240 - Luon kuvan web-palvelimelle lataamista varten ftp-asetustiedoston.
- Avaan komennolla
gedit ~/.netrcasetustiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
machine ftp.palvelin.com login tunnukseni password salasanani macdef putcampic prompt off lcd /home/jani/.camE cd kuvakansio bin put webcam.jpg quit - Muutan komennolla
chmod 600 ~/.netrcasetustiedoston oikeuksia niin, että kukaan muu kuin minä ei voi sitä avata, sillä tiedosto sisältää ftp-palvelimen salasanani salaamattomassa muodossa.
- Avaan komennolla
- Luon komentojonotiedoston kuvan päälle tulevien tekstien latomiseen.
- Avaan komennolla
gedit ~/bin/camprintkomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh # kirjasimen voi säätää tästä. FONT="-font Helvetica -pointsize 10" # ladotaan komentorivillä annetut tekstit. # ensimmäinen parametri ladotaan ylälaitaan, # toinen alalaitaan. convert webcam.png \ -gravity north -stroke '#000C' -strokewidth -2 \ $FONT -annotate 0 "$1" \ -stroke none $FONT -fill white -annotate 0 "$1" \ -gravity south -stroke '#000C' -strokewidth -2 \ $FONT -annotate 0 "$2" \ -stroke none $FONT -fill white -annotate 0 "$2" \ -quality 80 webcam.jpgLataa
camprint(498 tavun komentojonotiedosto) - Muutan komennolla
chmod +x ~/bin/camprintkomentojonotiedoston oikeuksia niin, että siitä tulee suoritettava.
- Avaan komennolla
- Luon komentojonotiedoston, joka kerää toiminnot yhteen. Se ottaa kameralla kuvan, latoo kuvan päälle tekstit ja lataa kuvatiedoston sen jälkeen web-palvelimelle.
- Avaan komennolla
gedit ~/.camE/camEshkomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh cd /home/jani/.camE/ if [ -f BLOCK ] then exit fi # napataan kuva. camE -s -c camErc # parhaillaan soivan kappaleen esittely. NP="`/home/jani/bin/rhythmbox-print-playing`" # kuvanottohetki. DT=$(date -d "`stat -c %y webcam.png | cut -d. -f1`" | \ cut -d+ -f1 | sed 's/[ ]*$//') # ladotaan tekstit. /home/jani/bin/camprint "$NP" "$DT" # jos kuvan luominen on onnistunut, # siirretään se palvelimelle. if [ -f webcam.jpg ] then # tämä vaatii toimivan, putcampic-nimisen # makron ~/.netrc:ssä. echo "\$ putcampic" | ftp mummila.atspace.com rm webcam.jpg webcam.png fi - Muutan komennolla
chmod +x ~/.camE/camEshkomentojonotiedoston oikeuksia niin, että siitä tulee suoritettava.
- Avaan komennolla
- Luon komentojonotiedostot kamerakuvan lähetyksen käynnistystä ja lopettamista varten.
- Avaan komennolla
gedit ~/bin/camonkäynnistyskomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh rm -f /home/jani/.camE/BLOCK - Avaan komennolla
gedit ~/bin/camofflopetuskomentojonotiedoston muokattavaksi. Tiedoston sisältö on seuraavassa:
#!/bin/sh touch /home/jani/.camE/BLOCK - Muutan molempien komentojonotiedostojen oikeuksia komennolla
chmod +x ~/bin/camon ; chmod +x ~/bin/camoffniin, että niistä tulee suoritettavia. - Asetan lopuksi komennolla
camoffkuvien lähettämisenpois päältä
-tilaan.
- Avaan komennolla
- Luon
crontab-tiedostoon rivin, joka suorittaa tehtävät kerran minuutissa aina silloin kun olen niin määrännyt.
Avaan komennollacrontab -ecrontab-tiedostoni muokattavaksi. Lisään tiedostoon seuraavan rivin:* * * * * /home/jani/.camE/camEsh
Kaikkien näiden toimenpiteiden jälkeen kuvan ottaminen ja web-palvelimelle päivittäminen tapahtuu kerran minuutissa sen jälkeen, kun olen komentanut
camon, ja jatkuu kunnes komennancamoff. - Luon komennolla kotihakemistooni
- Huomautuksia
-
- Tämän ratkaisun lähtökohdissa mainittu webkamerakuvaa näyttävä sivuni löytyy webistä.
- CamE osaa itsekin latoa tekstiä ottamansa kuvan päälle ja kopioida kuvan palvelimelle ftp:tä käyttäen. Jälkikäsittelymahdollisuuksia on kuitenkin enemmän, kun jälkikäsittelyyn käytetään
ImageMagickia. Tässä ratkaisussa käytin melkein kaikkein yksinkertaisinta tekstinladontatapaa, joka ei juurikaan poikkea siitä mihin camE pystyisi. ImageMagickin mahdollistamia erilaisia hienoja ladontatapoja on esitelty Examples of ImageMagick Usage -oppaassa. - Komennolla
camE -s -c ~/.camE/camErcvoi testata CamE:n asetustiedoston,~/.camE/camErc:n toimivuutta. Komennon ajamisen jälkeen asetustiedostossa olevantemp_file-parametrin määrittelemässä paikassa pitäisi olla web-kameran ottama kuva. - Komennolla
echo "\$ putcampic" | ftp ftp.palvelin.comvoi testata ftp-asetustiedoston,~/.netrc:n toimivuutta sen jälkeen, kun~/.camE-hakemistossa on webcam.jpg -niminen tiedosto.
-
[Ratkaisu] Cronin suorittama komentojonotiedosto ei toimi
- Lähtökohta
- Olen luonut komentojonotiedoston
komentojono1, joka kutsuu komentojonotiedostoakomentojono2seuraavanlaisella rivillä:komentojono2 parametri1 parametri2Olen tallentanut molemmat komentojonotiedostot kotihakemistoni alla olevaan
bin-alihakemistoon. Bin-alihakemisto on määritelty komentojenhakupolkujen (PATH-muuttuja) joukkoon komentoriviprofiilissani. Olen muuttanut molempien komentojonotiedostojen oikeuksia niin, että molemmat toimivat komentoriviltä suoritettuina.
Olen lisännyt komentojono1:ncrontab-tiedostooni siten, että se suoritetaan kerran minuutissa:* * * * * /home/jani/bin/komentojono1 - Ongelma
- Kerran minuutissa automaattisesti suoritettuna komentojono1 ei toimi odottamallani tavalla, niin kuin se toimii komentoriviltä suoritettuna.
- Ongelman syy
- Olen kutsunut komentojono1:ssä komentojono2:ta ilman täyttä hakemistopolkua sen edessä. Kun
cronsuorittaa komentojono1:n, se ei lue komentoriviprofiiliani sitä ennen, eikä siksi tiedä etsiä komentojono2:ta kotihakemistoni alla olevasta bin-hakemistosta. - Ratkaisu
- Muutan komentojono1:tä niin, että komentojono2:n kutsu tehdään käyttämällä täyttä hakemistopolkua itse tiedoston nimen edessä:
/home/jani/bin/komentojono2 parametri1 parametri2Tämän jälkeen komentojono1:n automaattinen suoritus toimii tarkoittamallani tavalla.
- Huomautuksia
-
- Yleisesti ottaen cronin suoritus poikkeaa vuorovaikutteisesta komentorivisuorituksesta siksi, että Ubuntussa käytettävien vuorovaikutteisten komentorivien tulkkina toimii
Bash, ja cron taas puolestaan käyttää/bin/sh-komentoa, joka on symbolinen linkkidash-tulkkiin. Kun cron ajaa dashin ei-vuorovaikutteisena, se ei lue mitään profiilitiedostoja, ja siten nämä kaksi ympäristöä (crontab ja vuorovaikutteinen komentorivitulkkisovellus kutenPääte) voivat poiketa toisistaan huomattavastikin. - Pitemmän päälle tässä kuvattua elegantimpi ratkaisu olisi luultavasti luoda komentojonotiedosto
cron-suoritus, joka ottaa parametrinä komentojonotiedoston parametreineen. Cron-suoritus lukisi komentoriviprofiilini ja lisäksi selvittäisiDBUS_SESSION_BUS_ADDRESS-muuttujan arvon ennen kuin suorittaisi sille komentorivillä annetun komentojonotiedoston parametreineen.Sen jälkeen lisäisin
/home/jani/bin/cron-suoritus-komentojonon aina varsinaisen komentojonotiedoston ja sen parametrien eteen aina, kun haluaisin suorittaa komentojonotiedoston crontabin kautta automaattisesti. Silloin crontabin suorittamien komentojonotiedostojen ajo muistuttaisi enemmän niiden suorittamista komentoriviltä ilman, että jokaiseen komentojonotiedostoon täytyisi tehdä crontabista ajamisen huomioonottavia tarkennuksia ja erityisehtoja.Koska cron-suoritus lukisi komentoriviprofiilini ennen sille annetun komentojonon suorittamista, ei tämän komentojonon eteen tarvitsisi crontabissa lisätä täyttä hakemistopolkua:
* * * * * /home/jani/bin/cron-suoritus komentojono parametri
- Yleisesti ottaen cronin suoritus poikkeaa vuorovaikutteisesta komentorivisuorituksesta siksi, että Ubuntussa käytettävien vuorovaikutteisten komentorivien tulkkina toimii