Fant ut her om dagen at av og til så er det ikke greit når man kjører web-server eller andre servere på linux-maskina. En ting som er et "must" er "BACKUP". Veldig viktig. Jeg kjører Opensuse 12.3 for tiden, og fant ut at letteste måten å kjøre en backup på er å bruke "crontab". Eller...som i Opensuse 12.3 så har man kataloger i /etc/ som heter "cron.daily", "cron.weekly"...osv. Her kan man legge inn skriptet sitt eller legge inn en link til skriptet sitt. Veldig nyttig. Kommandoen "crontab -e" er også veldig nyttig. Hvis du har konfigurert din favoritt editor. Jeg personlig har aldri lagt meg inn i vim eller liknende editorer. Mange år siden brukte jeg "pico". Denne editoren er blitt erstattet av "nano". Har med videreutvikling å gjøre. Men de fungerer på samme måte. Veldig enkel å bruke. Rett fram. Men hvordan skal man få denne editoren til å bli din default editor? Hver bruker har en fil i sin hjemme-katalog som heter ".profile". Her må man legge til ei linje som dette:

$EDITOR=nano

Man kan også sette denne variabelen i "/etc/environment"-fila. Men uten "dollar-tegnet"(EDITOR=nano). Hvis man har rettigheter til det vel og merke..uansett så bør du logge ut og logge inn igjen for at forandringene skal ta effekt.

Så hva er det som skjer når man kjører "crontab -e" kommandoen?

  1. crontab åpner din "default" editor som du har har valgt i fila ".profile". Du skriver linjen som inneholder hvilken tid skriptet skal kjøres. Hvordan man gjør dette skal ikke jeg legge meg inn i men en pekepinn er her.
  2. filen blir lagret på rettmessig plass av programmet crontab.
  3. les dine oppgaver ved å skrive "crontab -l".
  4. Konfigurer oppgaven/-e ved å skrive "crontab -e". Her kan du legge til flere linjer.

 

Nå har jeg gått gjennom 2 oppgaver. Den tredje oppgaven er å starte skript ved oppstart. Eller ved et eller annet "runlevel". I Opensuse er det et skrift som ligger i "/etc/init.d/" og som heter "after.local". Her kan man legge til nesten hva man vil etter det jeg har skjønt. Dette skriptet blir kjørt/sjekket under boot-tiden. Jeg feks. har et program som jeg vil skal starte opp ved runlevel=5. Som root editerer jeg fila "after.local". For å få startet skriptet mitt etter siste prosess i runlevel 5 skriver jeg dette:

### start itreed after runlevel 5 is reached...
### first check if the process is NOT running..then we can start the daemon
if [ "$RUNLEVEL"="5" ] ; then
        ps cax | grep itreed > /dev/null
        if [ $? -eq 1 ]; then
                /root/scripts/start_itreed
        fi
fi

Først sjekker skriptet om runlevel 5 er der og så sjekker den om prosessen "itreed" kjøres allerede. Hvis ikke...start den...

Veldig enkelt...så summa summarum:

  1. crontab
  2. $EDITOR i .profile
  3. after.local i /etc/init.d/

...............VELDIG NYTTIG......................

Å editere after.local fila hadde vært nyttig hvis den hadde blitt kjørt. Det viser seg at i Opensuse. 12.1-> og utover så brukes noe som heter systemd for å paralellkjøre oppstarts-skript. after-local er ikke med her, og blir dermed heller ikke kjørt, så da må man legge til denne fila"after.local" til oppstarten. Da er det noen steg man må gjøre:

  1. Skap en fil som heter: /usr/lib/systemd/system/after-local.service
  2. Editer fila og skriv inn dette:
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU General Public License as published by
    #  the Free Software Foundation; either version 2 of the License, or
    #  (at your option) any later version.
    
    [Unit]
    Description=/etc/init.d/after.local Compatibility
    ConditionFileIsExecutable=/etc/init.d/after.local
    
    [Service]
    Type=oneshot
    ExecStart=/etc/init.d/after.local
    TimeoutSec=0
    StandardOutput=tty
    RemainAfterExit=yes
    SysVStartPriority=99
    
    [Install]
    WantedBy=multi-user.target

     

  3. For å muliggjøre denne fila slik at den virkelig blir startet, skriv denne kommandoen:

    sudo systemctl enable /usr/lib/systemd/system/after-local.service

     

Dette ble litt mer å gjøre enn antatt....men greit nok. Det fungerer. Denne gangen har jeg testet det. Dvs gjort en "restart" og sett at det fungerer smiley.