Portál AbcLinuxu, 31. srpna 2025 04:35


Dotaz: Cron pro uživatele

5.2.2008 17:35 Greeg | skóre: 2
Cron pro uživatele
Přečteno: 595×
Odpovědět | Admin
Zdar, mám takovej dotaz, jak docílit toho aby když mám virtualhosty tak aby každej z nich mohl využívat vlastní cron, viděl jsem na hodně hostingách například v rootu serveru udělané složky typu cron-hodina, cron-den atd...

potřeboval bych poradit, jak toto funguje, aby se uživateli spustil třeba php script

(nejlépe poradit jak je to vymyšlený s těma složkama, to mi příjde takový nejjednodušší a pro uživatele i nejpřehlednější)

Dík
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.2.2008 17:53 propanbutan
Rozbalit Rozbalit vše Re: Cron pro uživatele
Odpovědět | | Sbalit | Link | Blokovat | Admin
vytvor ty adresare (slozka je widlackej pojem) aby do nich user mohl psat a pak udelej univerzalni crontab kterej je projede v pozadovanych intervalech. stejne bys mel mit pro kazdyho 'klienta' extra usera, jinak si muzou lezt do zeli (na home) a to nejen z cron jobu, ale treba i z cgi skriptu.

00 20 * * * /usr/sbin/runjobs /home/luser/cron/daily
5.2.2008 17:53 Miška | skóre: 31 | Praha
Rozbalit Rozbalit vše Re: Cron pro uživatele
Odpovědět | | Sbalit | Link | Blokovat | Admin
Virtualhosty jako na apacheovy? Zkousel's pod uzivatelem pustit crontab -e? Tim se da editovat uzivatelova crontabulka... Pokud na to ma uzivatel samozrejme prava (tusim prava k nakymu adresari ve spool).
5.2.2008 18:10 Greeg | skóre: 2
Rozbalit Rozbalit vše Re: Cron pro uživatele
zkusím oboje dík dám vědět jak to dopadlo
5.2.2008 18:15 Greeg | skóre: 2
Rozbalit Rozbalit vše Re: Cron pro uživatele
imho, mě jde o to, aby každej uživatel mohl jenom do těch adresářů přidávat a ubírat scripty, které se mají vykonávat pravidelně, bez jakéhokoliv zásahu, tj aby to provedlo všechno co bude v adresáři... každej uživatel by na to měl vlastní adresář, a to vůbec netuším jak na to,,, s cronem neumím, potřeboval bych na to nějak pošťouchnout, co mám nastavit v crontabu každého uživatele taky vůbec netušim...

dík, bodnul by nějakej stručnej návod, nebo ukázka.
5.2.2008 18:27 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Cron pro uživatele
No do toho cronu vložíš volání toho interpretu (php, python, bash ...) na všechny skripty v tom adresáři. Samozřejmě toto volání vložíš vícekrát, jen pokaždé s jiným nastavením času kdy se má provést.

Ukázky jak se používá cron jsou v man stránkách s popisky co to dělá. Dá se to z toho pěkně vypozorovat.
5.2.2008 18:34 Greeg | skóre: 2
Rozbalit Rozbalit vše Re: Cron pro uživatele
v man crontab a man cron je cca 20 řádků a z toho 15 o autorovi...

ukázku jsem tam žádnou nenašel...

mám uživatele:

greeg documentroot /var/www-greeg

adresář s cronem je: /var/www-greeg/cron/hodina/ <- tady jsou php scripty

potřeboval bych jen ukázku jak to nastavit v tom cronu, další už si podle toho dodělám sám.

dík
5.2.2008 19:19 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Cron pro uživatele
Omlouvám se, myslel jsem, že tam jsou. :-) Ale syntax cronu je jednoduchá. V /etc/crontab jsou záznamy pro celý systém a explicitně zde určíte pod jakým uživatelem se mají příkazy spouštět.

Čísla v pořadí znamenají minuty, hodiny, den v měsíci, měsíc, den v týdnu. Pak následuje uživatelské jméno a příkaz.
*/1 * * * * greeg /bin/prikaz
... bude každou jednu minutu spouštět zadaný "příkaz" pod uživatelem greeg. Zápis 1 místo */1 by znamenal každou první minutu. Ekvivalentně pro ostatní.

Teď záleží na tom, jak máte PHP nainstalované. Jestli jako CGI nebo modul Apache (viz. phpinfo(); ).

Pokud jako modul, pak třeba takto:
*/1 * * * * greeg lynx -dump http://www.example.org/cron/hodina/skript.php
Přes CGI by to bylo:
*/1 * * * * greeg /usr/bin/php /var/www-greeg/cron/hodina/skript.php
Aby to fungovalo tak jak chcete, tak se to musí doladit. Doufám, že jsem neudělal nějakou botu.
5.2.2008 18:34 Miška | skóre: 31 | Praha
Rozbalit Rozbalit vše Re: Cron pro uživatele
Jak vypada crontab:
0  *  * * *     root    rm -f /var/spool/cron/lastrun/cron.hourly
1  3  * * *     root    rm -f /var/spool/cron/lastrun/cron.daily
15 4  * * 6     root    rm -f /var/spool/cron/lastrun/cron.weekly
30 5  1 * *     root    rm -f /var/spool/cron/lastrun/cron.monthly
Co je ta prvni cast asi tusis (viz man 5 crontab) a to posledni je co se ma spustit. Idealne tedy udelas naky adresare a nechas poustet scripty jako:
#!/bin/sh
cd /cron/hourly
for i in *; do
    for j in $i/*; do
       su $i $j &
    done
done
Pravdepodobne by to jeste chtelo trochu zabezpecit, ale idea by mela bejt jasna. Uplne idealne by bylo, ze si kazdej uzivatel zapne ssh a pusti si crontab -e a nastvai si co chce a ty se o to nebudes muset starat...
5.2.2008 18:38 Greeg | skóre: 2
Rozbalit Rozbalit vše Re: Cron pro uživatele
jenomže, pokud to někomu nabízim jako hosting, nepřipadá v úvahy aby lez do ssh

imho, to je stejně z důvodu bezpečnosti povoleno jen z mojí IP včetně portu 22.

snad to podle toho příkladu pochopim a rozběhám, bohužel psaní linuxovejch scriptů mi nic moc neřiká...

dík moc
5.2.2008 19:21 Greeg | skóre: 2
Rozbalit Rozbalit vše Re: Cron pro uživatele
aště jedna maličkost, jak zavolám interpret PHP ?

nějak se mi ho do toho scriptu nedaří nacpat....
5.2.2008 19:22 Jirka | skóre: 36
Rozbalit Rozbalit vše Re: Cron pro uživatele
Viz. můj komentář nahoře.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.