rai ha scritto: ↑sabato 21 gennaio 2023, 17:40
@tutti è perfettamente normale che ci sia l'username nel job se lo si mette in /etc/crontab o in un altro crontab in /etc/cron.d/
Codice: Seleziona tutto
$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
$
Diciamo che usare la cartella /etc è una cosa sconsigliata da fare per i propri crontab, anche se hanno bisogno di permessi da superuser. Lì dovrebbero starci i job della distribuzione: niente impedisce che in un aggiornamento vengano sovrascritti
@vioma ma hai provato dal log a capire cosa succede?
ammesso che dall'output del precedente comando non se ne venga a capo, ti consiglio durante il debug di reindirizzare a un file l'output ed eventuali errori dei tuoi comandi.
Lo ottieni incollando in fondo ad ogni riga dei tuoi cronjob tutto il seguente
e poi vai a leggere il file cron.log che si trova nella Home
PS se crei il job con crontab -e non puoi sperare che vengano eseguiti comandi di sistema che richiedono di essere root: dovresti fare
sudo crontab -e
Premetto che non sono un informatico, ma utilizzo Ubuntu da 14 anni e utilizzo solo lui anche in ambiente lavorativo.
Lo conosco bene, ma non sono un informatico, quindi le mie conoscenze sono limitate alle esperienze derivate dai problemi che man mano incontro.
Non ho controllato il log perchè non sapevo che esistesse, grazie per avermi informato.
Grazie per avermi detto che i cronjob potrebbero essere cancellati da un aggiornamento di sistema, anche se questo negli anni non è mai avvenuto.
Sto ripassando il Wiki di Cron e sto facendo nuove ricerche.
Il problema è che in tutti i miei script di aggiornamento vi sono istruzioni con il sudo davanti e quindi inserirle all'interno di /etc/crontab mi aiutava a superare questo ostacolo.
Da quello che ho potuto capire, se inserisco i percorsi dei miei script con "crontab -e", questi non saranno eseguiti in quanto verranno eseguiti come utente e non come root.
Adesso vorrei capire una cosa, "sudo crontab -e" mi apre un documento all'interno del quale posso inserire tali percorsi con istruzioni che hanno la necessità di essere eseguite come amministratore? Eseguendo il comando sembra di si.
Edit: Questo il contenuto del log
Codice: Seleziona tutto
grep -i " cron" /var/log/syslog
Jan 22 00:17:01 xub2004-Precision-M6800 CRON[4342]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 22 01:17:01 xub2004-Precision-M6800 CRON[52167]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jan 22 01:29:11 xub2004-Precision-M6800 crontab[52239]: (root) BEGIN EDIT (root)
Jan 22 01:30:05 xub2004-Precision-M6800 crontab[52239]: (root) END EDIT (root)
Edit: Inserendo l'istruzione con il comando "sudo crontab -e" sembra funzionare. Lunedì in ufficio farò delle prove e se tutto va bene metto risolto.
Edit: Ho letto la guida (....che avrei dovuto leggere qualche anno fa...) su Cron e Crontab e i comandi funzionano sia su /etc/crontab che su "sudo crontab -e". Il problema del malfunzionamento era dovuto al fatto che anzicchè mettere solo il percorso dello script, come facevo prima e funzionava, adesso vuole messo davanti "bash", altrimenti non me lo esegue.
In pratica il comando giusto è:
e non
come facevo prima.
Attenzione che se eseguite il comando dentro /etc/crontab, se lo script ha necessità dei permessi di amministratore deve essere eseguito come root, per esempio:
In questo caso, da root, verrà eseguito lo script alle ore 14,30 di ogni giorno.
Però,
come consiglia il Wiki, consiglio di mettere gli script che necessitano dell'amministratore su:
Saluti e grazie a Tutti.