Newsgroup: it.comp.os.linux.iniziare
Titolo: crontab: eseguire comando ogni due ore

~$ crontab -l
* */2 * * * echo 123
~$ grep 'echo 123' /var/log/syslog|cut -f3 -d ' '
18:24:01
18:25:01
18:26:01
18:27:01
 
A me sembra che lo sta facendo ogni minuto
 
???


ovviamente. il primo parametro è il minuto, hai messo * cioè tutti. in 
quella crontab esegue il comando ogni minuto delle ore pari.
se vuoi che lo faccia esattamente ogni due ore devi mettere il minuto 
quando vuoi che avvenga. se metti 0 lo farà al minuto zero.

Il 25/04/20 18:43, rootkit ha scritto:

Facciamo che linux avviato alle 9.35
Da ora in poi voglio un'iterazione alle
11.35
13.35
15.35
ecc.
 
Si può?


non con crontab.
puoi usare i timer di systemd:
 
OnUnitActiveSec=2 hr
 
qui risponde esattamente alla tua esigenza:
 
https://www.reddit.com/r/archlinux/comments/576ps2/
 
setting_up_a_systemd_timer_for_2_hours_after_boot/
 
 

 Si può?
]zac[
 
No, cron esegue a orario fisso.
 
Forse puoi farlo con anacron.
 
Ma secondo me non ha senso farsi i problemi di quando è stato avviato il 
server o inserita la regola di pianificazione automatica.
 
Anzi è preferibile un orario preciso.
 

Il 25/04/20 22:05, Giuseppe Della Bianca ha scritto:

????
Boh :)
 

 Boh :)
 
Che differenza ti fa eseguire ogni due
ore dal boot, oppure alle:
 
00:00
02:00
04:00
 
etc.
 
???
 
Tu, come sempre, non spieghi quale sia il
problema che vuoi risolvere.
Metti la soluzione che vorresti e chiedi
se si puo` fare o perche` non funziona.
 
Spiega il problema, magari vi sono altre
soluzioni a cui non hai pensato e che
potrebbero esserti utili.
O magari no, ma almeno e` chiaro.
 
bye,
 
-- 
 
piergiorgio

 
 
Non funziona.
 
+ cat /etc/systemd/system/my-test.timer
[Unit]
Description=Daily man-db regeneration
Documentation=man:mandb(8)
 
[Timer]
OnUnitActiveSec=5
 
[Install]
WantedBy=timers.target
 
+ cat /etc/systemd/system/my-test.service
[Service]
ExecStart=echo /etc/systemd/system/my-test > /tmp/alex7997.log
+ sudo systemctl stop my-test.timer
+ sudo systemctl start my-test.timer
+ sleep 7
+ systemctl list-timers
NEXT                          LEFT          LAST 
  PASSED       UNIT
Sun 2020-04-26 13:32:52 CEST  14min left    Sun 2020-04-26 12:33:09 CEST 
  45min ago    anacron.timer
Sun 2020-04-26 13:39:00 CEST  20min left    Sun 2020-04-26 13:09:01 CEST 
  9min ago     phpsessionclean.timer
Sun 2020-04-26 16:50:23 CEST  3h 31min left Sat 2020-04-25 10:49:10 CEST 
  1 day 2h ago apt-daily.timer
Mon 2020-04-27 00:00:00 CEST  10h left      Mon 2020-04-20 04:57:59 CEST 
  6 days ago   fstrim.timer
Mon 2020-04-27 00:00:00 CEST  10h left      Sun 2020-04-26 07:59:23 CEST 
  5h 19min ago logrotate.timer
Mon 2020-04-27 00:00:00 CEST  10h left      Sun 2020-04-26 07:59:23 CEST 
  5h 19min ago man-db.timer
Mon 2020-04-27 06:27:19 CEST  17h left      Sun 2020-04-26 08:39:01 CEST 
  4h 39min ago apt-daily-upgrade.timer
Mon 2020-04-27 06:35:36 CEST  17h left      Sun 2020-04-26 12:01:56 CEST 
  1h 16min ago motd-news.timer
Mon 2020-04-27 08:50:26 CEST  19h left      Sun 2020-04-26 08:14:13 CEST 
  5h 4min ago  systemd-tmpfiles-clean.time
Sun 2020-05-03 03:10:14 CEST  6 days left   Sun 2020-04-26 07:59:24 CEST 
  5h 19min ago e2scrub_all.timer
n/a                           n/a           n/a 
  n/a          my-test.timer
 
11 timers listed.
Pass --all to see loaded but inactive timers, too.
+ cat /tmp/alex7997.log
cat: /tmp/alex7997.log: File o directory non esistente

 Non funziona.
 
è documentato, ti garantisco che funziona.
devi indagare.
 
sudo journalctl -u my-test.timer
 

Il 26/04/20 14:17, rootkit ha scritto:

$ journalctl -u my-test.timer|cut -f2 -d ']'
: /etc/systemd/system/my-test.timer:5: Failed to parse timer value, 
ignoring: 5sc
: my-test.timer: Timer unit lacks value setting. Refusing.
: /etc/systemd/system/my-test.timer:5: Failed to parse timer value, 
ignoring: 5sc
: my-test.timer: Timer unit lacks value setting. Refusing.
: /etc/systemd/system/my-test.timer:5: Failed to parse timer

 ???
 
Questione di principio più che altro :)
Eseguire alle...
Eseguire ogni...
Cmq ok, va bene così :)


leggi la manpage. ci sono diverse modi per implementare, usando 
OnUnitActiveSec devi avere anche uno unit associato. io ti do un 
indirizzo ma poi i dettagli li devi mettere a punto da te.
 
http://man7.org/linux/man-pages/man5/systemd.timer.5.html
 
 
 
 

Il 26/04/20 14:40, alex ha scritto:

Ricorda cmq che ogni cosa "apparentemente inutile" è sempre occasione di 
apprendimento.

 Eseguire ogni...
 
Questo e` diverso come realizzazione.
 
