gpt4 book ai didi

python - 在 init.d 脚本中使用 Python 的特殊注意事项?

转载 作者:IT王子 更新时间:2023-10-29 00:14:22 27 4
gpt4 key购买 nike

在通过 init 运行的 'init.d' 脚本中使用 Python 是否有任何特殊注意事项? (即启动 Ubuntu)

根据我在 Ubuntu 上的谷歌搜索/测试所了解的情况,提供给 'init.d' 脚本的环境变量很少,因此使用 "#!/usr/bin/env python" 可能无法正常工作。

还有什么吗?

最佳答案

这只是突出了 init.d 脚本中 python 的最大问题——增加了复杂性。

Python 没有规范,env 甚至不必指向 cpython。如果你升级并且 python 中断,你将不得不咬住你的舌头。而且 python 崩溃的可能性比 sh 大得多(init.d 脚本的安全选择)。原因是,简单实用:

ecarroll@x60s:/etc/init.d$ ldd /usr/bin/python    linux-gate.so.1 =>  (0xb7ff7000)    libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7fc9000)    libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7fc5000)    libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7fc0000)    libz.so.1 => /lib/libz.so.1 (0xb7faa000)    libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7f84000)    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e21000)    /lib/ld-linux.so.2 (0xb7ff8000)ecarroll@x60s:/etc/init.d$ ldd /bin/sh    linux-gate.so.1 =>  (0xb803f000)    libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7ec7000)    /lib/ld-linux.so.2 (0xb8040000)

Python 正在链接到 libpthread、libdl、libutil、libz、libm 以及其他可能会中断的内容。 Python 只是做得更多。

-rwxr-xr-x 1 root root  86K 2008-11-05 01:51 /bin/dash-rwxr-xr-x 1 root root 2.2M 2009-04-18 21:53 /usr/bin/python2.6

你可以在这里阅读更多关于你具体谈论的环境变量的内容: http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.9主要问题是 env 的默认值可以在/etc/profile 中设置,只有当脚本在支持读取它的 shell 下运行时才会运行。

关于python - 在 init.d 脚本中使用 Python 的特殊注意事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1405555/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com