www.mikajik.info

[ ↓ navigace ↓ ]

Cron - časování skriptů

Dneska jsem se asi 2 hodiny pral s časováním skriptů v Linuxu. Plán byl aby se mi přesně v zadaný čas spouštěli PHP skripty. Hledal jsem na internetu, ale na českých webech jsem toho moc nenašel. Proto bych se s Vámi chtěl podělit o mé řešení.

Crontab obsluhuje linuxový démon crond. To jestli tento démon běží zjistíte příkazem:

ps aux | grep cron

Pokud Vám tento příkaz vypíše podobný řádek, znamená to, že démon běží.

6134    ?    Ss    0:00    /usr/sbin/cron

Nyní zbývá otevřít crontab pro editaci příkazem:

crontab -e

Crontab se Vám otevře v textovém editoru a můžete ho editovat.

 

Struktura crontabu je následující:

# 1 - minuty (0-59)
# 2 - hodiny (0-23)
# 3 - dny v měsíci (1-31)
# 4 - měsíc (1-12)
# 5 - den v týdnu (0-7; 0 a 7 = neděle)
* * * * * skript 
* znamená (první-poslední), tzn. platí vždy
Více informací o nastavení crontabu lze najít na internetu. 

Teďka k mému problému. Měl jsem dva skripty a potřeboval jsem aby běželi z konkrétního adresáře a v tomto adresáři generovali nějaký obsah. Skripty jsem potřeboval spouštět v několika hodinových intervalech.

02 */4  * * * /usr/bin/php -q 
/var/www/localhost/virtuals/test/html/xml/xml_seznam_cron.php
00 0,4,8,12,16,20 * * * /usr/bin/php -q
/var/www/localhost/virtuals/test/html/xml/xml_centrum_cron.php

Celý problém byl v tom, že se musí PHP skript posílat do PHP aby se zkompiloval. Takže je nutné znát přesně cestu k PHP a přesně cestu ke skriptu. Tyto příkazy fungují pro Debian 4.0.

 

Po správném nastavení cest k PHP a ke skriptům je nutné crontab uložit. Prohlédnout se dá příkazem

crontab -l
Poslední nutným příkazem je  /etc/init.d/cron restart

RPM balíčkovací systém a distribuce openSUSE, 4. část

V dnešní poslední části tohoto mini seriálu o RMP a openSUSE si budeme povídat o YASTu (Yet Another Setup Toolkit) a o instalaci openSUSE. Jako poslední část je literatura, kterou jsem při psaní tohoto seriálu použil. Kompletní článek si můžete přečíst na RPM balíčkovací systém a distribuce SUSE.

Obsah článku

YAST - Yet Another Setup Toolkit (konfigurační nástroj SUSE Linuxu)

První SuSE distribuce, která zahrnovala YaST byla uvolněna v květnu 1996. YaST je bezplatný software, který Novell zpřístupnil pod GPL. YaST2 je nástroj pro správu a údržbu SUSE Linux instalace. Pomocí YaSTu můžete konfigurovat hardware, internetové spojení, grafické rozhraní, a periferní zařízení jako tiskárny a snímací zařízení v rychlosti a pohodlnosti. YaST je také spolehlivý pomocník pro administrátora systému, bezpečnostní nastavení, a instalace dalšího softwaru. YaST může být měněn a zálohován, zajišťuje integritu uživatelům a skupinové administraci a zjednodušuje celý systém administrace. YaST2 se dá tedy charakterizovat jako instalační program a většina konfiguračních nástrojů spojená v jeden celek. Prostřednictvím SUSE YOU (YaST Online Update), SUSE nabízí údržbu systému a optimalizační služby. Pokud jsou nové bezpečnostní záplaty dostupné na SUSE serveru, mohou být stažený a nainstalovany. V běžícím systému, SUSE Watcher automaticky poskytne uživateli informaci o bezpečnostní záplatě, umožňující tak ponechat systém aktualizovaný (moderní, bezpečný).

Instalace openSUSE 10.2.

Instalace openSUSE zabere od 30 do 60 minut, z toho je jen 20-50 minut instalace balíčků, která závisí na jejich množství.

