Jas*_*rff 19
不是你问的,但也许你想要的是os.isatty(sys.stdout.fileno()),它告诉我是否stdout连接到(粗略地说)一个终端.如果将输出通过管道传输到文件或其他进程,或者从cron运行进程,则为false.
检查其PPID - 其父进程的ID.将其与cron pid进行比较; 如果它们相同,则由crontab调用.
这可以通过以下方式完成:
$ sudo ps -Af | grep cron | grep -v grep
root 6363 1 0 10:17 ? 00:00:00 /usr/sbin/cron
Run Code Online (Sandbox Code Playgroud)
此示例中的cron进程的PID为6363.值得一提的是,cron的PPID为1 - init进程.
现在找出你的python程序的PID是什么:
$ sudo ps -Af | grep SorinSbarnea.py
adam 12992 6363 1 12:24 pts/2 00:04:21 /usr/bin/python SorinSbarnea.py
Run Code Online (Sandbox Code Playgroud)
它的PID是12992,PPID是6363,所以它确实是由cron进程调用的.
编辑:
cron进程可能不会直接调用您的进程.因此,您必须向上遍历过程中的PPID,直到达到PPID = 1或PPID = /usr/sbin/cron'PID.这可以使用小shell或python脚本轻松完成; 只解析输出ps:
$ cat /proc/12992/status
....
Pid: 12992
PPid: 7238
Uid: 1000 1000 1000 1000
Gid: 1000 1000 1000 1000
...
Run Code Online (Sandbox Code Playgroud)
下一步是checkig/proc/7238,依此类推.同样,使用shell或python脚本实现这很容易.
谢谢@digitalarbeiter和@Noufal Ibrahim在你的评论中指出它.
| 归档时间: |
|
| 查看次数: |
3016 次 |
| 最近记录: |