Я не знаю конкретно о PHP, но вы можете пройтись по дереву процессов, пока не найдете init или cron.
Предполагая, что PHP может получить свой собственный идентификатор процесса и запускать внешние команды, необходимо выполнить ps -ef | grep pid
, где pid - это ваш собственный идентификатор процесса и извлечь из него идентификатор родительского процесса (PPID) .
Затем делайте то же самое с этим PPID, пока не достигнете cron как родителя или init как родителя.
Например, это мое дерево процессов, и вы можете увидеть цепочку владения, 1 -> 6386 -> 6390 -> 6408.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:21 ? 00:00:00 /sbin/init
allan 6386 1 0 19:04 ? 00:00:00 gnome-terminal --geom...
allan 6390 6386 0 19:04 pts/0 00:00:00 bash
allan 6408 6390 0 19:04 pts/0 00:00:00 ps -ef
Те же процессы, выполняемые в cron, выглядят так:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:21 ? 00:00:00 /sbin/init
root 5704 1 0 16:22 ? 00:00:00 /usr/sbin/cron
allan 6390 5704 0 19:04 pts/0 00:00:00 bash
allan 6408 6390 0 19:04 pts/0 00:00:00 ps -ef
Это решение «ходить по дереву процессов» означает, что вам не нужно беспокоиться о введении искусственного параметра, указывающего, работает ли вы под управлением cron или нет - вы можете забыть сделать это в интерактивном сеансе и все такое до.