Hlavní navigace

Hrátky z řádky: Na neznámém stroji a hrátky s časem

Petr Macek 10. 3. 2008

Opět se setkáváme u pravidelné pondělní dávky tipů a triků z černé řádky. Dnes se podíváme na několik příkazů, které nám pomohou při prvním přihlášení na nám dosud neznámý vzdálený počítač. Dále se podíváme na pravidelné spouštění úloh pomocí démona cron a na závěr si pohrajeme s přesným časem.

Kdo a kde jsem, co je to za stroj?

Občas dostanu od někoho ssh údaje pro přihlášení s tím, že mám na daném stroji něco udělat. Napřed je dobré mít nějaké informace. Kdo jsem a do kterých skupin patřím, mi řekne příkaz id.

$ id
uid=1001(pm) gid=1001(pm) groups=1001(pm), 0(wheel), 5(operator)
$ su
Password:
#  id
uid=0(root) gid=0(wheel) groups=0(wheel), 5(operator)

Můžeme zjišťovat informace i o jiných uživatelích:

$ id tm
uid=1003(tm) gid=1003(tm) groups=1003(tm), 80(www)

Pokud se nám server slušně nepředstaví po přihlášení, zeptáme se ho příkazem uname. Bez parametru nám toho moc neřekne, s parametrem -a už se dozvíme spoustu věcí. U FreeBSD třeba verzi, patch level, jaké jádro používáme, …

pm@mail ~ $ uname -a
FreeBSD mail.firma.cz 6.2-RELEASE-p4 FreeBSD 6.2-RELEASE-p4 #0: Mon May 21 11:33:00 CEST 2007
root@mail.firma.cz:/usr/obj/usr/src/sys/KERNEL_MAIL_FIRMA_CZ  i386

Pokud se ani takhle nedozvíte potřebné informace (znám servery, které na uname říkají jen: linux), zkuste:

$ cat /etc/*version

nebo

$cat /etc/*release

Ke zjištění DNS jména serveru příkaz hostname. Příkazy who a w se také mohou hodit – zobrazí informace o přihlášených uživatelích a co právě dělají.

Když se chcete dozvědět něco o hardware, použijte příkaz dmesg, v některých distribucích dmesg -a. Ve FreeBSD dosáhnete stejného výsledku pomocí

$ cat /var/run/dmesg.boot

Příkaz vám vypíše buffer, uvidíte v něm např. zprávy o bootu systému, jaký HW byl nalezen a co se spouštělo.

Další příkazy, které se mohou hodit (některé už jsme si ukázali, některé ještě probereme):  users, whoami, uptime, last.

Cron – pravidelné spouštění úloh

Nedávno jsme si ukázali program at určený pro jednorázové spouštění úlohy ve stanovený čas. Dnes se podíváme na pravidelné spouštění pomocí démonu cron. V běžném systému si každý uživatel může spravovat svou cron tabulku. Úlohy se tedy spouští s právy uživatele vlastnícího příslušnou cron tabulku. Ke správě tabulky slouží příkaz crontab. Nejprve si ukážeme, jak takový crontab může vypadat, to se provádí pomocí příkazu  crontab -l:

00 23 * * *         /usr/sbin/ntpdate tak.cesnet.cz >> /dev/null
40 22 * * 5         /usr/local/bin/zalohuj >> zalohovani_chyby
30 10 14,28 * *     /usr/local/bin/lynx -dump http://www.mujserver.cz/cron/zaloha_sql.php

Pravá strana výpisu je asi jasná, udává, který příkaz nebo příkazy (oddělené středníkem) se budou spouštět. Levá strana už tak jasná není. Je to v podstatě pět sloupečků, jsou odděleny mezerou nebo tabulátorem. Každý zastává nějaký časový údaj:

1. minuty (může být 0-59)
2. hodiny (může být 0-23)
3. den v měsíci (může být 1-31)
4. měsíc (může být 1-12)
5. den v týdnu (může být 0-7, 0 i 7 je neděle)

Hvězdička pak znamená libovolný. Pokud bychom zadali 5× hvězdičku, úloha by se spouštěla každou minutu. Objasníme si to na výše uvedené tabulce. První záznam říká, že ntpdate se spustí každý den ve 23:00. Druhý řádek je podobný, zálohování se spustí ve 22:40, ale jen v pátek. Třetí záznam se spustí v 10:30 každý 14. a 28. den v měsíci.

U zadávání máme ještě další možnosti:
*/5 * * * * Toto nám spustí úlohu každých 5 minut
10 0 * * 1–5 spustí se v pondělí až pátek v 00:10
5 0–23/2 * * * spustí se každou sudou hodinu:5 (02:05, 04:05, …)
55 0 13 * 5 načasovat se dá vše, tohle je pátek třináctého

Ještě si můžeme ovlivnit chování, např. pomocí parametrů SHELL, MAILTO a PATH si můžeme nastavit jiný shell, cesty a komu se má mailovat výsledek spuštění:

SHELL=/bin/sh
MAILTO=uzivatel
PATH=/usr/bin:/bin

Uživatel root může prohlížet a měnit tabulky všech uživatelů, slouží k tomu parametr

-u uzivatel

Čas

Na serveru, kde nepotřebuji úplně přesný čas, používám v crontabu uživatele root toto:

50 23 * * *         /usr/sbin/ntpdate tak.cesnet.cz >> ntpdate.log

Každou noc se mi seřídí čas dle serveru tak.cesnet.cz a v logu je krásně vidět, jak se synchronizovalo:

$ cat /root/ntpdate.log
19 Jan 23:50:00 ntpdate[99830]: adjust time server 195.113.144.201 offset -0.030088 sec
20 Jan 23:50:00 ntpdate[3488]: step time server 195.113.144.201 offset -1.068216 sec
21 Jan 23:50:00 ntpdate[7068]: step time server 195.113.144.201 offset -1.093893 sec

Samozřejmě pokud chcete mít přesnější čas, je potřeba zkonfigurovat ntpd démon. Ve FreeBSD stačí přidat do /etc/rc.conf:

ntpd_enable="YES"

Vytvořit konfigurační soubor /etc/ntp.conf:

logfile /var/log/ntpd
driftfile /var/db/ntpd.drift
statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

server ntp.mujposkytovatel.cz
server ntp.verejnyserver.cz
server tik.casovy.cz

a spustit:

$ /etc/rc.d/ntpd start

Seznam ntp serverů najdete na ntp.org a konkrětně pro ČR v sekci cz. Potom může tento ntpd sloužit jako server pro další stroje ve vaší síti.

Našli jste v článku chybu?

10. 3. 2008 6:35

pht (neregistrovaný)
Zda se, ze v priklade patkem trinacteho se uloha spusti v 55 hodin a 0 minut. Kdyz jsme u toho, nevite jak se cron zachova v takovemto pripade? Cas pretece do dalsich dnu nebo dojde na chybu nebo se nic nestane?

10. 3. 2008 8:34

Správně mělo být samozřejmě

55 0 13 * 5

Už jsem to autorovi opravil.

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Podnikatel.cz: Prodává přes internet. Kdy platí zdravotko?

Prodává přes internet. Kdy platí zdravotko?

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?