leggere l'output dei comandi in cron

Compilazione del kernel, gestione moduli, servizi attivi, e tutti gli interventi per l'ottimizzazione del sistema operativo.
Scrivi risposta
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

leggere l'output dei comandi in cron

Messaggio da london3 »

Codice: Seleziona tutto

$ crontab -l | tail -n 1
0 0-23/5 * * * my-command

$ cat /proc/$(cat /var/run/crond.pid)/fd/1
cat: /proc/1299/fd/1: Permesso negato

$ sudo cat /proc/$(cat /var/run/crond.pid)/fd/1
cat: /proc/1299/fd/1: Device o indirizzo non esistente
E quindi?


EDIT:


Ho provato a fare quello che dice qui https://stackoverflow.com/questions/364 ... 1#41409061

Codice: Seleziona tutto

$ crontab -l | tail -n 1
* * * * * echo abc  > /proc/$(cat /var/run/crond.pid)/fd/1 2>&1
$ sleep 65 # qualche minuto di attesa
$ sudo cat /proc/$(cat /var/run/crond.pid)/fd/1
cat: /proc/1328/fd/1: Device o indirizzo non esistente
Perchè non funziona?
Ultima modifica di london3 il venerdì 16 dicembre 2022, 16:51, modificato 2 volte in totale.
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2867
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: leggere l'output dei comandi in cron

Messaggio da DoctorStrange »

Non capisco cosa tu stia chiedendo con questo messaggio. Credo serva un minimo di contesto. Sembra che tu abbia importato un crontab dall'esterno, all'interno del quale sono definiti percorsi specifici che non trova sull'attuale sistema.
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: leggere l'output dei comandi in cron

Messaggio da london3 »

Codice: Seleziona tutto

~$ crontab -l | tail -n1
* * * * * date > /tmp/u7tyufgfhg/ls

# aspetto qualche minuto...

~$ cat /tmp/u7tyufgfhg/ls
mar 13 dic 2022, 15:32:01, CET
OK, ma devo per forza reindirizzare l'output su file (/tmp/u7tyufgfhg/ls).
Il metodo che ho provato inizialmente, perchè non funziona?
Ecco il link dove l'ho visto https://stackoverflow.com/questions/364 ... 1#41409061
Computer: Lenovo ThinkPad L480
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1720
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: leggere l'output dei comandi in cron

Messaggio da korda »

london3 ha scritto:
martedì 13 dicembre 2022, 14:47

Codice: Seleziona tutto

$ crontab -l | tail -n 1
0 0-23/5 * * * my-command

$ cat /proc/$(cat /var/run/crond.pid)/fd/1
cat: /proc/1299/fd/1: Permesso negato

$ sudo cat /proc/$(cat /var/run/crond.pid)/fd/1
cat: /proc/1299/fd/1: Device o indirizzo non esistente
E quindi?
Non ho capito il tuo scopo...

Vuoi esportare la lista dei cron su un file?
Dovresti correggere con qualcosa del tipo crontab -l | tail -n 1 > pippo.list

Vuoi esportare un log di un'operazione crontabbata?
Io solitamente su crontab lancio dei bash script wrappandoci dentro il my-command del caso: il redirezionamento di STDERR e STDOUT lo gestisco direttamente da dentro il mio file script.sh*

Edit
*: tipicamente i iei script crontabbati hanno questo header

Codice: Seleziona tutto

#!/bin/bash
export LOGFILE="/apath/alogfile.log"  # file di log
export PATH=/home/utente:/opt:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 370
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: leggere l'output dei comandi in cron

Messaggio da Lucio C »

