mjh*_*jhm 10 linux python init.d
一个问题想出了StackOverflow上询问写init.d
在Python脚本。一条评论指出这些脚本应该在 shell 中编程,而不是在 Python 中。正在init.d
用 Python编写脚本:
知道任何噩梦场景,或者这条规则是否是用某些系统管理员的血写的,那就太好了。
Vat*_*ine 10
我看不出它有什么问题,如果您确信 Python 解释器在 init.d 脚本运行时可用。对我而言,这表明您正在查看在多用户(或“图形控制台”)运行级别中相对较晚完成的某些事情。
但是...这意味着特定版本的 Python 解释器可能对您的启动顺序至关重要,这是您在升级时需要检查的另一件事。
我想这意味着我在说“3. 好的,有警告”。
我会说#2,但非常接近#1——“糟糕。糟糕。糟糕。永远不要这样做。” Linux init 脚本的标准是在 LSB 中,虽然它从来没有出现并说“这些是 bourne shell 脚本”,但做了几个假设。一,以# 开头的那几行是注释,碰巧效果很好。更有问题的是,要求 init 脚本执行/lib/lsb/init-functions
“在当前环境中(请参阅 shell 特殊内置命令点)”中的命令。
但更重要的是,如果你在这里做任何非常复杂的事情,你就做错了。init 脚本应该非常简单和实用。它们应该是经典意义上的脚本,而不是程序。与其用 Python 制作漂亮的东西并制作一些漂亮的东西,不如把它搞定并制作一个任何系统管理员都可以轻松掌握的简单 shell 脚本。
要记住的另一个考虑因素是systemd
,这可能是也可能不是 Linux 上所有系统初始化的未来。在 systemd 下,初始化是通过简单的配置文件而不是脚本完成的,其想法是所有启动都符合几种标准设计模式,实际上您只需要选择一种即可。如果你的程序使用一些复杂的初始化,那应该在 init 脚本本身之外。