Popis instalace:
Po nabootování z DVD openSUSE jste dotázání pro výběr jazyka a rozlišení ve kterém bude instalace probíhat. Dále máte na výběr zda instalovat systém, opravit systém...
Instalace systému (mezi nejdůležitější části instalace patří) :

  • Rozdělení disku - zde si můžete vybrat zda rozdělovat disk ručně nebo automaticky. při ručním rozdělení si vytvořte swap oddíl (pomocný oddíl pro RAM) - odkládací oddíl. Doporučuje se velikost operční paměti (1 GB RAM = 1 GB SWAP). Dále si vytvoříte oddíl BOOT (okolo 50-100 MB) a ROOT (3-x GB).
  • Volba zavaděče - zavaděč je program, který slouží k volbě z kterého diskového oddílu se bude bootovat (načítat) do operačního systému.
  • Volba balíčků - z balíčkovacím manažeru si můžete zvolit, které balíčky (jednotlyvé nebo celé skupiny) chcete po instalaci Linuxu využívat (FTP, HTTP, DNS, MAIL, programy na grafiku, programy pro multimedia (XMMS, mplayer)).

Literatura

Edward C. Bailey. Maximum RPM [online]. URL: <http://www.rpm.org/max-rpm/>
Edward C. Bailey. Additional options to rpm -i [online]. URL: <http://www.rpm.org/max-rpm/s1-rpm-install-additional-options.html>
Michal Krause. Správa balíčků s RPM [online]. c02.03.2000. URL: <http://www.root.cz/clanky/sprava-balicku-s-rpm/>
Michal Krause. Správa balíčků s RPM (2) [online]. c08.03.2000. URL: <http://www.root.cz/clanky/sprava-balicku-s-rpm-2/>
Martin Fiala. Balíčkovací systém Mandrake Linuxu [online]. c16.01.2004. URL: <http://www.abclinuxu.cz/clanky/show/52632>
Miroslav Petříček. SuSE Linux 8.0 CZ - instalace a konfigurace [online]. c11.06.2002. URL: <http://www.root.cz/clanky/suse-linux-8-cz-instalace-konfigurace/>
Marcel Kolaja. Balíčkovací systém distribuce Debian GNU/Linux, část druhá [online]. c12.06.2003. URL: <http://www.root.cz/clanky/balickovaci-system-debian-gnulinux-2/>

RPM balíčkovací systém a distribuce openSUSE, 3. část

Za cíl třetí části článku bude říci si, o tom jak získat informace o instalovaných balíčcích, pár slov o nástavbě RPM URPMI (manažer používaný v Mandriva Linux distribucích) a porovnání RMP a dpkg.

Obsah článku

Získávání informací z databáze balíčků

Veškeré informace o instalovaných balíčcích si RPM ukládá do systémové databáze balíčků. Z této databáze, jakož i přímo z rpm souborů lze zjistit mnoho zajímavého a užitečného. Pro dotazování je v rpm vyhrazen přepínač -q (od slova query). Ten sám o sobě ale nic nedělá, jenom říká, že se budeme ptát. Vždy je k němu třeba doplnit ještě další parametr, který určuje, na co se vlastně ptáme. První, co asi většinu uživatelů napadne, je vypsání seznamu všech instalovaných balíčků. K tomu slouží parametr -a, jako all:

rpm -qa

Chceme-li třeba zjistit verzi některého balíčku, jehož jméno nevíme tak docela přesně, lze to provést takto:

rpm -qa | grep jmeno

Další parametr je -f. Ten umožňuje zjistit, který balíček vlastní daný soubor. Například

rpm -qf /bin/cat prozradí, že cat je součást balíčku textutils.

Souhrnné informace o balíčku lze vypsat přepínačem -i a jméno rpm balíčku:

rpm -qi balicek.verze vypíše následující:

