使用python创建一个在后台运行的进程

时间:2015-06-24 11:37:00

标签: python process

我想写一个在后台运行的python程序。 我的意思是,就像我们安装Python包一样。之后,我们可以在脚本名称前面使用python运行任何脚本。这意味着某些python进程在后台运行,可以接受输入并执行操作。

对于linux,你可以从任何地方调用grep。这意味着grep也会以某种方式在后台运行。

我想在python中写出类似的东西。当我随时使用名称和参数调用某个函数时,它应该执行预期的操作而不需要关心原始代码。但我无法找到如何实现这一目标。

有人可以帮我吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

澄清:您只需键入名称即可在控制台中运行pythongrep,这并不意味着他们在后台运行。这意味着某个位置存在可执行文件文件,此位置列在环境变量PATH中。

例如,在我的系统上,我可以通过键入python来运行Python。 python可执行文件安装在/usr/local/bin/python,并具有执行权限位。

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

是的,/usr/local/bin中包含PATH

您可以使用python脚本执行相同的操作:

  • 确保您脚本的第一行包含#!/usr/bin/python#!/usr/bin/env python
  • 授予您的脚本执行权限:chmod a+x yourScript
  • 将您的脚本移动到$PATH中包含的某个目录,或者将脚本所在的目录添加到PATHexport PATH=$PATH:/home/you/scripts

答案 1 :(得分:1)

看看

http://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/

您可以通过继承Daemon类并覆盖run方法来推出自己的守护进程

from daemon import Daemon
class run_daemon(Daemon):
    def run(self):
        import sys
        run_daemon.execute_shell_command(sys.argv[1])

    @staticmethod
    def execute_shell_command(ShellCommand):
        import subprocess
        process = subprocess.Popen(ShellCommand, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        process.communicate()