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.