Name        : rpm                      Relocations: (not relocateable)
Version     : 3.0.3                    Vendor: Red Hat Software
Release     : 6x                       Build Date: Tue Oct 5 17:57:28 1999
Install date: Wed Dec 29 12:06:02 1999 Build Host: porky.devel.redhat.com
Group       : System Environment/Base  Source RPM: rpm-3.0.3-6x.src.rpm
Size        : 2904955                  License: GPL
Packager    : Red Hat Software 
Summary     : The Red Hat package management system.
Description :
The Red Hat Package Manager (RPM) is a powerful command line driven
package management system capable of installing, uninstalling,
verifying, querying, and updating software packages.  Each software
package consists of an archive of files along with information about
the package like its version, a description, etc.

Michal Krause. Správa balíčků s RPM (2) [online]. c08.03.2000, [cit. 2007-03-06]. URL: <http://www.root.cz/clanky/sprava-balicku-s-rpm-2/>

Kromě verze či autora se z výpisu dozvíte i kdy a kde byl balíček vytvořen, pod jakou licencí je šířen, do jaké kategorie spadá a také toto info často obsahuje krátký popisek.


-R vypisuje seznam závislostí pro daný balíček,
-l vypíše kompletní seznam souborů z balíčku,
-c vypíše seznam konfiguračních souborů
-d seznam souborů dokumentace (velmi užitečné).
Pokud ke všem těmto (i některým dalším) přepínačům přidáte ještě -p,
můžete získávat informace o nenainstalovaných balíčcích.
Místo jména balíčku je pak samozřejmě třeba předávat jméno rpm souboru
(např. rpm -qpl balicek-verze.rpm).

URPMI

je balíčkovací manažer používaný v Mandriva Linux distribucích. Distribuce založené na Mandriva Linux vycházejí původně z Red Hat Linuxu a proto používají i RPM. Mandriva ale nabízí i vlastní baličkovací manažer a tím je URPMI. URPMI postupuje takto:

  • zjistí, zda již není balíček nainstalován
  • zjistí, zda požadovaný balíček existuje v seznamu dostupných balíčků
  • zjistí, zda jsou splněny všechny závislosti, které balíček vyžaduje; pokud ne, automaticky vybere všechny potřebné balíčky, zobrazí nám jejich seznam a nabídne instalaci
  • nainstaluje balíček z nějakého dostupného zdroje (internet, CD, ...)
    umožňuje update balíčků, odstranění, zobrazení informací, seznam nainstalovaných balíčků.
  
urpmi  	instalace a upgradování balíčků
urpmq 	dotazování se na informace o balíčcích (i nenainstalovaných)
urpmf 	vyhledávání souborů v balíčcích (i nenainstalovaných)
urpme 	odstranění balíčku
urpmi.update 	stahování nového seznamu balíčků
urpmi.addmedia
urpmi.removemedia 	manipulace s databází zdrojů balíčků
příkazy které neumí URPMI ale RMP ano
rpm -qa  	seznam nainstalovaných balíčků
rpm -qa | grep vzor 	dotaz na nainstalované balíčky, jejichž jméno se podobá vzoru
rpm -ql jmeno_balicku 	seznam souborů, které obsahuje nainstalovaný balíček
rpm -qf jmeno_souboru 	zjistí, kterému balíčku patří zadaný soubor
Martin Fiala. Balíčkovací systém Mandrake Linuxu [online]. c16.01.2004, [cit. 2007-03-06]. URL: <http://www.abclinuxu.cz/clanky/show/52632>

dpkg

Dpkg instalační soubory mají narozdíl od RMP koncovku .deb.
Složení dpkg: - skládá se ze tří vrstev dpkg-dev, dpkg a frontendy.

  • dpkg-dev - neumí pracovat s balíčkovacím systémem jako celek ale pracuje pouze se samotnými balíčky.
  • dpkg - nepracuje pouze s jednotlivými balíčky, ale i s celým balíčkovacím systémem (např. kontrola závislostí, instalace a deinstalace balíčků atd.).
  • frontendy - je program, který usnadňuje práci s konzolovými nástroji pomocí funkcí poskytuje grafického (GUI) nebo textového (TUI) uživatelského rozhraní. Samotný frontend žádnou činnost neprovádí.

