Controllare il suo PPID: l'ID del processo padre. Confrontalo con il cron pid; Se sono uguali, è stato invocato dal crontab.
Questo può essere fatto:
$ sudo ps -Af | grep cron | grep -v grep
root 6363 1 0 10:17 ? 00:00:00 /usr/sbin/cron
Il PID del processo cron in questo esempio è 6363. Vale la pena ricordare che l'PPID di cron è 1 - the init process.
Ora scoprire che cosa è il PID del programma Python:
$ sudo ps -Af | grep SorinSbarnea.py
adam 12992 6363 1 12:24 pts/2 00:04:21 /usr/bin/python SorinSbarnea.py
suo PID è 12992 e PPID è 6363, quindi è stato infatti invocato dal processo cron.
EDIT:
Il processo di cron non potrebbe invocare direttamente il processo. Quindi, dovrai attraversare i PPID dal processo verso l'alto, fino a raggiungere il PID di PPID = 1 o PPID = /usr/sbin/cron
. Questo può essere fatto facilmente usando una piccola shell o uno script python; basta analizzare l'output di ps
:
$ cat /proc/12992/status
....
Pid: 12992
PPid: 7238
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
...
Il passo successivo sarebbe checkig/proc/7238, e così via. Ancora una volta, questo è veramente facile da implementare usando shell o script python.
Grazie, @digitalarbeiter e @Noufal Ibrahim per averlo indicato nei commenti.
fonte
2010-01-18 15:17:56
perché vorresti saperlo? – SilentGhost
Ad esempio, voglio cambiare il modo in cui produce l'output. Quando si esegue dal terminale voglio usare la colorazione tramite sequenze di escape ANSI, ma durante l'esecuzione dal terminal voglio testo normale al fine di ricevere messaggi di posta elettronica belle. – sorin
Quindi controlla il terminale, non per cron. – digitalarbeiter