记一次rc.local中python脚本无法运行的解决过程
可以直接跳到原因。一句话,简洁明了。
问题记录:
自己写了一个Python脚本,需要在服务器自启时运行。但是在把python解释器全路径和脚本全路径写进去之后,重启服务器,发现没有办法启动脚本。
解决过程:
1. 检查/etc/rc.local的权限
该文件必须具有执行权限。如果没有,执行:
[user@host ~]# chmod +x /etc/rc.local
执行完之后,重启,发现脚本还是无法运行。
2. 看运行出错日志
据说在/etc/rc.local中这样写,可以把运行的记录写入日志中。(默认日志在 /var/log/message 中)
重启ing…,
去查看日志记录。
发现是KeyError: “HOME”.
在Python命令行中输入os.environ:
发现有’HOME’ 手动黑人问号???,这狗东xi…
3. 修改文件不重启啊(用户切换到root了,我再也不用频繁打码le…)
由于每次修改文件之后,要重启,手动…过于麻烦…, 寻找不重启服务器的命令
在csdn上查看众多文章(没用文章)之后,发现了一个令我眼前一亮的命令:
systemctl restart rc-local # 重启rc-local
systemctl status rc-local # 查看重启rc-local的状态
手动执行第一条之后,就没有然后了。ctrl+c,再执行第二条,记录就不贴了(因为看不到TAT!)
但是结果呢,还是不行。
4. 接着查看文章吧
。。。
。。。
。。。
有一篇提到了:在rc.local执行时,/etc/profile并没有执行。康康**/etc/profile**是什么内容呢?
environment进入视线。
猜测(此处无证明):在/etc/rc.local运行时,/etc/profile没有运行。可能会导致与env有关的东西出错。紧急联想。。。
5. 回到2中的记录,KeyError“HOME”。忽然有些明白了…
(明白了啥?)去查看在哪里使用了os.envxxxxxx,发现
修改它吧。怎么改?
图片的文章链接:https://www.jianshu.com/p/a6592aae075d
修改成:
6. 再回到3去试
看状态:
再查看邮件:
也收到了邮件通知。
7. 问题搞定!
原因:
由于/etc/rc.local 先于/etc/profile执行,导致与python中os.envxxxxx相关的操作可能会失败。在使用os相关操作时,需要注意。