dpkg vs. rpm - RPM obsahuje vše dohromady. Dpkg je rozdělen do tří částí (dpkg-dev, dpkg, frontendy)

Obsah příštích článku

  • YAST - Yet Another Setup Toolkit
  • Instalace openSUSE 10.2.
  • Literatura

RPM balíčkovací systém a distribuce openSUSE, 2. část

Úkolem druhé části článku bude říci si, o všech příkazech pomocí kterých můžeme instalovat / odinstalovat balíček.

Obsah článku

Seznam příkazů, které můžeme použít při instalaci balíčku

rpm -i (or --install) options file1.rpm … fileN.rpm


--test
test se hodí pro zjištění, které nám chybý součásti, potřebné pro správnou funkčnost balíčku.

                # rpm -i --test rpm-2.0.11-1.i386.rpm
/bin/rpm conflicts with file from rpm-2.3-1
/usr/bin/gendiff conflicts with file from rpm-2.3-1
/usr/bin/rpm2cpio conflicts with file from rpm-2.3-1
/usr/bin/rpmconvert conflicts with file from rpm-2.3-1
/usr/man/man8/rpm.8 conflicts with file from rpm-2.3-1
error: rpm-2.0.11-1.i386.rpm cannot be installed
#

--percent místo výpisu právě prováděné části instalce se zobrazí procentuální pozice instalce. 100% znamená kompletní instalce.

                # rpm -i --percent iBCS-1.2-3.i386.rpm
%f iBCS:1.2:3
%% 0.002140
%% 1.492386
%% 5.296632
%% 9.310026
%% 15.271010
%% 26.217846
%% 31.216000
%% 100.000000
%% 100.000000
#

--excludedocs RPM rozděluje instalační soubory do tří kategorií
1.konfigurační soubory
2.soubory obsahující dokumentaci
3.ostatní soubory
--excludedocs parametr znamená, že se zabrání instalaci souborů s dokumentací. V následujícím příkladu by měla být dokumentace uložena v adresáři /usr/man/man1/ ale zadali jsme, že dokumentaci instalovat nechceme a proto soubor s dokumentací neexistuje. Použití tohoto paremetru má význam pokud chcete ušetřit pár MB na vašem HDD.

                # rpm -iv --excludedocs cdp-0.33-3.i386.rpm
Installing cdp-0.33-3.i386.rpm
# ls -al /usr/man/man1/cdp.1
ls: /usr/man/man1/cdp.1: No such file or directory
#

--includedocs pokud má balíček ve svém konfiguračním souboru nastaveno že se nemá instalovat dokumentace excludedocs: 1, můžeme pomocí --includedocs instalaci dokumentace povolit

              # ls /usr/man/man1/cdp.1
ls: /usr/man/man1/cdp.1: No such file or directory
# rpm -iv --includedocs cdp-0.33-3.i386.rpm
Installing cdp-0.33-3.i386.rpm
# ls /usr/man/man1/cdp.1
-rw-r--r--   1 root     root         4550 Apr 24 22:37 /usr/man/man1/cdp.1
#

--replacepkgs použije se pokud chceme znovu nainstalovat již existující balíček (třeba pro jeho opravu) instalace balíčku

              # rpm -iv cdp-0.33-2.i386.rpm
Installing cdp-0.33-2.i386.rpm
#

balíček je již nainstalovaný a proto se znovu nenainstaluje a instalátor nám vypíše chybu

              # rpm -iv cdp-0.33-2.i386.rpm
Installing cdp-0.33-2.i386.rpm
package cdp-0.33-2 is already installed
error: cdp-0.33-2.i386.rpm cannot be installed
#

pokud ale přidáme --replacepkgs instalace proběhne v pořádku

              # rpm -iv --replacepkgs cdp-0.33-2.i386.rpm
Installing cdp-0.33-2.i386.rpm
#

--replacefiles pokud máme dva instalační balíky a ty se snaží nainstalovat do stejného adresáře soubor se stejným jménem dojde k chybě. Přiklád je instalace nové verze programu a náhrada jeho staré. pomocí --replacefiles můžeme říci aby se na starý soubor nehledělo a přepsal se.

              # rpm -iv cdp-0.33-3.i386.rpm