Un metodo e` usare "at", per esempio,
in maniera ricorsiva.
 
bye,
 
-- 
 
piergiorgio

 apprendimento.
 
???
 
Qui non e` questione di "apparentemente
inutile", ma di "incomprensibile".
 
E` sempre buona norma, e forse anche
buona educazione, spiegare al meglio
le cose, quando si chiede un aiuto.
 
Ora, esistono innumerevoli soluzioni al
problema, ma se questo non e` messo bene
in chiaro, molte potrebbe essere meno che
ottimali, per quanto istruttive.
 
bye,
 
-- 
 
piergiorgio

 OnUnitActiveSec devi avere anche uno unit associato
 
cioè?


Che parte di "io ti do un indirizzo ma poi i dettagli li devi mettere a
punto da te" non ti è chiara?
 
-- 
Cio' che si vede, e'.
 

Il 26/04/20 16:33, Marco ha scritto:

Come si associa OnUnitActiveSec ad un unit? (non ho trovato una spiegazione)
 
Cosa significa
 
my-test.timer: Timer unit lacks value setting. Refusing.
 
Quale valore gli manca?
 
/etc/systemd/system/my-test.timer:5: Failed to parse timer
 
(sembra ci sia un errore di sintassi)

 
 
at?

 at?
 
man at
 
bye,
 
-- 
 
piergiorgio

 
Non c'è il manuale per at
~$
 
 
 

 Non c'è il manuale per at
 
Mi prendi in giro?
E` installato almeno?
 
E comunque il tuo motore di ricerca
preferito sicuramente lo trova...
 
bye,
 
-- 
 
piergiorgio

Il 26/04/20 18:48, alex ha scritto:

ok ho capito, ma prima di installare roba inutile sto vedendo se fa al 
mio caso.
Per adesso grazie

 Per adesso grazie
 
Forse a te servirebbe qualcosa del genere.  Non so se vi siano altri 
programmi che implementino le tabelle di cron in modo simile ma questa è 
l'implementazione di crond che ho trovato su Minix e parzialmente 
riscritta da me per conformarla ad un compilatore con standard ansi.
Il pacchetto comprende il comando at e crontab e lo puoi trovare
http://giovanni.homelinux.net/development/
 
 
Per il tuo caso dovresti avere un entry:
 
?   0:2  *  *  *	<comando da eseguire>
 
Dalla man page di crontab:
 
The format of entries in a crontab file are five fields of numbers 
specifying  the  minute  (0-59),  hour  (0-23),  day of the month 
(1-31), month (1-12), and day of the week (0-6 with 0 = Sunday) that a 
task must be executed.  The task to be executed follows as a shell command.
 
The time numbers can be given as a comma separated list of simple 
numbers, ranges ("2-5"  is  the  same  as  "2,3,4,5"),  and  repeats 
("2:5"  means "2,7,12,17,22"  in  the  hour field).  A repeat is cyclic 
affair, i.e. 2:5 and 12:5 are the same thing.  A single "*" can be used 
in a field to indicate  all  valid  numbers in that field, so it 
translates to "always".  If the minute field you can use "?" for the 
current minute that  the  crontab file is loaded.  It can be used in a 
repeat, i.e. "?:10" for every 10 minutes.  This keeps machines with 
identical crontabs from executing tasks at exactly the same time, 
causing a burst of traffic if anything is done over a network.
 
If a given time is valid in all five fields then a  command  is 
executed.  Here are a few examples that illustrate the possibilities:
 
  # min hour mday mon wday command
     ?   3    *    *   *   /usr/etc/daily  # Daily system cleanup
     0   *    *    *   *   date            # Print date on the hour
     30  4    *    *  2-6  /var/etc/backup # After workdays on 4:30
     0   0   13    *   5   echo Beware!    # For the superstitious
 
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

Il 27/04/20 12:33, Giovanni ha scritto:
 
 
grazie appena posso faccio qualche prova

 grazie appena posso faccio qualche prova
 
Attento non l'ho mai provato su Linux.
