Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Obecná podpora => Téma založeno: dharjee 07 Března 2008, 14:51:10
-
Dobrý den,
chtěl bych poprosit o radu, jedného dne mi prostě přestal fungovat crontab a nevím co s tím. Tady je jeho obsah, tak když někdo bude vědět co s tím, budu moc vděčnej.
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons
>/dev/null 2>&1
59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly
14 0 * * * root rm -f /var/spool/cron/lastrun/cron.daily
29 0 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly
44 0 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly
46 14 * * * root rm -f /pokus/*
39 14 * * * root rm /home/dharjee/tmp/*
-
1. podivat se do logu
2. podivat se do logu !
3. podivat se, jestli je enter na poslednim radku
4. vyhodit docasne tohle >/dev/null 2>&1, pak bude posilat vysledky rootovi.
-
Ano bylo to tím, že na konci řádku nebylo enter.
Stejně ale u příkazu 30 18 * * * rm -f /home/*/profile/Recent/*
dostávám hlášku: argument is too long
Nevíte jak na to a kde je chyba?
Dík
-
Možná to je tím, že mažeš 2 složky najednou. Zkus to postupně. Pouze odhad.
-
rm -f /home/* || rm -f /profile/Recent/*
nebo
rm -f /home/* && rm -f /profile/Recent/*
Za posledni radek si chytri hosi daji jeste # a pak maji jistotu.
-
Stejně ale u příkazu 30 18 * * * rm -f /home/*/profile/Recent/*
dostávám hlášku: argument is too long
Nevíte jak na to a kde je chyba?
Chyba je v tom, ze dochazi k expanzi te hvezdicky. Takze kdyz adresar /home nebo /profile/Recent obsahuje spoustu souboru, tak je pak prikazovy radek moc dlouhy.
-
Aha a jak to tedy vyřešit?
-
To je vubec zajimava vec, protoze co ctu, tak je to limit jadra (ne prikazu rm). O kolik souboru se jedna? Protoze ja ted zkousel pomoci "rm *" smazat 10 000 souboru a zadnej problem. Ikdyz ono to bude taky o tech cestach, protoze ta cesta k mazanym souborum taky neni nejkratsi.
A to chcete mazat jen soubory? Jelikoz mazat adresare jen pomoci "rm" samotneho nejde, musite pouzit "rm -r".
Chapu dobre, ze chcete smazat vsem uzivatelum soubory v jejich adresari ~/profile/Recent ? Protoze ostatni vam radi neco jineho (smazani souboru v /home a pak smazani souboru v /profile/Recent, coz se mi zda dost absurdni)
-
Ano chapete me dobre. Chci smazat vsem uzivatelum jejich soubory v RECENT. A to nejak crontab nepobera... :(
-
A co ty logy ?
-
Resenim je napriklad nezadavat parametry na prikazovy radek najednou, ale nacitat je a nakladat s nimi v cyklu. Je to sice pomalejsi, ale rozhodne to funguje. Vas problem by mohlo resit neco jako (tech useru by nemelo byt tolik, pripadne se i ty useri daji nacitat v cyklu):
find /home/*/profile/Recent -maxdepth 1 -type f -exec rm -f {} \;
Nerikam, ze je to idealni, ale bezet by to melo; Ale pro jistotu nejdriv to rm nahrad necim jako echo vystup si zkontroluj, tedy treba spust
find /home/*/profile/Recent -maxdepth 1 -type f -exec echo "{}" \; > /tmp/rmlist
a zkontroluj soubor /tmp/rmlist, ze ty sobory (ktere by se smazaly) odpovidaji. Pri mazani se vyplani merit aspon trikrat, nez clovek rizne.
-
tak ano tato rada funguje. Děkuji moc
-
uplne nejlepsi je napsat to do skriptu a z crontabu poustet tento skript.. skript samotny muze byt prehlednejsi (+komentare) a v crontabu neni svincik.