Installing cdp-0.33-3.i386.rpm
/usr/bin/cdp conflicts with file from cdp-0.33-2
error: cdp-0.33-3.i386.rpm cannot be installed
# Chyba
# rpm -iv --replacefiles cdp-0.33-3.i386.rpm
Installing cdp-0.33-3.i386.rpm
# OK

--force
instalace v každém případě (ikdyž nastane konflikt) je to spojení --replacepkgs a --replacefiles.

--noscripts
některé balíčky vyžadují před svou instalací aby jisté programy byly vykonané předtím, po, nebo před a po instalaci balíčku.
--noscripts zabrání vykonávání těchto pre- a post-install skriptů.

--prefix
některé balíčky umožňují aby si uživatel zvolil na které místo disku (do kterého adresáře) se bude balíček instalovat.

--ignorearch
když je balík vytvořen, RPM specifikuje architekturu, nebo typ počítačového hardwaru pro který byl balík vytvořen.
--ignorearch použijeme pokud nechceme aby se architektura nebo hardware kontroloval.
tento příkaz se doporučuje použív pouze v případě, že víte co děláte.

--ignoreos
když je balík vytvořen, RPM specifikuje operační systém pro který byl balík vytvořen.
--ignoreos použijeme pokud nechceme aby se operační systém kontroloval.
tento příkaz se doporučuje použív pouze v případě, že víte co děláte.

--nodeps nehledět na závislosti (potřeba mít nainstalovaný související program) a bez problémů ho nainstalovat.

              # rpm -i blather-7.9-1.i386.rpm
failed dependencies:
bother >= 3.1 is needed by blather-7.9-1
# Error
# rpm -i --nodeps blather-7.9-1.i386.rpm
# OK

--ftpproxy a --ftpport pro nastavení FTP proxy a portu

--httpproxy a --httpport pro nastavení HTTP proxy a portu

RPM balíčky lze instalovat i pomocí internetu resp. HTTP a FTP účtů někde v síti internetu. Pokud budete instalovat ze serveru chráněného heslem, můžete přihlašovací jméno přidat do adresy serveru před zavináč takto:


      ftp://user:pass@jmeno.domena/pub/SUSE10.2/balicek-0-2.i386.rpm
nebo
ftp://user@jmeno.domena/pub/SUSE10.2/balicek-0-2.i386.rpm
Ve druhém případě se rpm na heslo zeptá.
rpm -U ftp://jmeno.domena/pub/SUSE10.2/balicek-0-2.i386.rpm
Edward C. Bailey. Additional options to rpm -i [online]. [cit. 2007-03-06]. URL: <http://www.rpm.org/max-rpm/s1-rpm-install-additional-options.html>

Odinstalování balíčku

Odinstalování balíčků se provádí jednoduše pomocí volby -e. Rozdíl oproti instalaci je v tom, že rpm nepředáváte jméno souboru, ale jméno balíčku. Tzn. bez .rpm.


Obsah příštích článku

  • Získávání informací z databáze balíčků
  • URPMI
  • dpkg
  • YAST - Yet Another Setup Toolkit
  • Instalace openSUSE 10.2.
  • Literatura

RPM balíčkovací systém a distribuce openSUSE, 1. část

Úkolem prvního článků bude říci si, co je to balíček, co je to balíčkovací systém, co je RPM a základní informace jak RPM pracuje.

Obsah článku

Co je to balíček?

Balíček je archiv ve kterém se nachází software. Jak tento archiv (balíček) vypadá, záleží na konkrétní distribuci (na balíčkovacím systému). Balíčky můžeme rozdělit na zdrojové a binární. Ve zdrojovém balíčku se nacházejí zdrojové kódy softwaru (pro instalaci je musíme zkompilovat), zatímco v binárním balíčku naleznete software již zkompilovaný (pro danný operační systém a dannou architekturu).

Co je to balíčkovací systém?

