我想写一个在后台运行的python程序。 我的意思是,就像我们安装Python包一样。之后,我们可以在脚本名称前面使用python运行任何脚本。这意味着某些python进程在后台运行,可以接受输入并执行操作。
对于linux,你可以从任何地方调用grep。这意味着grep也会以某种方式在后台运行。
我想在python中写出类似的东西。当我随时使用名称和参数调用某个函数时,它应该执行预期的操作而不需要关心原始代码。但我无法找到如何实现这一目标。
有人可以帮我吗?
提前致谢。
答案 0 :(得分:2)
澄清:您只需键入名称即可在控制台中运行python
或grep
,这并不意味着他们在后台运行。这意味着某个位置存在可执行文件文件,此位置列在环境变量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
中包含的某个目录,或者将脚本所在的目录添加到PATH
:export 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()