Compruebe su PPID: la ID de su proceso principal. Compare eso con el cron pid; Si son iguales, fue invocado por el crontab.
Esto se puede hacer por:
$ sudo ps -Af | grep cron | grep -v grep
root 6363 1 0 10:17 ? 00:00:00 /usr/sbin/cron
El PID del proceso de cron en este ejemplo es 6363. Vale la pena mencionar que el PPID de cron es de 1 - the init process.
ahora ¿cuál es el PID de su programa de Python:
$ sudo ps -Af | grep SorinSbarnea.py
adam 12992 6363 1 12:24 pts/2 00:04:21 /usr/bin/python SorinSbarnea.py
que su PID y PPID 12992 es 6363, por lo que era de hecho invocadas por el proceso de cron.
EDIT:
El proceso de cron no podría invocar el proceso directamente. Por lo tanto, tendrá que atravesar los PPID de su proceso hacia arriba, hasta llegar a PPID = 1 o PPID = /usr/sbin/cron
's PID. Esto se puede hacer fácilmente usando un pequeño script de shell o python; simplemente analizar la salida de ps
:
$ cat /proc/12992/status
....
Pid: 12992
PPid: 7238
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
...
El siguiente paso sería checkig/proc/7238, y así sucesivamente. Nuevamente, esto es realmente fácil de implementar usando script de shell o python.
Gracias, @digitalarbeiter y @Noufal Ibrahim por señalarlo en sus comentarios.
¿por qué le gustaría saber esto? – SilentGhost
Por ejemplo, quiero cambiar la forma en que hace la salida. Cuando se ejecuta desde la terminal, quiero usar el color a través de secuencias de escape ANSI, pero cuando se ejecuta desde la terminal, deseo texto sin formato para recibir correos electrónicos agradables. – sorin
Luego verifique la terminal, no para cron. – digitalarbeiter