Balíčkovací systém usnadňuje správu softwaru. Bez jeho pomoci musíte o software, který instalujeme vědět, zda potřebuje ke svému běhu jiný software, určitou verzi nějaké knihovny nebo zda instalacínezpůsobíte konflikt s jiným softwarem ve vašem systému. Pomocí balíčkovacího systému pohodlně instalujete, nahrazujeme nebo odstraňujete software.

Co je RPM?

RPM balíkový manažer (RPM) je mocná příkazová řádka, která je schopná řídit instalace, deinstalace, ověřování, dotazování a aktualizace počítačových programů. Každý soubor programů se skládá z archivu souborů s informací o balíku (verze, popis...). Obsahuje i knihovnu API (Application Program Interface), která je vhodná pro pokročilé vývojáře v jazycích C nebo Python.

RPM je free software, uvolnění pod licencí GNU GPL (GNU General Public License). Toto znamená, že zdrojový kód je volně dosažitelný pro kopírování a užívaní.

RPM je součástí jádra mnoha Linux distribucí, jako Red Hat, Fedora, SUSE, openSUSE, Mandriva. RPM formát je součástí Linux Standard Base (jeji cíl je zvětšit kompatibilitu mezi Linux distribucemi a umožnit softwarovým aplikacím běžet na vyhovujícím systému).

Nové programy se instalují pomocí -i (install) a update probíhá pomocí -U (upgrade) nebo -F (freshen). Podstatné je, že -U nainstaluje i balíček, který zatím v systému nemáte (takže jej lze používat bez obav místo -i), zatímco -F jej přeskočí. Všechny tři zmiňované volby (-i, -U, -F) lze doplnit o volby -v a -h, které způsobí, že rpm bude informovat o tom, co právě provádí. Celý povel pak může vypadat třeba takto: rpm -Uvh balicek-0-2.i386.rpm

Použití RPM pro instalaci balíčku

rpm -i provádí současně několik věci:

  • Ověřuje závislosti
  • Kontroluje konflikty
  • Vykonává jakoukoli úlohu požadovanou před/po instalací
  • Rozhoduje co dělat s konfiguračními soubory
  • Rozbaluje soubory z instalačního balíku a přesouvá je na vhodné místo
  • Sleduje stav a to co se děje

Ověřuje závislostiNěkteré balíky nemohou správně fungovat pokud není nainstalován související balík (program se kterým právě instalovaný balík pracuje). Je také potřeba pojistit, že instalované balíky nebudou způsobovat kolize pro další instalované balíky.

Kontroluje konflikty
RPM vykonává několik kontrol během této fáze. Kontroly se týkají třeba pokusu instalovat balík který je již nainstalovaný, pokus o instalaci staršího balíku než je aktuálně nainstalovaný balík, nebo možnost který soubor může být přepsán.

Vykonává jakoukoli úlohu požadovanou před/po instalací
Zde jsou příkazy které musí být vykonané před/po instalaci balíčku. RPM vykonává tyto příkazy přesně podle pokynů svého zakladatele (tvůrce balíčku). Tak se vyloučí běžným zdrojům problémů behěm instalace.

Rozhoduje co dělat s konfiguračními soubory
Jedním z rysů, je cesta ovladající konfigurační soubory. Podle těchto souboru se přizpůsobý chování instalovaného software.

Rozbaluje soubory z instalačního balíku a přesouvá je na vhodné místo
Každý balíkovací soubor obsahuje seznam souborů, které se budou instalovat, jaký je jejich cíl (adresář na disku), dále obsahuje spoustu dalších atributù jako je oprávnění, vlastnictví.

Sleduje stav a to co se děje
Po každé když RPM instaluje balíček, sleduje cesty o instalovaných souborech v jeho databázi. Databáze obsahuje spousty informací, které jsou nutné pro správnou funkčnost RPM. Například RPM používá databázi pro kontrolu možného konfliktu během instalace.

Obsah příštích článku

  • Seznam příkazů, které můžeme použít při instalaci balíčku
  • Odinstalování balíčku
  • Získávání informací z databáze balíčků
  • URPMI
  • dpkg
  • YAST - Yet Another Setup Toolkit
  • Instalace openSUSE 10.2.
  • Literatura