Ho il sospetto che l'OP si aspetti che qualcosa fatto girare da crontab mandi l'output a terminale.
Questo non e' proprio il caso. O cio' che gira da crontab non produce output su stdout. O cio' che gira da crontab ha l'output rediretto in un file. Altrimenti se cio' che gira da crontab produce output su stdout non intercettato, verra' mandato un mail all'utente contenente l'output. Quindi suggerisco di usare mailx e vedere se sono stati generati tali messaggi (a volte torna comodo per "errori imprevisti".
(in quanto sopra leggasi "stdout o stderr")
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: leggere l'output dei comandi in cron

Messaggio da london3 »

korda ha scritto:
martedì 13 dicembre 2022, 15:53

Io solitamente su crontab lancio dei bash script wrappandoci dentro il my-command del caso: il redirezionamento di STDERR e STDOUT lo gestisco direttamente da dentro il mio file script.sh*
È proprio quello che vorrei evitare, ma vedo che forse non si può.
In pratica ho un crontab simile a questo

Codice: Seleziona tutto

5 * * * * backup
* 7 * * * upload /srv/mysite
5 * * * * update
Ogni comando, quando è opportuno, in genere produce il suo output, pensavo ci fosse da qualche parte un registro per accedere all'output dei vari comandi, senza ricorrere a wrapping, redirect ecc.

Non so se mi spiego...
Computer: Lenovo ThinkPad L480
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1720
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: leggere l'output dei comandi in cron

Messaggio da korda »

In realtà ho vaghe reminiscenze in cui si potrebbe agganciare l'output di contab a mail. In assenza di un SMTP specificato la mail finiva sull'account locale.

Ma sono giri lunghi che ho abbandonato decine di anni fa in favore del redirecting (decisamente più agevole per me, che non devo gestire più di due/tre utenze sui miei PC e quindi non ho bisogno di ricorrere a tale strategia)

Edit: esattamente ciò che menziona @Lucio C, non avevo letto il suo post :shy:
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 370
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: leggere l'output dei comandi in cron

Messaggio da Lucio C »

man 5 crontab dice
Command output is mailed to the crontab owner (BSD can't do this), can be mailed to a person other than the crontab owner (SysV can't do this), or the feature can be turned off and no mail will be sent at all (SysV can't do this either).
E' un po' nascosto, io forse lo avevo imparato tanti anni fa da qualche tutorial, come dicevo sopra che Altrimenti se cio' che gira da crontab produce output su stdout non intercettato, verra' mandato un mail all'utente contenente l'output.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: leggere l'output dei comandi in cron

Messaggio da london3 »

Comunque secondo questo esempio https://www.devdungeon.com/content/cron ... tip#toc-20 l'output viene mandato su /my/log.txt
/my/ mi pare una directory inappropriata.
Cosa mi consigliate (/opt/, /usr/local/, ecc.)?
Computer: Lenovo ThinkPad L480
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 370
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: leggere l'output dei comandi in cron

Messaggio da Lucio C »

Se e' un crontab personale direi qualche subdir della propria home, se e' roba di sistema qualche subdir di /var/log, se e' roba da guardare e cancellare direi /tmp
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: leggere l'output dei comandi in cron

Messaggio da london3 »

korda ha scritto:
martedì 13 dicembre 2022, 17:15
In realtà ho vaghe reminiscenze in cui si potrebbe agganciare l'output di contab a mail. In assenza di un SMTP specificato la mail finiva sull'account locale.
E cmq alla fine si crea una proliferazione di email, che a me personalmente alla lunga darebbe fastidio.
Lucio C ha scritto:
martedì 13 dicembre 2022, 17:56
Se e' un crontab personale direi qualche subdir della propria home, se e' roba di sistema qualche subdir di /var/log, se e' roba da guardare e cancellare direi /tmp
crontab personale...???
Computer: Lenovo ThinkPad L480
Lucio C
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 370
Iscrizione: venerdì 10 dicembre 2021, 18:33
Desktop: fvwm
Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
Sesso: Maschile
Località: Paneropoli

Re: leggere l'output dei comandi in cron

Messaggio da Lucio C »

Mah ... i mail basta cancellarli ... io degli n crontab che ho al lavoro di alcuni ricevo mail (autogenerati da crontab) solo in caso di errore, ed e' il modo piu' veloce di accorgersi di un problema; di altri mando mail a me e qualcun altro in "casi particolari" (ma si tratta di mail generati da me dentro lo script, tipicamente essi aggiungono messaggi a un file vuoto, se alla fine il file non e' piu' vuoto mandano il mail); ma nella maggior parte producono output su file o sono silenziosi.

Per "crontab personale" intendo uno che gira sotto l'utente corrente e non come root (ossia per me quasi tutti, salvo il backup asul secondo disco). Ne ho da quelli che fanno dei probe sulla rete locale ogni mezzora, a quelli che aggiorano o consultano un db una volta al giorno, a quelli che mandano gli auguri a qualcuno al compleanno ...
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Avatar utente
tokijin
Moderatore Globale
Moderatore Globale
Messaggi: 4607
Iscrizione: mercoledì 3 giugno 2009, 23:10
Desktop: plasma 5.27.4
Distribuzione: Kubuntu 23.04
Località: Abruzzo

Re: leggere l'output dei comandi in cron

Messaggio da tokijin »

@london3
modifica per favore il primo messaggio articolando meglio la tua richiesta: sarà più facile per te ottenere supporto e si aiuta chi mai dovesse ricapitare su questa discussione.

app.php/rules#regola-5d
Nell'esporre il problema dovranno esser date quante più informazioni precise e complete.
Ciao
Sei abbruzzese se dopo che ti sei strafogato un chilogrammo di pasta, hai il coraggio di dire alla cuoca "cacc ch'è cott" - Se entra un piccione in casa..chiudi le finestre!
Ubuntu User #28657 - Il mio vecchio hardware - Tag Codice
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 555
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: leggere l'output dei comandi in cron

Messaggio da london3 »

OK ho fatto qualche correzione nel post iniziale.
Rileggetelo!!!
Ad ogni modo, mi sapete dire perchè quello che c'è scritto qui https://stackoverflow.com/questions/364 ... 1#41409061 non funziona?
Computer: Lenovo ThinkPad L480
Scrivi risposta

Ritorna a “Kernel e servizi di sistema”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti